von F3K Total » So, 23.08.2020 12:48
Hallo,
ja, es ist möglich, aber nur mit Makros.
Tausend Wege führen nach Rom.
Ich würde das folgendermaßen machen:
- In der Datenbank gibt es sicherlich eine Tabelle/Abfrage/Ansicht, in der die zu exportierenden Datensätze stehen. Diese würde ich per Makro auslesen und in ein Resultset schreiben. Je nachdem von wo du den Export starten willst, kannst du entweder einen Formularinhalt auslesen, oder per Makro direkt auf die Datenbank zugreifen, hier im Forum, oder im Base-Handbuch gibt es viele Beispiele dazu.
- Nun würde ich in dieses Makro eine Schleife einbauen, die das Resultset durchläuft und in jedem Umlauf die ID eines einzelnen Datensatzes ermittelt.
- Die aktuelle ID würde ich innerhalb der Schleife in eine einzeilige Filtertabelle der Datenbank schreiben. Auf Basis dieser Filtertabelle gibt es eine weitere Abfrage/Ansicht in der DB, die die Grundlage des Berichtes bildet, die eben immer nur einen, gerade zu exportierenden Datensatz beinhaltet.
- Wenn man den Bericht nun innerhalb der Schleife per Makro öffnet und die entstandene Datei unter einem datensatzspezifischem Namen speichert, z.B. als .pdf, kann man sie auch einzeln per Mail verschicken.
Um den Bericht "Ausgabe" zu öffnen geht z.B. folgender Code:
Code: Alles auswählen
oreportdoc = thisdatabasedocument.reportdocuments.getbyname("Ausgabe")
oreport = oreportdoc.open
Um diesen Bericht per Makro als .pdf zu speichern und anschließend zu schließen geht:
Code: Alles auswählen
sURL = "file:///C:/Users/<USER>/Desktop/20200823_Export_ID_425.pdf"
dim pdfProperties(1) as new com.sun.star.beans.PropertyValue
pdfProperties(0).Name = "FilterName"
pdfProperties(0).Value = "writer_pdf_Export"
oreport.storeToURL(sURL, pdfProperties())
oreport.close -1
Ist alles viel Arbeit, wenn es fertig ist, funktioniert es zuverlässig, habe ich schon gemacht.
Gruß R
Hallo,
ja, es ist möglich, aber nur mit Makros.
Tausend Wege führen nach Rom.
Ich würde das folgendermaßen machen:
[list][*]In der Datenbank gibt es sicherlich eine Tabelle/Abfrage/Ansicht, in der die zu exportierenden Datensätze stehen. Diese würde ich per Makro auslesen und in ein Resultset schreiben. Je nachdem von wo du den Export starten willst, kannst du entweder einen Formularinhalt auslesen, oder per Makro direkt auf die Datenbank zugreifen, hier im Forum, oder im [url=https://de.libreoffice.org/get-help/documentation/]Base-Handbuch[/url] gibt es viele Beispiele dazu.
[*]Nun würde ich in dieses Makro eine Schleife einbauen, die das Resultset durchläuft und in jedem Umlauf die ID eines einzelnen Datensatzes ermittelt.
[*]Die aktuelle ID würde ich innerhalb der Schleife in eine einzeilige Filtertabelle der Datenbank schreiben. Auf Basis dieser Filtertabelle gibt es eine weitere Abfrage/Ansicht in der DB, die die Grundlage des Berichtes bildet, die eben immer nur einen, gerade zu exportierenden Datensatz beinhaltet.
[*]Wenn man den Bericht nun innerhalb der Schleife per Makro öffnet und die entstandene Datei unter einem datensatzspezifischem Namen speichert, z.B. als .pdf, kann man sie auch einzeln per Mail verschicken.[/list]
Um den Bericht "Ausgabe" zu öffnen geht z.B. folgender Code:
[code] oreportdoc = thisdatabasedocument.reportdocuments.getbyname("Ausgabe")
oreport = oreportdoc.open[/code]
Um diesen Bericht per Makro als .pdf zu speichern und anschließend zu schließen geht:
[code] sURL = "file:///C:/Users/<USER>/Desktop/20200823_Export_ID_425.pdf"
dim pdfProperties(1) as new com.sun.star.beans.PropertyValue
pdfProperties(0).Name = "FilterName"
pdfProperties(0).Value = "writer_pdf_Export"
oreport.storeToURL(sURL, pdfProperties())
oreport.close -1[/code]
Ist alles viel Arbeit, wenn es fertig ist, funktioniert es zuverlässig, habe ich schon gemacht.
Gruß R