![]() |
Datenbank: Firebird • Version: 2.01 • Zugriff über: IBDAC
auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Hallo,
ich habe hier ein merkwürdiges Problem.
Delphi-Quellcode:
Und das klappt !!!
var
Q: TQuery; ID: Integer; begin ... Q.SQL.Text:= 'SELECT Gen_ID(G_Generator_ID,1) FROM RDB$Database '; Q.ExecSQL; ID := Q.Fields[0].AsInteger; Das müsste doch Open statt ExecSQL sein. Ist das irgendein Cache? |
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Die Query wird vermutlich immer versuchen ein Resultset anzufordern, auch bei ExecSQL.
|
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Hallo,
naja, das ist "doof". Warum will ich z.B. bei einem Update ein Result-Set? Nun ja, ich bin bloß bei einem Code-Review drüber gestolpert. Vielleicht wird ja im IBDAC nach GEN_ID gescannt, das kann ich mir aber nicht vorstellen. |
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Eigentlich wäre ich auch davon ausgegangen, dass beim ExecSQL/Execute kein ResultSet runtergeladen wird,
also nur "Ausführen" und fertig, im Gegensatz zum Open bzw. Active=True. :gruebel: Dachte beim PgQuery zum PgScript wäre der einzige Unterschied, dass PgScript vorher den SQL.Text an den ; aufteilt und dann mehrere Queries einzeln ausführt, aber dass ansonsten Beides beim Execute/ExecSql gleich arbeitet, also nie das ResultSet runterlädt. Beim Open/Active wird zumindestens immer ein ResultSet verlangt, sonst knallt es dort. PgQuery hat hier sogar einen Bug, dass es dann, wenn das SELECT mit Spalten ohne "Wert", das Query doppelt ausführt ... so dauert
Delphi-Quellcode:
beim Open/Active plötzlich 10 Sekunden. :stupid:
SELECT pg_sleep(5)
Schön auch beim Ausführen von Funktionen, wenn die drinnen dann alles doppelt machen ... hochzählen, insert usw., was dann knallt |
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Hallo,
ja, das dachte ich auch. Aber ist nicht so, zumindestens in meiner IBDAC-Version. |
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Ich habe dunkel in Erinnerung, dass es mit SP zu tun haben könnte.
Die haben u.U. Out Parameter. Und da ist vielleicht irgendso eine komische Mechanik drin, die das dann in ein Resultset tütet. Vielleicht betrifft das auch so "stink normale" Daten wir "Rows Affected" beim Update. Hab ich aber vielleicht auch nur geträumt. |
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Hallo,
Zitat:
Dann holt der liebe Holger ;) bestimmt auch vom FB irgendwie selber. |
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Steht zumindest in der IBDAC Doku
![]() |
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Hallo,
hm Thomas der Link geht zu Execute und nicht ExecSQL. Aber könnte die Lösung sein. |
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Ja, sorry. Vergessen zu erwähnen: ExecSQL macht das selbe wie Execute.
|
AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden
OMG, da steht das och.
![]() :shock: Dann könnte ich ja in unserer Testform den zweiten Button wegmachen. k.A. warum dann der pgAdmin des DB-Herstellers zwei Buttons hat. :cyclops: [edit] Es scheint aber wohl mehr ein Devart-Ding zu sein und ist nicht allgemeingültig unter den DACs (DataAccessComponents). ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:26 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