[Gelöst] Berichte direkt als PDF öffnen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Senekurios
**
Beiträge: 26
Registriert: So, 13.03.2016 20:22

[Gelöst] Berichte direkt als PDF öffnen

Beitrag von Senekurios »

Hallo,

gibt es eine Möglichkeit, die Berichte direkt als PDF zu öffnen? Ich habe bisher leider nichts passendes in den Foren finden können.

Gruß
Marko
Zuletzt geändert von Senekurios am Do, 05.05.2016 11:12, insgesamt 1-mal geändert.
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Berichte direkt als PDF öffnen

Beitrag von RobertG »

Hallo Marko,

schau Dir einmal im Handbuch im Kapitel "Makros" > "Datenbankaufgaben mit Makros erweitert" > "Drucken aus Base heraus" an. Dort steht, wie Du aus einem Formular einen Bericht im Hintergrund öffnest, druckst oder auch als *.pdf-Datei abspeicherst. Da müsste sicher nicht mehr viel getan werden, um diese Datei anschließend auch noch zu öffnen.

Gruß

Robert
Senekurios
**
Beiträge: 26
Registriert: So, 13.03.2016 20:22

Re: Berichte direkt als PDF öffnen

Beitrag von Senekurios »

Hallo Robert,

danke für den Tip.

ich habe mir zum Testen jetzt erst mal folgendes Makro aus den Einzelmakros zusammengebaut.

Code: Alles auswählen

Sub open_Report_Test
DIM oReport AS Object
DIM stUrl AS STRING
DIM arg(0) AS NEW com.sun.star.beans.PropertyValue
oReport = ThisDatabaseDocument.ReportDocuments.getByName("Test").open
oReportView = oReport.CurrentController.Frame.ContainerWindow
oReportView.Visible = False
arg(0).name = "FilterName"
arg(0).value = "writer_pdf_Export"
stUrl = "file:///C:/DB/test.pdf"
oReport.storeToURL(stUrl, arg())
oReport.close(true)
end sub
Nach dem Start des Makros passiert folgendes:
- Writer wird sichtlich gestartet aber wieder minimiert (Das Fenster geht auf und verschwindet dann im Hintergrund)
- PDF wird gespeichert
- Danach stürtzt LO ab und startet die Wiederherstellung.
- Bei der Widerherstellung auf, dass der Writer minimiert immer noch aktiv ist, das heißt, er wird nach dem Drucken bzw. Exportieren nicht geschlossen.

Als Ergänzung (ggf. hilfts) hier noch eine Fehlermeldung, welche ich bekam bevor ich "oReport.close(true)" eingefügt hatte:
"Libre Office 5.0 - Fatal Error: SEH Exeption - Access Violation"

Irgend eine Idee, was noch fehlt oder ggf. falsch ist?
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Berichte direkt als PDF öffnen

Beitrag von RobertG »

Hallo Marko,

ich habe das gerade einmal mit einer älteren Datenbank getestet. Beim schreiben der Makros hatte ich in der 5.0-er-Reihe auch hin und wieder Abstürze. Obwohl der Aufbau gleich ist wie bei Dir kann ich jetzt aber keinen Absturz mehr nachvollziehen.

Teste doch einmal die angefügte Beispieldatei.

Gruß

Robert
Dateianhänge
Beispiel_Bericht_Rechnung.odb.zip
(47.72 KiB) 173-mal heruntergeladen
Senekurios
**
Beiträge: 26
Registriert: So, 13.03.2016 20:22

Re: Berichte direkt als PDF öffnen

Beitrag von Senekurios »

Hallo Robert,

ok, danke für das Beispiel. Es funktioniert. Und komischerweise mein Makro jetzt auch.

Ich habe eine Vermutung, warum es vorher nicht ging. Und zwar habe ich die Programmierung auf meinem Laptop unterwegs gemacht und getestet. Auf dem Laptop habe ich aber eine Grafik, welche im Bericht enthalten ist, nicht verfügbar. Hier zu Hause am Rechner ist aber alles vorhanden. Es könnte sein, dass die Fehlermeldung sich auf die fehlende Grafik bezieht.

Danke wieder einmal für deine Hilfe.
Senekurios
**
Beiträge: 26
Registriert: So, 13.03.2016 20:22

Re: Berichte direkt als PDF öffnen

Beitrag von Senekurios »

Und für die Nachwelt hier noch das komplette Makro incl. Öffnen des PDF. Die einzige Voraussetzung, dass dies funktioniert ist, dass das Format PDF am System angemeldet und mit dem PDF-Reader verknüpft ist, damit Windows weiss, welches Programm es öffnen soll.

Code: Alles auswählen

Sub open_Report_Test
DIM oReport AS Object
DIM stUrl AS STRING
DIM arg(0) AS NEW com.sun.star.beans.PropertyValue
oReport = ThisDatabaseDocument.ReportDocuments.getByName("Test").open	' "Test" mit dem Namen des Reports ersetzten
oReportView = oReport.CurrentController.Frame.ContainerWindow
oReportView.Visible = False
arg(0).name = "FilterName"
arg(0).value = "writer_pdf_Export"
stUrl = "file:///C:/DB/test.pdf"		'Pfandnamen incl. Dateinamen einsetzen
oReport.storeToURL(stUrl, arg())
oReport.close(true)
oPDF = createUNOService("com.sun.star.system.SystemShellExecute")
oPDF.execute(stUrl,,0)
end sub
Antworten