🙏 Helfen Sie 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. 🤗

Bericht speichern

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Bericht speichern

Beitrag von Frewer » Di 7. Nov 2023, 16:13

Hallo,
stecke wieder mal fest. Habe mühsam einen Bericht erstellt, der auch funktioniert und mittels "Druck"-Makro sich auch ausdrucken lässt. Nun wollte ich den Bericht als Kopie auf meinem C-Laufwerk speichern. Das BASE Tutorial 09_Macro_V70 beschreibt unter "BerichtAlsPDFspeichern" die entsprechende Routine, die ich wie folgt in meine Makros eingebaut habe. Die SUB wird von einer anderen SUB (Drucken des Report) aufgerufen. Beim Aufruf kommt folgende Fehlermeldung:

Message: SfxBaseModel::impl_store <file:///C:\Users\w-fre\Documents\BTest\BH-2023\ATest10.pdf> failed: 0x507(Error Area:Io Class:Access Code:7).

<Sub BerichtSpeichern(oReport AS OBJECT)
DIM stUrl AS STRING
DIM arg(0) AS NEW com.sun.star.beans.PropertyValue
oReport = ThisDatabaseDocument.ReportDocuments.getByName("Bericht_BH").open
REM oReportView = oReport.CurrentController.Frame.ContainerWindow
REM oReportView.Visible = False
arg(0).name = "FilterName"
arg(0).value = "writer_pdf_Export"
stUrl = "file:///C:\Users\w-fre\Documents\BTest\BH-2023\ATest10.pdf"
oReport.storeToURL(stUrl, arg())
oReport.close(true)
oPDF = createUNOService("com.sun.star.system.SystemShellExecute")
oPDF.execute(stUrl,,0)
End Sub >

Meine Fragen:
was bedeutet "Filtername" ??
was bedeutet "file:///....." ??
was bedeutet die Fehlermeldung?? und wo ist der Fehler??
Die Kopie soll auf C:\Users\w-fre\Documents\BTest\BH-2023\ abgespeichert werden.

mfG Frewer

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Bericht speichern

Beitrag von RobertG » Mi 8. Nov 2023, 08:34

Hallo Frewer,

Du musst an das Makro eine komplette URL übergeben.

Code: Alles auswählen

stUrl = ConvertToURL("C:\Users\w-fre\Documents\BTest\BH-2023\ATest10.pdf")
Das wird dann in den korrekten URL-Ofad konvertiert:

Code: Alles auswählen

file:///C:/Users/w-fre/Documents/BTest/BH-2023/ATest10.pdf
Im Handbuch habe ich da nur file:/// stehen. Das liegt auch ein bisschen da dran, dass unter Linux und ohne Verwendung von Sonderzeichen vor den Pfad nur file:/// geschrieben werden muss. Dann passt das. Windows hat da den Backslash drin.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: Bericht speichern

Beitrag von Frewer » Mi 8. Nov 2023, 11:15

Hallo Robert,
hat sofort geklappt, merci.
Habe allerdings nicht gefunden, dass vor der URL der Begriff "ConvertToURL()" stehen muß. Das Beispiel beinhaltet diese Anweisung nicht. Deshalb auch mein Fehler aus Unwissenheit.
Jetzt habe ich noch 2 Fragen:

1. Wenn der Makro abgelaufen ist, bleibt die pdf Seite nach mehrfachem Blinken bestehen. Wie kann ich die Seite schließen?
Habe der SUB angefügt
oReport.storeToURL(stUrl, arg())
Wait(100)
oReport.close(true)
Damit springt der Bericht auch zurück über das aufrufende Formular in mein Hauptformular. Wenn ich das Hauptformular schließe, wird der Bericht wieder angezeigt (was in der Druckroutine (identischer Abschluß) nicht ist).

2. Wenn ich mein Hauptformular schließe, möchte ich sofort zurück nach Windows. Z.Zt. muss ich die Datenbank schließen, um zurück zu kommen. Geht das wie beim Öffnen??
Gruß Frewer

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Bericht speichern

Beitrag von RobertG » Mi 8. Nov 2023, 12:27

Hast Du tatsächlich eine pdf-Seite geöffnet? Die ist dann ja nicht mehr für LibreOffice zugänglich. Da würde dann Dein PDF-Betrachtungsprogramm reagieren.

Wenn Du nur das Formular schließen willst und danach wieder zurück auf den Desktop gehen willst wäre ein externe Formular für Dich besser geeignet.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: Bericht speichern

