🙏 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!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Seriendruck/Serienbrief von der Kommandozeile aus
-
- Beiträge: 4
- Registriert: So 9. Mär 2014, 16:46
Seriendruck/Serienbrief von der Kommandozeile aus
Hallo,
ich versuche derzeit LO verzweifelt dazu zu bewegen einen Serienbrief von der Kommandozeile aus zu drucken.
Mit dem Kommandozeilenparameter -p wird nur einfach gedruckt obwohl eine MySQL Tabelle eingebunden ist. Bei der Suche nach einer Makro-Lösung bin ich auch nicht fündig geworden. Per Makro-Aufzeichnung kommt nichts brauchbares zu stande.
Kennt vielleicht jemand einen Lösungsweg.
Hintergrund:
Eine Webanwendung (Intranet) erzeugt verschiedenene zu druckende Serienbriefe (diverse Firmenstandardbriefe welche mit Kundendaten angereichert sind). Die Daten sind in einer MySql Tabelle abgelegt. Per JavaScript wird via URL-Handler swriter mit dem entsprechenden Dokument aufgerufen was auch einschließlich einfachem Druck klappt.
Sollte sich hierfür eine Lösung finden, gibt es noch das Problem, dass ich per Makro noch einen Filter auf die Tabelle setzen möchte. Das klappt allerdings auch nur manuelle. Die Makro Lösungen welche ich gefunden habe bezogen sich immer auf Calc und nicht auf Writer/Base. Dieses Probleme ließe sich allerdings auch im Vorfeld mit verschiedenen Tabellen lösen, was allerdings nicht sehr elegant wäre.
Wünsche noch einen schönen Tag
Vinosaurus
ich versuche derzeit LO verzweifelt dazu zu bewegen einen Serienbrief von der Kommandozeile aus zu drucken.
Mit dem Kommandozeilenparameter -p wird nur einfach gedruckt obwohl eine MySQL Tabelle eingebunden ist. Bei der Suche nach einer Makro-Lösung bin ich auch nicht fündig geworden. Per Makro-Aufzeichnung kommt nichts brauchbares zu stande.
Kennt vielleicht jemand einen Lösungsweg.
Hintergrund:
Eine Webanwendung (Intranet) erzeugt verschiedenene zu druckende Serienbriefe (diverse Firmenstandardbriefe welche mit Kundendaten angereichert sind). Die Daten sind in einer MySql Tabelle abgelegt. Per JavaScript wird via URL-Handler swriter mit dem entsprechenden Dokument aufgerufen was auch einschließlich einfachem Druck klappt.
Sollte sich hierfür eine Lösung finden, gibt es noch das Problem, dass ich per Makro noch einen Filter auf die Tabelle setzen möchte. Das klappt allerdings auch nur manuelle. Die Makro Lösungen welche ich gefunden habe bezogen sich immer auf Calc und nicht auf Writer/Base. Dieses Probleme ließe sich allerdings auch im Vorfeld mit verschiedenen Tabellen lösen, was allerdings nicht sehr elegant wäre.
Wünsche noch einen schönen Tag
Vinosaurus
Re: Seriendruck/Serienbrief von der Kommandozeile aus
Hi,
dein Suchbegriff in den Foren lautet
MailMerge
Gruß R
dein Suchbegriff in den Foren lautet
MailMerge
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 4
- Registriert: So 9. Mär 2014, 16:46
Re: Seriendruck/Serienbrief von der Kommandozeile aus
Hallo
danke für den Tipp. Das war genau das was ich gesucht habe! Da man sogar noch das Dokument wählen kann, übertrifft es meine Erwartungen noch.
Allerdings bin ich jetzt noch auf ein Problem gestoßen. Die SQL Abfrage funktioniert nicht. Wenn ich CommandType =0 (Table) setze funktioniert alles. Wenn ich aber mit CommandType=1 oder 2 eine Abfrage laufen lasse, dann wird zwar für jeden Datensatz eine Seite gedruckt, aber die Felder bleiben leer. Irgendwie haben die erzeugten Feldnamen nicht die richtige Bezeichnung könnte ich mir vorstellen.
select * from lhdb.dokument_versand
Die Abfrage funktioniert sowohl in Base als auch in PHPmyAdmin wie sie soll.
danke für den Tipp. Das war genau das was ich gesucht habe! Da man sogar noch das Dokument wählen kann, übertrifft es meine Erwartungen noch.
Allerdings bin ich jetzt noch auf ein Problem gestoßen. Die SQL Abfrage funktioniert nicht. Wenn ich CommandType =0 (Table) setze funktioniert alles. Wenn ich aber mit CommandType=1 oder 2 eine Abfrage laufen lasse, dann wird zwar für jeden Datensatz eine Seite gedruckt, aber die Felder bleiben leer. Irgendwie haben die erzeugten Feldnamen nicht die richtige Bezeichnung könnte ich mir vorstellen.
select * from lhdb.dokument_versand
Die Abfrage funktioniert sowohl in Base als auch in PHPmyAdmin wie sie soll.
Code: Alles auswählen
Sub Test
Dim MM as Object
MM = CreateUnoService("com.sun.star.text.MailMerge")
With MM
'Output file
' .OutputType = com.sun.star.text.MailMergeType.FILE
' .OutputUrl = "file:///home/peter/"
' .FileNamePrefix = "MM_"
' .SaveAsSingleFile=True
'Output email
.DocumentURL = "file:///c:\diverses\lh_test.odt" 'sourceDocName
.OutputType = 1 ' 1 Drucker 2 File 3 Mail
.DataSourceName = "cake" 'Datenbankname von Libreoffice => MySql DB registriert
.CommandType = 1 '0=Table 1 = predefined query, 2 SQL
' .Command = "select * from lhdb.dokument_versand"
.Command = "Abfrage1" ' "select * from lhdb.dokument_versand"
' .Subject = "Betreff"
' .MailBody = "Das ist ein Test"
' .AddressFromColumn = "Email"
' .BlindCopiesTo= Array("x@x.xx")
' .SendAsAttachment = 1
' .AttachmentName = "xtest.pdf"
' .AttachmentFilter = "writer_pdf_Export"
.execute(Array())
' .dispose()
End With
'MsgBox "Versendet!" 'HInweis Mailvorgang abgeschlossen
End Sub
Re: Seriendruck/Serienbrief von der Kommandozeile aus
Hallo Vinosaurus,
das Problem dürfte im Serienbrief-Dokument zu suchen sein.
Der qualifizierte Name eines Seriendruck-Feldes besteht aus Datenbank.Tabelle.Feldname, bzw. Datenbank.Abfrage.Feldname. Soll der Seriendruck bei gleichbleibenden Feldnamen für eine andere Datenbank, Tabelle oder Abfrage ausgeführt werden, muss zuvor über Bearbeiten/Datenbank austauschen... die Datenbank, Tabelle oder Abfrage zugeordnet werden.
Wie dies als Makro vonstatten geht kann ich Dir leider mitteilen, nach dem hier lediglich der Austausch der Datenbank beschrieben ist.
das Problem dürfte im Serienbrief-Dokument zu suchen sein.
Der qualifizierte Name eines Seriendruck-Feldes besteht aus Datenbank.Tabelle.Feldname, bzw. Datenbank.Abfrage.Feldname. Soll der Seriendruck bei gleichbleibenden Feldnamen für eine andere Datenbank, Tabelle oder Abfrage ausgeführt werden, muss zuvor über Bearbeiten/Datenbank austauschen... die Datenbank, Tabelle oder Abfrage zugeordnet werden.
Wie dies als Makro vonstatten geht kann ich Dir leider mitteilen, nach dem hier lediglich der Austausch der Datenbank beschrieben ist.
-
- Beiträge: 4
- Registriert: So 9. Mär 2014, 16:46
Re: Seriendruck/Serienbrief von der Kommandozeile aus
Hallo Peter,
danke für Deinen Ansatz. Irgendwo scheint dort das Problem zu liegen.
Die Feldnamen lauten auf die genutzte Datenbank/Tabelle (z.B. cake.lhdb.dokument_versand.benutzer) Wahrscheinlich erzeugt die Abfrage anders lautende Feldnamen. Aber wie heißen diese dann? Über "as" lässt sich in der Abfrage ja noch etwas verändern, solange kein Punkt drin vor kommt.
Für "Datenbank austauschen" muss ich ja irgendwas passendes zum Austauschen haben.
Gruß
Vinosaurus
danke für Deinen Ansatz. Irgendwo scheint dort das Problem zu liegen.
Die Feldnamen lauten auf die genutzte Datenbank/Tabelle (z.B. cake.lhdb.dokument_versand.benutzer) Wahrscheinlich erzeugt die Abfrage anders lautende Feldnamen. Aber wie heißen diese dann? Über "as" lässt sich in der Abfrage ja noch etwas verändern, solange kein Punkt drin vor kommt.
Für "Datenbank austauschen" muss ich ja irgendwas passendes zum Austauschen haben.
Gruß
Vinosaurus
Re: Seriendruck/Serienbrief von der Kommandozeile aus
Hi,
wenn möglich, versuch mal eine Ansicht anstelle einer Abfrage zu verwenden.
Gruß R
wenn möglich, versuch mal eine Ansicht anstelle einer Abfrage zu verwenden.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 4
- Registriert: So 9. Mär 2014, 16:46
Re: Seriendruck/Serienbrief von der Kommandozeile aus
Hallo
ein View funktioniert genauso wie eine ganze Tabelle (Commandtype=0). Damit werde ich wohl irgendwie zum Ziel kommen, in dem ich die Select Anweisung vorher ausführe innerhalb des Makros.
Abfragen aus der ODB Datenbank funktionieren dann, wenn man einzelne Serienbrieffelder ensprechend benennt. Ein neue Zuordnung über "Datenbank austauschen" wird für Abfragen nicht unterstützt. Da die Abfragen nicht zur Laufzeit vom Makro verändert werden können (oder ich weiß nicht wie es geht) ist der Weg über ein View der wohl gangbarste.
Falls jemand wissen sollte wie die Benennung der Felder/Datenbank/Tabelle erfolgen muss, damit es mit einer Select-Anweisung(Commandtype=2) funktioniert wäre ich dankbar - auch in einem Jahr noch. Nachdem ich eine Flasche Grauburgunder lang alle mir erdenklichen Möglichkeiten durchprobiert habe, kapituliere ich fürs erste.
Prost
Vinosaurus
ein View funktioniert genauso wie eine ganze Tabelle (Commandtype=0). Damit werde ich wohl irgendwie zum Ziel kommen, in dem ich die Select Anweisung vorher ausführe innerhalb des Makros.
Abfragen aus der ODB Datenbank funktionieren dann, wenn man einzelne Serienbrieffelder ensprechend benennt. Ein neue Zuordnung über "Datenbank austauschen" wird für Abfragen nicht unterstützt. Da die Abfragen nicht zur Laufzeit vom Makro verändert werden können (oder ich weiß nicht wie es geht) ist der Weg über ein View der wohl gangbarste.
Falls jemand wissen sollte wie die Benennung der Felder/Datenbank/Tabelle erfolgen muss, damit es mit einer Select-Anweisung(Commandtype=2) funktioniert wäre ich dankbar - auch in einem Jahr noch. Nachdem ich eine Flasche Grauburgunder lang alle mir erdenklichen Möglichkeiten durchprobiert habe, kapituliere ich fürs erste.
Prost
Vinosaurus
Re: Seriendruck/Serienbrief von der Kommandozeile aus
Hallo Vinosaurus,
Dannenhöfer hat hier den Austausch einer Datenbank beschrieben, Du könntest dann, falls Du es noch nicht getan hast, testen, ob Du den Namen der Abfrage gleich mitgeben kannst. Wie z. B.
Du hast dann wenigstens gut geschlafen.Vinosaurus hat geschrieben:Falls jemand wissen sollte wie die Benennung der Felder/Datenbank/Tabelle erfolgen muss, damit es mit einer Select-Anweisung(Commandtype=2) funktioniert wäre ich dankbar - auch in einem Jahr noch. Nachdem ich eine Flasche Grauburgunder lang alle mir erdenklichen Möglichkeiten durchprobiert habe, kapituliere ich fürs erste.
Dannenhöfer hat hier den Austausch einer Datenbank beschrieben, Du könntest dann, falls Du es noch nicht getan hast, testen, ob Du den Namen der Abfrage gleich mitgeben kannst. Wie z. B.
Code: Alles auswählen
Sub databasechange
Doc = ThisComponent
TextFelderEnumration = Doc.getTextFields.createEnumeration
While TextFelderEnumration.hasMoreElements()
TextField = TextFelderEnumration.nextElement()
If TextField.supportsService("com.sun.star.text.TextField.Database") Then
textfield.textfieldmaster.databasename="Datenbank.Abfrage1"
end if
Wend
end sub
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.