Leider ist es nicht so. Ich glaube ich habe oben ziemlich genau beschrieben, was das Problem ist. Ich bekomme die
Exception schon beim Ausführen der
Query, noch bevor ich irgendwelche Daten mittels Fetch hole. Aber sogar das sollte möglich sein, in den von UIB mitgelieferten Demoprogrammen (der einzigen "Dokumentation") ist die Konstruktion
Delphi-Quellcode:
(* Prepare the statement. *)
try
UL.DSQLPrepare(
DB, trans, stmt, sel_str, SQL_DIALECT, sqlda);
except
on E:
Exception do
begin
WriteLn('
Error: ',E.
Message);
ReadLn;
raise;
end;
end;
(* Execute the statement. *)
UL.DSQLExecute(trans, stmt, SQL_DIALECT,
nil);
(*
* Fetch and print the records.
*)
while UL.DSQLFetch(
DB, trans, stmt, 1, sqlda)
do
Writeln(format('
%s %s %s', [sqlda.AsString[0], sqlda.AsString[1], sqlda.AsString[2]]));
d.h. laut diesem UIB-DemoProgramm sollte, wenn keine Daten mehr da sind, einfach fetch den Wert false liefern.
Das ganze passiert nicht in Verbindung mit einer
Query-Komponente, sondern ich verwende nur die Basisunit "UIBLib", das ist eine
Unit, die ein paar Klassen zur direkten Verwendung der Firebird
API zur Verfügung stellt. Das Statusergebnis <> 0, das "schuld" an der Auslösung der
Exception in der UIB
Unit ist, kommt direkt aus der Firebird-
DLL fbclient.dll beim Execute der
Query zurück.
@heiko
Ja, progdigy ist wohl eher der richtige Platz, um die Frage zu stellen. Ich bin jetzt schon so gewohnt, dass hier auf so ziemlich alles eine brauchbare Antwort kommt