Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird 2.0 und RETURNING (https://www.delphipraxis.net/107318-firebird-2-0-und-returning.html)

Roland1967 25. Jan 2008 17:42

Datenbank: Firebird • Version: 2 • Zugriff über: SQL

Firebird 2.0 und RETURNING
 
Ich bin bei Firebird 2 auf die RETURNING-Klausel gestoßen, die die Abfrage des Generator-Wertes eleganter löst.
Doch wie kann ich in Delphi diesen Wert ermitteln? Showmessage zeigt immer 0 an. In der Datenbank stehen die Daten drin.

Hat jemand einen Tipp für mich? Das wäre super.


Zitat:

with DBank.IBC_Anschrift do
begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO anschrift (AUFTRAG, Name_1, Name_2)');
SQL.Add('VALUES (''87777'', ''Schulze'', ''Nummer 2'')');
SQL.Add('RETURNING ID');
ExecSQL;

IntToStr(FieldByName('id').asInteger);
showmessage(inttostr(newid));

mkinzler 25. Jan 2008 17:48

Re: Firebird 2.0 und RETURNING
 
Delphi-Quellcode:
  newid := ParamByName('id').Value;

Roland1967 28. Jan 2008 09:57

Re: Firebird 2.0 und RETURNING
 
Leider hat der Trick nicht funktioniert. :-(
Der Compiler meldet einen Fehler (Parameter ID nicht gefunden).

DeddyH 28. Jan 2008 10:00

Re: Firebird 2.0 und RETURNING
 
Nicht ExecSQL, sondern Open verwenden.

Roland1967 28. Jan 2008 10:11

Re: Firebird 2.0 und RETURNING
 
Wie man sich doch stundenlang mit solchen Problemen beschäftigen kann... :roll:

Ich habe es hinbekommen. Es lag an den verwendeten Komponenten von crLabs (IBDAC).
Man muß beim Rückgabewert ein RET vor den Feldnamen setzen, statt ID also RET_ID.

Delphi-Quellcode:
 
with DBank.IBC_Anschrift do
begin
  Close;
  SQL.Clear;
  SQL.Add('INSERT INTO anschrift (AUFTRAG, Name_1, Name_2)');
  SQL.Add('VALUES (''87777'', ''Schulze'', ''Nummer 2'')');
  SQL.Add('RETURNING ID');

  ExecSQL;
  NewID:= DBank.IBC_Anschrift.ParamByName('RET_ID').Value;

  ShowMessage(IntToStr(NewID);
end;
@DeddyH Das Open funktioniert aber nicht.

Trotzdem vielen Dank für die Anregungen. :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz