Einzelnen Beitrag anzeigen

Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Feldname konnte nicht erkannt werden

  Alt 29. Jun 2010, 13:58
Datenbank: Firebird • Version: 2.1 • Zugriff über: DBX
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
Jens
  Mit Zitat antworten Zitat