Beitrag von Frewer » Fr 10. Nov 2023, 13:08

Merci Robert,
mein Fehler war, dass ich den oRep mehrfach geöffnet mehr als ich ihn geschlossen habe. Jetzt ist wieder alles ok und das Zurück auf den Desktop lass ich, da das Schließen von LO kein Hexenwerk ist.
Gruß Frewer

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: Bericht speichern

Beitrag von Frewer » Fr 24. Nov 2023, 17:43

Hallo Robert,
jetzt muss leider auf das Thema zurückkommen, denn plötzlich wird nicht mehr gespeichert. LO meldet:
2023-11-24.png
2023-11-24.png (169.62 KiB) 2419 mal betrachtet
Manchmal wird beim Fehler hingewiesen, dass ein arg nicht optional sei (what ever that means).
Mit msgbox(strName) habe ich überprüft, dass der Pfad ok ist und es ist komisch, dass das Ganze ja funktionierte.
Gibt es Hilfe?
Gruß Werner

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Bericht speichern

Beitrag von RobertG » Fr 24. Nov 2023, 21:46

Hallo Werner,

an welcher Stelle hast Du denn die msgbox strName ablaufen lassen? Und warum sind in Zeile 118 zusätzliche Klammern? Die msgbox bringt am meisten, wenn Du sie mit der stUrl fütterst.
Ist der Bericht wirklich geöffnet (ist aus dem Ausschnitt nicht zu sehen). Die Fehlermeldung sagt nichts über einen unbekannten Pfad.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: Bericht speichern

Beitrag von Frewer » Sa 25. Nov 2023, 11:24

Hallo Robert,
habe die zusätzliche Klammer entfernt und die MsgBox(StURL) eingebaut.
Die MsgBox ergibt: "file:///C:/Users/w-fre/Documents/DeBeKa/LAntraege/LAntrag-231125.pdf"
was ich als korrekten Ablageort verstehe. Aber abgespeichert wird das Dok nicht, es kommt die im Screenshot gekennzeichnete Meldung:
2023-11-25.png
2023-11-25.png (162.81 KiB) 2392 mal betrachtet
Das Prinzip: Mit dem Formblatt DB.Antrag wird der Bericht DB.Bericht aufgerufen und ausgefüllt, dann wird der Bericht gedruckt "SUB AusdruckDB(oEvent AS OBJECT)", gespeichert, der Bericht geschlossen und dann zurück zum Hauptformular wie folgt:
<(sorry, wie das mit dem code funktioniert ist mir unklar)
SUB AusdruckDB(oEvent AS OBJECT)
REM Aufgabe: Ausdruck des Berichtes, dann Zellen in DB füllen, Bericht schließen,
DIM stTAG AS String
DIM oRep as Object
oDoc=thisComponent
stTAG = oEvent.Source.Model.TAG 'TAG = Feld "Zusatzinformationen"
REM Bericht drucken
oRep = ThisDatabaseDocument.ReportDocuments.getByName("Bericht_DB").open
BerichtDrucken(oRep)
REM beok und Datum in DB setzen
DB_bearbeiten
REM Bericht speichern
DB_BerSpeichern(oRep)
REM Eingabe abschließen
aForms() = Split(stTag, ",") 'zuerst der Formularname für das neue Formular, dann der für das alte Formular
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms(0)) ).open
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms(1)) ).close
END SUB
>

Was die Message:. sagen soll ist mir völlig fremd, da ich im Befehl nur den Pkt zwischen oReport und stURL() sehe.
Gruß Werner

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Bericht speichern

Beitrag von RobertG » Sa 25. Nov 2023, 11:35

Woher bekommt denn DB_BerSpeichern das offene Berichtsobjekt oReport? Ich nehme eher an, dass es daran hakt, dass da kein Dokument dran hängt.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: Bericht speichern

Beitrag von Frewer » Sa 25. Nov 2023, 12:47

Einverstanden Robert. Habe festgestellt, dass ich nach dem Drucken den Bericht geschlossen habe. D.h. er stand dem Abspeichern nicht mehr zur Verfügung. Ich dachte ursprünglich, dass das Öffnen des Rep mit der Klammer (oRep as object) und der Übergabe von oRep an die SUB erledigt wäre, dem ist aber nicht so, weil ich den oRep geschlossen hatte.
Jedenfalls wieder mal vielen Dank.
Gruß Werner


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