Zitat von
Hansa:
Lese gerade, Du benutzt FIBQuery ? Warum das ?
IMHO ist das eigentlich überflüssig und nur aus irgendwelchen Kompatibilitätsgründen überhupt miit dabei. Würde mich nicht wundern wenn es wegen überflüsigem Code etwas langsamer ist, als FIBDataSet. Zum Rest : kann das auch nicht nachvollziehen. Unter dem Aspekt, dass sogar IBExpert mit FIBPlus programmiert ist : Bug eher unwahrscheinlich. Falls doch Bug würde ich den mal melden !
Doch der Effekt ist reproduzierbar.
An der Stelle jedoch nicht so wichtig könnte sich an anderer Stelle aber auswirken.
Im Modul TpFIBDatabase.GetTableNames(...
Delphi-Quellcode:
if not WithSystem then
Params[0].asString:='and RDB$SYSTEM_FLAG = 0'
Beim erneuten Verwenden der
Query wird Params[0] nicht gelöscht.
Nach Aufruf mit WithSystem = false ist die Einstellung nicht mehr rücksetzbar.
Hier reicht ein else Zweig.
Delphi-Quellcode:
if not WithSystem then
Params[0].asString:='and RDB$SYSTEM_FLAG = 0'
else Params[0].asString:='';
da die
Query hier mit
qry := GetQueryForUse(vInternalTransaction,TablesSQL);
global bereitgestellt wird, weis ich noch nicht, wo sich der Effekt noch auswirken kann.
Query und/oder Dataset ist sicherlich eine interessante Diskussion.
Ich verwende die
Query nur dort, wo ich eine einzelne
SQL Anweisung oder einen einfachen Cursor benötige.
Da in der
Query einiges an Overhead fehlt, meine ich das die Abarbeitung schneller ist.
FIBPLUS geht übrigens intern den gleichen Weg.
Gruß
Peter