Makro: Datenbankabfrage in Feldbefehle schreiben
Verfasst: Sa 27. Apr 2013, 13:50
Nach einigen Versuchen ist es mir zwar gelungen das Ergebnis einer Datenbankabfrage ist die Datenbank-Feldbefehle eines Textdokument zu schreiben.
da aber sehr viele Felder aus der Datenbank in das Textdokument übernommen werden müssen (mehrfach Verwendungen der Feldbefehle muß möglich sein) , dauert das sehr lange (geschachtelte Schleifen).
Früher unter StartOffice5.1(2) war das einfach mit Selection.DataUpdateFields
kennt jemand eine schnellere Lösung?
da aber sehr viele Felder aus der Datenbank in das Textdokument übernommen werden müssen (mehrfach Verwendungen der Feldbefehle muß möglich sein) , dauert das sehr lange (geschachtelte Schleifen).
Früher unter StartOffice5.1(2) war das einfach mit Selection.DataUpdateFields
kennt jemand eine schnellere Lösung?
Code: Alles auswählen
sub Test4
Dim myDataBaseContext as Object
Dim myStatement as Object
Dim ResultSet as Object
Dim oTxt as Object
Dim oFeld as Object
Dim i as integer
Dim s as string
myDataBaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
myStatement = myDataBaseContext.getByName("Adreßbuch").getConnection("","").createStatement()
ResultSet=myStatement.executeQuery("SELECT * FROM Adressen WHERE FIRMA = 'Test1'")
if not IsNull(ResultSet) then
ResultSet.next ' nur den ersten Datensatz verwenden
' while ResultSet.next ' alle gefundene Datensaetze verwenden
for i=1 to ResultSet.Columns.Count
oTxt=thiscomponent.getTextFields().createEnumeration()
while oTxt.hasmoreElements()
oFeld=oTxt.nextElement
if ofeld.supportsService("com.sun.star.text.TextField.Database") then
if ResultSet.Columns.ElementNames(i-1)=ofeld.Textfieldmaster.DataColumnName then
oFeld.Content=ResultSet.getString(i)
endif
endif
wend
next i
' wend ' alle gefundene Datensaetze verwenden
endif
msgbox "Fertig"
end sub