[gelöst] MailMerge: Datenfelder bleiben leer

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

Moderator: Moderatoren

juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

[gelöst] MailMerge: Datenfelder bleiben leer

Beitrag von juetho »

Hallo, ich erstelle einen Seriendruck mit Ausgabe in eine Datei. Das Makro wird per Schaltfläche aus einem Base-Formular gestartet (oDatasource im Code ist die Base-Datenbank). Der Arbeitsablauf mit MailMerge klappt auch vollständig, aber in der Ergebnis-Datei fehlen sämtliche Datenfelder. Den Code habe ich nach mehreren Forumsbeiträgen erstellt und angepasst (hier um alles gekürzt, was die Dateinamen betrifft).

Code: Alles auswählen

Sub printBill_Create(oDatasource as object, sFilepath as string, sFilename as string)
  MailMerge = createunoservice("com.sun.star.text.MailMerge")

  MailMerge.ActiveConnection = thisComponent.Parent.CurrentController.activeConnection
  MailMerge.DataSourceName = oDatasource.Name
  MailMerge.DocumentURL = converttourl(sFilepath & "/" & sFilename)
  MailMerge.CommandType = com.sun.star.sdb.CommandType.TABLE
  MailMerge.Command = "fibu.print_bkbill"
  ' MailMerge.Filter = "(re_datum = " & chr(39) & CDateToIso(Now) & chr(39) & ")"
  MailMerge.Filter = "(re_datum = " & chr(39) & "20121107" & chr(39) & ")" 
  MailMerge.OutputType = com.sun.star.text.MailMergeType.FILE 
  MailMerge.SaveAsSingleFile = true
  MailMerge.OutputUrl = converttourl(sFilepath & "/Druckausgabe")
  MailMerge.FileNameFromColumn = false
  MailMerge.FileNamePrefix = "Rechnungen"

  MailMerge.execute(Array())

  rem erzeugte Druckausgabe sofort öffnen zur manuellen Überprüfung
  url = converttourl(sFilepath & "/Druckausgabe/Rechnungen0.odt")
  oDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, Array() )
End Sub
Wenn ich die Ursprungsdatei (eine odt, die in DocumentURL angegeben ist) öffne und manuell den Seriendruck aufrufe, klappt alles wunschgemäß. Die Tabelle ist eine VIEW aus der MySQL-Datenbank. (Für Base ist das keine Abfrage; wenn ich stattdessen eine Abfrage einrichte und verwende, ändert sich nichts.) Die Daten werden korrekt zur Verfügung gestellt (durch den Filter handelt es sich um drei Datensätze, und die Zieldatei umfasst auch drei Seiten.) Wenn ich SaveAsSingleFile auf false setze, werden in der Druckausgabe die Datenfelder angezeigt, aber nicht die Dateninhalte. Auch bei der Ausgabe PRINTER fehlen die Dateninhalte; dann kommen die Leerseiten hinzu (siehe Bug 30704).

Bevor ich eine Beispieldatei erstelle, wäre es schön, ob ich Hinweise auf eine falsche oder fehlende Einstellung oder zur Fehlersuche bekommen könnte. Danke! Jürgen
Zuletzt geändert von juetho am Fr, 23.11.2012 16:33, insgesamt 1-mal geändert.
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: MailMerge: Datenfelder bleiben leer

Beitrag von F3K Total »

Hallo Jürgen,
habe keine Zeit es vorher zu prüfen, ich meine mich zu erinnern, dass beim Mailmerge die "Datasource" die Tabelle und nicht die DB ist.

Gruß R
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: MailMerge: Datenfelder bleiben leer

Beitrag von juetho »

Danke vielmals Rik, das war der Hinweis auf den richtigen Weg:
F3K Total hat geschrieben: ich meine mich zu erinnern, dass beim Mailmerge die "Datasource" die Tabelle und nicht die DB ist.
Erneute Suche und Kontrolle brachte mich zur Lösung: Es ist tatsächlich die Datenbank gemeint. Aber ich hatte den vollständigen Dateinamen übergeben. Stattdessen muss der eigentliche DB-Name übergeben werden, beispielsweise so:

Code: Alles auswählen

MailMerge.DataSourceName = GetFileNameWithoutExtension(oDatasource.Name, "/")
Dafür gibt es sicher noch andere Wege, aber das klappt jetzt - gelöst! Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
TheUnreal
Beiträge: 4
Registriert: Mo, 18.09.2017 11:23

Re: [gelöst] MailMerge: Datenfelder bleiben leer

Beitrag von TheUnreal »

Hallo zusammen,

ich hänge mich mal an den alten Fred. Ich habe aktuell das gleiche Problem, ich bekomme einen Serienbriefdruck per Makro hin - aber die Feldbefehle werden nicht gefüllt. Beim Serienbriefassistenten habe ich kein Problem damit.

Code: Alles auswählen

Sub Main
Dim MyProps as Object
Dim printer(0) as new com.sun.star.beans.PropertyValue

MailMerge = createunoservice("com.sun.star.text.MailMerge")
MailMerge.DocumentURL=ConvertToUrl("c:\Ordner\Datei.doc")
MailMerge.CommandType=com.sun.star.sdb.CommandType.TABLE


MailMerge.DataSourceName="Datenbank"
MailMerge.Command="Tabelle"
MailMerge.OutputType=1
MailMerge.OutputUrl=ConvertToUrl("C:\Ordner\UnterOrdner")
'MailMerge.FileNameFromColumn=false
'MailMerge.Filenameprefix="Ausdruck"
printer(0).Name = "Name"
printer(0).Value = "KM-1635 GX normal"
MailMerge.Model.setPrinter(printer)
MailMerge.execute(array())

End Sub
Ich nutze OpenOffice 4.1.2 und habe bislang immer sehr bequemmit VBA gearbeitet. Aber hier verstehe ich es nicht wirklich. Jürgen schrieb, er hat den Dateinamen inkl. Suffix übergeben, aber ich habe ja eine einfache eingebundene Datenbank und möchte nur "F4 --> Klick - klick - Glück --> druck" vereinfachen in "Schwupps - du hast nichts gesehen" :)
Wie erwähnt, funktioniert das soweit auch, aber die Felder sind nicht gefüllt :(

Gruß
Sascha

_____________________
Moderationshinweis:
Bitte keine "alten" Threads mehr aufwärmen.
Siehe auch Infos zur Forenbenutzung (dort unter: "Eröffnet neue Threads").
Eröffne bitte einen neuen Thread mit Deiner Frage.
Thread geschlossen.
Gesperrt