Ich habe es nun folgendermaßen gelöst:
Code: Alles auswählen
sub ListBox_fuellen
' Datenbankverbindung
' Kontext holen
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
' Datenquelle auswählen
' Name der registrierten Datenquelle
oDatenquelle = oDatenbankKontext.getByName( "db_test3" )
'
oDatenquelle.setLoginTimeout( 10 )
' Verbindung zur DB herstellen
'
If Not oDatenquelle.IsPasswordRequired Then
oVerbindung = oDatenquelle.getConnection("","")
Else
oInteractionHandler = createUnoService( "com.sun.star.sdb.InteractionHandler" )
oVerbindung = oDatenquelle.connectWithCompletion( oInteractionHandler )
End If
' Verbindung nicht geklappt
If IsNull( oVerbindung ) Then
msgbox "keine Verbindung zur DB (user/passwort falsch?)"
exit sub
End If
' Abfrage
sSQL = "SELECT s_lname from staff order by s_lname;"
' Statement erzeugen
oStatement = oVerbindung.createStatement
' Abfrage absetzen
oResultSet = oStatement.executeQuery( sSQL )
' Ergebnis
While oResultSet.Next()
'msgbox oResultSet.getString(1)
s = oResultSet.getString(1) '1. Spalte in Tabelle
Dim oListBox as Object, aListe(), oForm as Object
oForm = thisComponent.sheets(0).Drawpage.Forms(0)
oListBox = oForm.getByName("ListBox")
aListe = oListBox.StringItemList
n = UBound(aListe())
redim preserve aListe(n + 1)
aListe (n+1) = s
oListBox.StringItemList = aListe
end sub
in der while Schleife speicher ich alle Ergebnisse der Abfrage in die Listbox, wobei ich immer den bereits drin stehenden String
auslese und den neu dazu gekommenen anhänge.
Ich hab sonst keine Möglichkeit gefunden, nicht nur einen String des Ergebnisses der Abfrage rein zu speichern in die Listbox, sondern alle.
Allerdings habe ich bei dieser Lösung folgendes Problem:
Ich habe eine leere Listbox und klick auf den Button um das Makro auszuführen, er speichert mir wunderbar das Ergebnis in die Listbox. Ändert
sich aber nun in der Datenbank etwas, so muss ich das Makro mit dem Select Befehl erneut ausführen um den Inhalt der Listbox aktuell zu halten bzw neu zu
befüllen.
Da ich jedesmal vorm reinspeichern den Inhalt der Listbox auslese, und zusätzlich den neuen rein speicher, hab ich nun doppelte Ergebnisse drinnen stehen.
Ich hoffe mein Problem ist nachvollziehbar

Kann mir da jemand helfen oder eine bessere Lösung sagen, um alle Strings des Ergebnisses der Abfrage
in die Listbox zu speichern?
lg