Seite 1 von 1

[gelöst] MailMerge: Datenfelder bleiben leer

Verfasst: Fr, 23.11.2012 14:13
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

Re: MailMerge: Datenfelder bleiben leer

Verfasst: Fr, 23.11.2012 15:58
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

Re: MailMerge: Datenfelder bleiben leer

Verfasst: Fr, 23.11.2012 16:32
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

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

Verfasst: Mo, 18.09.2017 11:30
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.