🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
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) 283-mal heruntergeladen
Test.odt
Demo Writerdatei
(10.38 KiB) 327-mal heruntergeladen

F3K Total
* LO-Experte *
Beiträge: 2515
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:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten