Entwickler-Ecke

Datenbanken - Column von SQL Query nicht gefunden obwohl vorhanden...


g1o2k4 - Mo 29.12.08 00:35
Titel: Column von SQL Query nicht gefunden obwohl vorhanden...
hi

erstmal der code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IBDatabase, DB, IBCustomDataSet, IBQuery, StdCtrls, IBTable, Grids,
  DBGrids, IBSQL;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBDataSet1: TIBDataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    IBSQL1: TIBSQL;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  IBDatabase1.Open;
  IBTransaction1.StartTransaction;
  IBDataSet1.Open;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  with IBSQL1 do
  begin
    IBSQL1.SQL.Text :=
      'insert into ADRESSE (VORNAME, NAME, ADRESSE, TELEFON) values ('
      + Edit1.Text + ', ' + Edit2.Text + ', ' + Edit3.Text + ', ' + Edit4.Text +
        ')';
    IBSQL1.ExecQuery;
    IBSQL1.SQL.Clear;
    IBSQL1.SQL.Add('commit retain;');
    IBSQL1.ExecQuery;
  end;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  IBTransaction1.Commit;
  IBDatabase1.Close;
end;

end.


ich bekomme den error, dass die column "VORNAME" nicht bekannt ist, obwohl sie exisitert. das gleiche, wenn ich versuche jeden spaltennamen einzeln einzufügen. also:'insert into ADRESSE (NAME) values ('+ Edit2.Text + ')');
usw...

im anhang ist nochmal der fehler und die db struktur. bei button1click wird korrekt zur datenbank verbunden und diese auch korrekt ausgelesen (in ein dbgrid). also muss es wohl an der query liegen. die query ist auch zur IBDatabase und ihrer IBTransaction verknüpft.

jemand ne idee was ich falsch mache ?



edit: hat sich erledigt. das problem war, dass der string in editX.Text mit 'string' begrenzt sein musste...auch wenn nicht nicht verstehe wieso er deswegen eine column als unbekannt angibt!? da war der error irgendwie am falschen platz.


alzaimar - Mo 29.12.08 09:03

Verwende parametrisierte Queries, dann passiert sowas nicht. Schau einfach in die OH oder hier im Forum, was das ist und wie man damit arbeitet.


mkinzler - Mo 29.12.08 13:02

Er hat den Wert als Spaltennamen interpretiert. Es existiert natürlich keine Spalte unter dem Namen. Deshalb der Fehler.