Rückgabewert einer SQL-Anweisung
-
Hallo,
ich habe eine Firebird 1.5-Datenbank, in der ein Generator zum Hochzählen eines Primärschlüssels integriert ist. Zugriff über dbGo/ADO und ODBC.
Diese Generator starte ich mit dem SQL-Befehl:
SELECT GEN_ID( GEN_ID1, 1 ) FROM RDB$DATABASE;
entweder mit einem TADOCommand oder TADOQuery.
Das Hochzählen funktioniert, aber wie erhalte ich den Rückgabewert des SQL-Befehls, also den Zählerwert ?
Es sollte eigentlich über das Element "Parameters" gehen, die es bei TADOCommand oder TADOQuery gibt, aber ich bringe es nicht fertig, dort ein Ergebnis zu bekommen.
Kann mir jemend helfen ?
Vielen Dank !
Frank
-
Schau' Dir mal diesen Codeschnipsel an. Das ist TSQLQuery, sollte aber auch für TADOQuery gehen. Er übergibt einfach den ersten Wert in der ersten Zeile als Variant ohne Berücksichtigung von DBNull. Ich würde Dir empfehlen, dieses in einer RAII-Klasse zu kapseln, die im Konstruktor vllt den SQL-String und die Verbindung bekommt und in einem geeigneten Konvertierungsoperator den Wert übergibt.
TSQLQuery *q = NULL; Variant v; q = new TSQLQuery(NULL); //Query senden q->SQL->Add(theSQL); q->SQLConnection = DataGate->conPGExpress; q->Open(); //keine Zeile gefunden if (q->Eof) v = ""; //Feld lesen else v = q->Fields->Fields[0]->AsVariant; q->Close(); delete q;
-
Danke, so funktioniert es !
Tschüß,
Frank