Hallo,
ich habe ein Problem mit Firebird, Delphi 2010, Zugriff über DBExpress.
Ich erstelle eine Connection:
Delphi-Quellcode:
F_con := TSQLConnection.Create(self);
F_con.DriverName := '
Firebird';
F_con.GetDriverFunc := '
getSQLDriverINTERBASE';
F_con.LibraryName := '
dbxfb.dll';
F_con.VendorLib := '
fbclient.dll';
F_con.Params.Add('
database=localhost:' + ExtractFileDir(Application.ExeName) + '
\test.fdb');
F_con.Params.Add('
user_name=sysdba');
F_con.Params.Add('
password=masterkey');
F_con.VendorLib := '
fbclient.dll';
F_con.Open;
Dann möchte ich eine parmetrisierte Abfrage machen:
Delphi-Quellcode:
var q : TSQLQuery;
begin
q := TSQLQuery.Create(self);
try
q.SQLConnection := F_con;
q.CommandText := 'SELECT * FROM NEW_TABLE WHERE ID = :ID';
q.PrepareStatement;
q.ParamByName('ID').AsInteger := 1;
q.Prepared := True;
q.Open;
if not q.Eof then
showmessage(q.FieldByName('NAME').AsString);
q.Close;
finally
q.Free;
end;
end;
in der Zeile
q.prepared := True
kommt es dann zu der Meldung
Zitat:
"Die Feldnamen für %s konnten nicht erkannt werden."
Wenn ich nicht mit parametresierten Abfragen arbeite, dann klappt es wunderbar. Die Connection wird korrekt aufgebaut und ist offen. Wie gesagt, zu der Meldung kommt es nur, wenn ich Parameter verwende. Lasse ich das q.Prepared := True weg, dann kommt es zur selben Meldung, allerdings dann beim q.open.
Wir haben bisher mit Delphi 2006, Firebird 2.0 und DBExpress gearbeitet, allerdings mit dem INterbasetreiber. Das hat problemlos funktioniert.
Kann mir jemand helfen? Ich bin momentan etwas ratlos....
Danke!
Jens