🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro: Datenbankabfrage in Feldbefehle schreiben

Alles zur Programmierung im LibreOffice.
Antworten
m99999
Beiträge: 1
Registriert: Fr 26. Apr 2013, 22:40

Makro: Datenbankabfrage in Feldbefehle schreiben

Beitrag von m99999 » 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?

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
Dateianhänge
Adressen.ods
Demo Adressdatei (aus einer DBASE Datei erstellt)
(9.77 KiB) 223-mal heruntergeladen
Test.odt
Demo Writerdatei
(10.38 KiB) 281-mal heruntergeladen

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Makro: Datenbankabfrage in Feldbefehle schreiben

Beitrag von F3K Total » Sa 27. Apr 2013, 16:43

Crossposting ohne Referenz ist unhöflich!
R
Windows 11: AOO, LO Linux Mint: AOO, LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten