Voreinstellungen des Seriendruckdialoges ändern

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Voreinstellungen des Seriendruckdialoges ändern

Beitrag von Christiana »

Hallo,
ich möchte per Makro einen Serienbrief erstellen. Da manchmal nur einzelne Datensätze ausgewählt werden sollen, möchte ich dazu den Seriendruck-Dialog verwenden. Leider konnte ich den Code dazu nur mit dem Makro-Rekorder aufzeichnen:

Code: Alles auswählen

sub Seriendruck
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:MergeDialog", "", 0, Array())
end sub
Wie kann man die Voreinstellungen des Seriendruck-Dialoges per Code ändern? Die Ausgabe soll in eine Datei erfolgen. Außerdem würde ich gern den Pfad per Code hinterlegen.
Weiß jemand wie man so etwas macht?

Vielen Dank im Voraus!

Christiana
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von komma4 »

Können kannst Du schon - nur sind die DISPATCHER-calls schlecht bis gar nicht dokumentiert.

Wärst Du auch in der Lage Basic u. APIs zu nehmen? Im englischen Forum, section CodeSnippets und MacroProgramming, gibt's eine Reihe von Beispielen....
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von Christiana »

Hallo Winfried,

also, ich habe mir das Buch von Thomas Krumbein „Makros in OOo 2.0“ besorgt. Es hat mir schon sehr geholfen. Dennoch stoße ich mit meinen Basic-Kenntnissen oft an meine Grenzen und dann nehme ich, auch wenn sehr ungern, den Makro-Rekorder zu Hilfe. Der Umgang mit der API fällt mir noch sehr schwer. Leider lassen meine Englisch-Kenntnisse auch zu wünschen übrig. Trotzdem werde ich mich im englischen Forum auf die Suche begeben. Danke für den Tipp!

mfg
Christiana
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von Christiana »

Mit diesem Code kann ich einen Serienbrief erstellen.

Code: Alles auswählen

Sub Serienbrief
MailMerge = createunoservice("com.sun.star.text.MailMerge")
MailMerge.DataSourceName="Datenbankname"
MailMerge.DocumentURL=ConvertToUrl("H:\test.odt")
MailMerge.CommandType=0
MailMerge.Command="public.myempfaenger"
MailMerge.OutputType=2
MailMerge.OutputUrl=Converttourl("H:\test\TMP")
MailMerge.FileNameFromColumn=True
MailMerge.Filenameprefix="name"
Dim MyProps()
MailMerge.execute(MyProps())
End Sub
Um einzelne Empfänger auszuwählen, könnte ich das Datenquellenfenster benutzen. (Leider wieder nur mit Makro-Rekorder erstellt.)

Code: Alles auswählen

sub Datenquellenfenster
  document = ThisComponent.CurrentController.Frame
  dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  dim args1(0) as new com.sun.star.beans.PropertyValue
  args1(0).Name = "ViewDataSourceBrowser"
  args1(0).Value = true
  dispatcher.executeDispatch(document, ".uno:ViewDataSourceBrowser", "", 0, args1())
end sub
Aber wie lese ich die Selektionen des Datenquellenfensters aus und wie übergebe ich diese an den Serienbrief?
Ich hoffe, ich habe mich verständlich ausgedrückt. Es wäre schön, wenn mir jemand weiterhelfen könnte.

mfg
Christiana
OOo 3.1 mit WIN XP SP 3 und PostgreSQL 8.2
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von komma4 »

Christina,

wenn ich das richtig sehe hat das Problem JohnV hier gelöst.
War es das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von Christiana »

Hallo Winfried,

erst einmal vielen Dank für Deine Hilfe beim Suchen. Der Code von JohnV ist sehr interessant, aber leider nicht genau dass, was ich suche. Wenn ich es richtig verstehe, wird genau ein Datensatz im Datenquellenfenster markiert und anschließend werden diese Daten des markierten Datensatzes in die Felder des Dokumentes geschrieben. Das entspricht dem Button: „Daten in Felder“ des Datenquellenfensters. Ich denke, es ist ein Code, den man für viele andere Anwendungen benutzen kann, den ich auf jeden Fall in meine Makrosammlung aufnehmen werde.
Im Moment aber, brauche ich für mein Programm etwas anderes. Im Datenquellenfenster sollen auch mehrere oder alle Datensätze ausgewählt werden können und daraus soll dann der Serienbrief erstellt werden.
Im weiteren Verlauf wird dann jedes einzelne Dokument des hinterlegten Pfades geöffnet und zu jedem einzelnen Empfänger weitere Daten aus der Datenbank hinzugefügt. Dieser Teil funktioniert bereits. Das konnte ich mit Hilfe des wirklich guten Buches von Thomas Krumbein lösen.
Beim ersten Versuch habe ich mit Hilfe des Makro-Rekorders den Seriendruck-Dialog aufgerufen (siehe oben), denn dieser macht ja genau dass, was ich möchte. Aber es ist noch nicht komfortabel genug, denn
1. erscheint zunächst der Dialog mit der Frage, ob der Seriendruck aus diesem Dokument erstellt werden soll. Diese muss auf jeden Fall mit OK beantwortet werden.
2. steht die Ausgabe standardmäßig auf Drucker und nicht auf Datei. Das ist in diesem Fall sehr fehlerträchtig und
3. wenn zuvor ein anderer Serienbrief erstellt wurde, der in einem anderen Verzeichnis abgelegt wurde, stimmt der eingestellte Pfad nicht mehr. Deshalb möchte ich den Pfad mit dem Code übergeben.
Da ich nicht weiß, wie ich auf diesen Seriendruck-Dialog zugreifen kann, um diese Einstellungen per Basic-Code vornehmen zu können, überlegte ich mir die Variante mit dem Datenquellenfenster zur Selektion der einzelnen Datensätze. Aber leider weiß ich da auch nicht weiter.

mfg
Christiana
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von Christiana »

Hallo Profis,

weiß denn wirklich niemand wie man auf diesen Seriendruck-Dialog per Basic-Code zugreifen kann, die Voreinstellungen von Drucker auf Datei umstellen und den Pfad per Basic-Code hinterlegen kann? Ich brauche es wirklich dringend und kann mir vorstellen, dass es doch auch für andere interessant wäre!

Christiana
Seriendruck.jpg
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von Christiana »

Hallo Christina,

leider habe ich bisher noch keine Lösung gefunden. Ich weiß einfach nicht wie ich an diesen Seriendruckdialog herankomme.
So sind wir nun schon zwei mit diesem Problem. Vielleicht kann uns ja doch noch jemand aus dem Forum helfen.

Christiana
OOo 3.1 mit WIN XP SP 3 und PostgreSQL 8.2
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von komma4 »

Habt ihr beiden dieses Posting gelesen?
Ohne es eingehend geprüft oder getestet zu haben scheint die unten stehende Funktion RowSelectionInDataBrowser(oDoc,DBname,tableName) eine Möglichkeit aufzuzeigen....?
Bei meinem Kunden ist gerade die Hölle los, deshalb habe ich leider momentan keine Zeit mir das selbst mal durchzuspielen.

Quelle wohl im Projekt

Viel Erfolg.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von moritz »

Nur leider klappt das eben bis jetzt auch nicht perfekt, weil mir immer noch wichtige Teile fehlen.
Moritz
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von Christiana »

Hallo Christina,

vielen Dank für das Posten deiner Lösung. Leider reicht dies in meinem Fall noch nicht aus, da ich auch nur einzelne Datensätze auswählen können muss. Auch Mehrfachselektion muss möglich sein. Deshalb habe ich den Code hinsichtlich Tabellen und Abfragen auch noch nicht ausgetestet. Zur Zeit arbeite ich mich für ein anderes Projekt in Base und Formulare ein. Ich hoffe, dass ich dann auch hierfür eine Lösung finden werde. Spontan schiesst mir jetzt ein Gedanke durch den Kopf: Parameterabfrage. Ich glaube Christina, du hast mich doch noch auf die richtige Fährte gebracht. Mein anderes Projekt hat jetzt leider Vorrang, aber sobald ich ein bisschen Luft habe, werde ich es testen. Dann werde ich mir auch den Code von Moritz mal näher anschauen.

Also nochmals vielen Dank!

Christiana
OOo 3.1 mit WIN XP SP 3 und PostgreSQL 8.2
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Re: Voreinstellungen des Seriendruckdialoges ändern

Beitrag von moritz »

Vielleicht hilft Dir mein Lösungsansatz weiter. Ich schreibe zwar (fast) keine Serienbriefe, arbeite für Briefe, Faxe und Kurzbriefe aber nach dem gleichen Prinzip:
Vorlagen für Faxe, Briefe und Kurzbriefe mit Sereindruckfeldern, verbunden mit einer Abfrage- Tabelle
MySQL- Adressdatenbank, in OO angemeldet, Abfrage- Tabelle

per Makro
1. Erstellung eines neuen Briefes / Faxes
2. Eingabe der zu suchenden Familiennamen (max ca. 8 Stück, je nach String- Länge)
3. Abfrage über SQL und Eintrag der gefundenden Namen in eine Listbox
4. Auswahl der tatsächlich benötigten Namen (wegen der vielen Schneiders und Müllers), Mehrfachauswahl möglich
5. Eintrag der neuen SQL- Abfrage in die OO- Datenabfrage
6. Anzeige der Adressdatenquelle
7. Eintrag der Betreffzeile aus einer anderen Writer- Datei
8. manuelle Auswahl der Adresszeile im Datenbeamer
9. Eintrag der Adressdaten in die Brieffelder
10. Fertigstellung des Brieftextes
11. Ausdruck
Wo ich noch Probleme habe:
bei einem einzelnen Datensatz wird die Listbox 3. und 4. eingespart und gleich das Abfrageergebnis im Beamer angezeigt. In diesem Fall müßten die Brieffelder gleich automatisch ausgefüllt werden, was 1. leider oft nicht klappt (ist aber sicher lösbar) und 2. Felder mit Bedingung nicht aktualisiert werden.
Moritz
Gesperrt