Seite 1 von 1

Klassvar 100x langsamer wie LOCAL?

Verfasst: Mo, 13. Jul 2015 19:19
von satmax
Folgendes ist mir völlig unerklärlich:

Hier dauert das Execute ca. 10 Sekunden

Code: Alles auswählen

::oCursor:SQLString := "SELECT top 1  " + AuftragFelder;
              " FROM Auftrag WHERE typAuftrag BETWEEN (?) AND (?) "+;
              " ORDER BY _ID DESC"
DebugPrint("Switch Filter 7", ::NavigateTypAuftragTo)
 	nTreffer:= ::oCursor:Execute({0, 99})           // DAUER 10 ca. Sekunden
DebugPrint("Switch Filter 8", ::NavigateTypAuftragTo)

Hier dauert die gleiche Abfrage nicht mal 0,1 Sekunden, inkl. cFelder:= ::AuftragFelder :

Code: Alles auswählen

Local cFelder
...
cFelder:=::AuftragFelder
 	::oCursor:SQLString := "SELECT top 1  " + cFelder + ;
              " FROM Auftrag WHERE typAuftrag BETWEEN (?) AND (?) "+;
              " ORDER BY _ID DESC"
DebugPrint("Switch Filter 7", ::NavigateTypAuftragTo)
 	nTreffer:= ::oCursor:Execute({0, 99})      // Dauer nicht messbar < 0,1 
DebugPrint("Switch Filter 8", ::NavigateTypAuftragTo)

Re: Klassvar 100x langsamer wie LOCAL?

Verfasst: Mo, 13. Jul 2015 19:39
von satmax
Ändere ich die Classen-Methode in eine Funktion (aus :: wird oDlg, oDlg wird der Funktion übergeben), funktioniert das ebenfalls einwandfrei:

Code: Alles auswählen

oDlg:oCursor:SQLString := "SELECT top 1  " + oDlg:AuftragFelder + ;
              " FROM Auftrag WHERE typAuftrag BETWEEN (?) AND (?) "+;
              " ORDER BY _ID DESC"
DebugPrint("Switch Filter 7-", oDlg:NavigateTypAuftragTo)
 	nTreffer:= oDlg:oCursor:Execute({0, 99})
DebugPrint("Switch Filter 8-", oDlg:NavigateTypAuftragTo)