![]() |
Datenbank: Firebird • Version: 2,5 • Zugriff über: IBDAC
Returning Wert in IBDAC Komponente
Hallo,
wenn ich in einer InsertQuery einen Wert zurückgebe:
Code:
und das über die IBDAC Komponenten TIBCQuery (InsertSQL) an die Datenbank übertrage. Wie komme ich dann über diese Komponente an wert3 (also den returning value)?
INSERT into MyTAble
(feld1, feld2) VALUES (wert1, wert2) RETURNING wert3 Habe es über die Parameterliste versucht:
Code:
aber RETURNING INTO mag Firebird nicht. Es wäre deshalb interessant zu wissen, was ist an dem RETURNING INTO Statement falsch und welcher andere Weg gibt mit wert3 zurück?
INSERT into MyTAble
(feld1, feld2) VALUES (wert1, wert2) RETURNING wert3 INTO :w3 |
AW: Returning Wert in IBDAC Komponente
Sollte eigentlich gehen.
Ohne das into heisst der Parameter RET_<FELD> als hier RET_Wert3 oder du greifst per Index zu |
AW: Returning Wert in IBDAC Komponente
Auch wenn ich dasSQL Statement direkt in IBExpert eingebe, mag er die Rückgabe in einen Parameter nicht.
Die Abfrage von ParamByName('RET_ERFASS_NR') (der Wert3 heißt ERFASS_NR), meldet, dass es einen solchen Parameter nicht gibt. Die Anzahl der Parameter erhöht sich übrigens nach dem RETURNING nicht. |
AW: Returning Wert in IBDAC Komponente
Ein Returnparamter ist ja eigentlich kein Parameter, sondern es wird von der Zugriffsbibliothek nur so behandelt.
Ist ParamCheck und Options.ReturnParams gesetzt? |
AW: Returning Wert in IBDAC Komponente
Verwendest du Query.Open ? Bei anderen Komponenten funktionieren Konstruktionen wie
xyz := Query1.FieldByName('wert3').AsInteger; Vielleicht funktioniert das auch bei IBDAC. knight |
AW: Returning Wert in IBDAC Komponente
Liste der Anhänge anzeigen (Anzahl: 4)
Ich habe es mal testweise nachgestellt ( UniDAC: verwendet ja den selber Code wie IBDAC). Bei mir funktioniert es ohne das into (Gibt es wohl nur in PL/SQL)
|
AW: Returning Wert in IBDAC Komponente
Hallo MrSpock...
Einfach mal ein Beispiel an dem du das alles siehst...:P
Delphi-Quellcode:
...sorry für die doppelte Lösung. Zu spät. :?
procedure TdAV_Database_FB.Save(Employee: TdAV_PlantEmployee);
var Query: TIBCQuery; begin Query:= CreateInterfacedQuery; case Employee.State of dsNew: begin Query.SQL.Text:= 'insert into T_PLANT_EMPLOYEES (F_PLANT_ID,F_EMPLOYEE_NUMBER, F_FIRST_NAME, F_NAME,F_CERTIFICATION) values '; Query.SQL.Add('(:PID,:EMN,:FNA,:LNA,:CER) returning ID'); Query.ParamByName('PID').AsInteger:= Employee.PlantID; Query.ParamByName('FNA').AsString:= Employee.FirstName; Query.ParamByName('LNA').AsString:= Employee.Name; Query.ParamByName('EMN').AsString:= Employee.PersonalNumber; Query.ParamByName('CER').AsString:= Employee.Certification; Query.ExecSQL; Employee.ID:= Query.ParamByName('RET_ID').AsInteger; end; dsModified: begin Query.SQL.Text:= 'update T_PLANT_EMPLOYEES set F_EMPLOYEE_NUMBER = :EMN,F_FIRST_NAME = :FNA,F_NAME = :LNA, F_CERTIFICATION= :CER where ID = :ID'; Query.ParamByName('ID').AsInteger:= Employee.ID; Query.ParamByName('FNA').AsString:= Employee.FirstName; Query.ParamByName('LNA').AsString:= Employee.Name; Query.ParamByName('EMN').AsString:= Employee.PersonalNumber; Query.ParamByName('CER').AsString:= Employee.Certification; Query.ExecSQL; end; dsDeleted: begin Query.SQL.Text:= 'delete from T_PLANT_EMPLOYEES where ID = :ID'; Query.ParamByName('ID').AsInteger:= Employee.ID; Query.ExecSQL; end; end; end; |
AW: Returning Wert in IBDAC Komponente
Zitat:
Zitat:
Zitat:
|
AW: Returning Wert in IBDAC Komponente
Zitat:
![]() Zitat:
|
AW: Returning Wert in IBDAC Komponente
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Es sollte aber alles mit den Grundeinstellungen nach dem Erzeugen funktionieren...:gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz