Mit Sicherheit wurde der Kern des Thema hier bereits diskutiert, 2 Threads dazu habe ich nachgelesen, aber vielleicht gibt es Neuigkeiten...
Ich führe bei einer in LO angemeldeten DB eine ganz normale Abfrage durch, z.B.:
Code: Alles auswählen
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = oBaseContext.getByName(DB_name)
oCon_3 = oDataSource.getConnection(sUser, sPassword)
sql_string = "Select * FROM ""Person"" ORDER BY ""Nachname"" ASC"
oStatement = oCon_3.createStatement()
oStatement.ResultSetType = 1005
oAbfrageergebnis = oStatement.executeQuery(sql_string)
Code: Alles auswählen
'...
Do While oAbfrageergebnis.Next
Redim listeninhalt(16)
listeninhalt(0) = oAbfrageergebnis.getString(1)
listeninhalt(1) = oAbfrageergebnis.getString(2)
listeninhalt(2) = oAbfrageergebnis.getString(3)
listeninhalt(3) = oAbfrageergebnis.getString(4)
listeninhalt(4) = oAbfrageergebnis.getString(5)
listeninhalt(5) = oAbfrageergebnis.getString(6)
listeninhalt(6) = oAbfrageergebnis.getString(7)
listeninhalt(7) = oAbfrageergebnis.getString(8)
listeninhalt(8) = oAbfrageergebnis.getString(9)
listeninhalt(9) = oAbfrageergebnis.getString(10)
listeninhalt(10) = oAbfrageergebnis.getString(11)
listeninhalt(11) = oAbfrageergebnis.getString(12)
listeninhalt(12) = oAbfrageergebnis.getString(13)
listeninhalt(13) = oAbfrageergebnis.getString(14)
listeninhalt(14) = oAbfrageergebnis.getString(15)
listeninhalt(15) = FORMAT(oAbfrageergebnis.getString(16),"DD.MM.YYYY")
listeninhalt(16) = oAbfrageergebnis.getString(17)
gesamtarr(jj-jjj) = listeninhalt()
jj = jj + 1
Loop
'oder verkürzt (von dem einen FORMAT() abgesehen:
Do While oAbfrageergebnis.Next
Redim listeninhalt(16)
For i = 0 To 16
listeninhalt(i) = oAbfrageergebnis.getString(i+1)
Next i
'...
Loop
Gibt es eine Alternative, die schneller ist? Ich fürchte nein, aber vielleicht übersehe ich doch etwas.
Wozu soll das dienen:
Das Array gesamtarr() lässt sich direkt in ein Grid (com.sun.star.awt.grid.UnoControlGrid) schreiben, z.B.:
Code: Alles auswählen
dia_datenbrowser.getControl("MyGrid_6").Model.GridDataModel.addRows(zeilennamen(), gesamtarr())
Gruß
Stephan