Autor Beitrag
g1o2k4
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: Mo 29.12.08 00:35 
hi

erstmal der code:
ausblenden volle Höhe 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.
Einloggen, um Attachments anzusehen!
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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.

_________________
Na denn, dann. Bis dann, denn.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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.

_________________
Markus Kinzler.