Ich arbeite mit einer Firebird Datenbank, die mittlerweile etwas größer geworden ist. Weil da häufig Neuberechnungen anstehen, die dann relativ viele Datensätze betreffen, wird die Berechnungszeit mittlerweile recht hoch - obwohl das Ding auf einem Gamer-PC mit SSD Laufwerk läuft, rechnet der ab und zu mal ne viertel bis halbe Stunde.... Könnt ihr mir mal nen Tip geben, welche Aktionen im Code unten zeitkritisch sind?
Code
whileloop i%
Y$ = GetText$(hTabelle&,&Loop-1,0)
clearlist hGrid&
X$ = "SELECT MKey, MTyp, MDatum, MText, MWert1, MWert2, MPreis, MPrim From MAT WHERE MPrim = '" + Y$ + "'"
i% = @db("fbSQLExec", ep&, X$, hGrid&)
Text$= GetText$(hGrid&,0,3) '
SetText DText&[8], str$(x%+1) + " Strings zu bearbeiten, bearbeite: "+Text$
Key$ = GetText$(hGrid&,0,0)
faktor! = val(GetText$(hGrid&,0,4))
summe! = faktor! * ep!
X$ = "UPDATE MAT SET MPreis='"+str$(summe!)+ "' ,MDatum = '"+ Date$(0) + "' WHERE MPrim = '" + Y$ + "'"
db("fbSQLExec", ep&, X$,1)
X$ = "SELECT SUM(MPreis) FROM MAT WHERE MTyp = 'B' AND MKey = '"+ Key$ +"'"
@db("fbSQLExec", ep&, X$,hGrid&)
summe! = val(@GetText$(hGrid&,0,0))
faktor! = 0
X$ = "SELECT MWert1 FROM MAT WHERE MTyp = 'O' AND MKey = '"+ Key$+"'"
@db("fbSQLExec", ep&, X$,hGrid&)
faktor! = val(@GetText$(hGrid&,0,0))
if faktor! > 0
summe! = summe! / faktor!
endif
X$ = "UPDATE MAT SET MPreis='"+str$(summe!)+ "' ,MDatum = '"+ Date$(0) + "' WHERE MTyp = 'O' AND MKey = '"+ Key$+"'"
db("fbSQLExec", ep&, X$,1)
AddString Key$
endwhile
Alles anzeigen