von smguenther » Mi, 10.10.2007 08:33
Hallo,
ich setze mit dem folgenden Code die Ergebnisse einer SQL-Abrage in einem String zusammem um mir das Ergebnis am Ende in einem Dialog ausgeben zu lassen:
Code: Alles auswählen
ResultSet=Statement.executeQuery(sSQL)
DialogLibraries.LoadLibrary("Standard")
Dlg=CreateUnoDialog(DialogLibraries.Standard.Dialog2)
ps = Dlg.PosSize
Dlg.setPosSize(ps.x,ps.y,"1380","900",com.sun.star.awt.PosSize.POSSIZE)
Dlg.Model.Title="Ergebnisse"
MyControl=Dlg.GetControl("ListBox1")
msgbox "Zwei"
i=0
' Wenn ResultSet Daten enthält, werden die einzelnen Wert ermittelt
if not isNull(ResultSet) then
while resultset.next
'Zuweisen der einzelnen Felder zu Ergebnisstrings
Werkstoff = ResultSet.getstring(2)
Werkstueck = ResultSet.getstring(3)
Anwendungsart = ResultSet.getstring(4)
GewErgebnis = ResultSet.getstring(5)
Maschine = ResultSet.getstring(6)
Branche = ResultSet.getstring(7)
Qualitaet = ResultSet.getstring(8)
Abmessung = ResultSet.getstring(9)
SANR = ResultSet.getstring(10)
Einsatzparameter = ResultSet.getstring(11)
SpezProduktanfor = ResultSet.getstring(12)
Wettbewerb = ResultSet.getstring(13)
Kommentare = ResultSet.getstring(14)
' Zusammensetzen der einzelnen Felder zu einem Ergebnisstring
Teilergebnis = Werkstoff & " == " & Werkstueck & " == " & Anwendungsart & " == " & GewErgebnis & " == "
Teilergebnis = Teilergebnis & Maschine & " == " & Branche & " == " & Qualitaet & " == "
Teilergebnis = Teilergebnis & Abmessung & " == " & SANR & " == " & Einsatzparameter & " == "
Teilergebnis = Teilergebnis & SpezProduktanfor & " == " & Wettbewerb & " == " & Kommentare
' Für jedes Ergebnis wird der Zähler um 1 erhöht
i = i + 1
MyControl.addItem(Teilergebnis,i)
wend
Dlg.Execute()
msgbox "Drei"
Zwischen dem Erscheinen der Messagebox "Zwei" und der Messagebox "Drei" vergeht mehr als eine Minute, wobei ich im schlimmsten Fall 1500 Datensätzen mit 16 Feldern zusammenfügen. Kann ich meinen Code noch optimieren oder ist dies schon das Optimum, was sich bei einer 2 GHz CPU und 512 MB RAM realisieren läßt?
Danke für jeden Hinweis & Tipp,
Stefan
Hallo,
ich setze mit dem folgenden Code die Ergebnisse einer SQL-Abrage in einem String zusammem um mir das Ergebnis am Ende in einem Dialog ausgeben zu lassen:
[code]
ResultSet=Statement.executeQuery(sSQL)
DialogLibraries.LoadLibrary("Standard")
Dlg=CreateUnoDialog(DialogLibraries.Standard.Dialog2)
ps = Dlg.PosSize
Dlg.setPosSize(ps.x,ps.y,"1380","900",com.sun.star.awt.PosSize.POSSIZE)
Dlg.Model.Title="Ergebnisse"
MyControl=Dlg.GetControl("ListBox1")
msgbox "Zwei"
i=0
' Wenn ResultSet Daten enthält, werden die einzelnen Wert ermittelt
if not isNull(ResultSet) then
while resultset.next
'Zuweisen der einzelnen Felder zu Ergebnisstrings
Werkstoff = ResultSet.getstring(2)
Werkstueck = ResultSet.getstring(3)
Anwendungsart = ResultSet.getstring(4)
GewErgebnis = ResultSet.getstring(5)
Maschine = ResultSet.getstring(6)
Branche = ResultSet.getstring(7)
Qualitaet = ResultSet.getstring(8)
Abmessung = ResultSet.getstring(9)
SANR = ResultSet.getstring(10)
Einsatzparameter = ResultSet.getstring(11)
SpezProduktanfor = ResultSet.getstring(12)
Wettbewerb = ResultSet.getstring(13)
Kommentare = ResultSet.getstring(14)
' Zusammensetzen der einzelnen Felder zu einem Ergebnisstring
Teilergebnis = Werkstoff & " == " & Werkstueck & " == " & Anwendungsart & " == " & GewErgebnis & " == "
Teilergebnis = Teilergebnis & Maschine & " == " & Branche & " == " & Qualitaet & " == "
Teilergebnis = Teilergebnis & Abmessung & " == " & SANR & " == " & Einsatzparameter & " == "
Teilergebnis = Teilergebnis & SpezProduktanfor & " == " & Wettbewerb & " == " & Kommentare
' Für jedes Ergebnis wird der Zähler um 1 erhöht
i = i + 1
MyControl.addItem(Teilergebnis,i)
wend
Dlg.Execute()
msgbox "Drei"
[/code]
Zwischen dem Erscheinen der Messagebox "Zwei" und der Messagebox "Drei" vergeht mehr als eine Minute, wobei ich im schlimmsten Fall 1500 Datensätzen mit 16 Feldern zusammenfügen. Kann ich meinen Code noch optimieren oder ist dies schon das Optimum, was sich bei einer 2 GHz CPU und 512 MB RAM realisieren läßt?
Danke für jeden Hinweis & Tipp,
Stefan