Mail Merge

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Mail Merge

Re: Mail Merge

von DPunch » Di, 02.03.2010 16:09

Aloha

Erstmal folgendes:
oMailMerge.CommandType = 3
Siehe auch:
http://api.openoffice.org/docs/common/r ... dType.html

Wenn überhaupt müsste es 2 sein.

Bei mir (Windows XP, OOo 3.11) sind auf SQL-Abfragen basierende MailMerges allerdings gar nicht erst möglich.
Du könntest mal probieren, ob statt

Code: Alles auswählen

oMailMerge.CommandType = 3
oMailMerge.Command = "SELECT Col1 FROM Tabelle WHERE Col2 = 'String'"
vielleicht

Code: Alles auswählen

oMailMerge.CommandType = com.sun.star.sdb.CommandType.TABLE
oMailMerge.Filter = "Col2 = 'String'"
oMailMerge.Command = "Tabelle"
funktioniert.

Re: Mail Merge

von Korny1986 » Di, 02.03.2010 14:22

Danke für deine Antwort Heinz! Leider hat mir deine Funktion das selbe Ergebnis zurückgeliefert, das einzige was ich ausklammern habe müssen war

Code: Alles auswählen

MailMerge.ActiveConnection = oConn
leider weiß ich nicht welches Object dort hineingeladen weden soll.

Re: Mail Merge

von Heinz Bär » Di, 02.03.2010 10:43

Hallo korny1986

Probier es mit der folgenden Subroutine:

Code: Alles auswählen

Function SB_mail_merge(url_vorlage)

Dim MailMerge as object
Dim oRowSet As object
Dim sql as string


sql = "SELECT * FROM serienbrief WHERE sb_user = '" & global_Ben_Name & "' ORDER BY sb_name"

oRowSet = createUnoService("com.sun.star.sdb.RowSet")
oRowSet.setPropertyValue("DataSourceName", global_DB_Name)
oRowSet.CommandType = com.sun.star.sdb.CommandType.COMMAND
oRowSet.setPropertyValue("Command", sql)
oRowSet.execute()


Print_auf = "2"												' Druck in Datei   <------- wieder entfernen
 
MailMerge = createunoservice("com.sun.star.text.MailMerge")
MailMerge.ActiveConnection = oConn
MailMerge.DataSourceName = global_DB_Name
MailMerge.DocumentURL = url_vorlage
MailMerge.CommandType = com.sun.star.sdb.CommandType.TABLE
MailMerge.Command = global_DB_Name & ".serienbrief"
MailMerge.ResultSet = oRowSet

MailMerge.OutputType = Print_auf	 ' 1 = Drucker,  2 = Datei
if Print_auf = 2 then
   MailMerge.OutputType = com.sun.star.text.MailMergeType.FILE
   MailMerge.SaveAsSingleFile = True
   MailMerge.OutputUrl = global_dr_url
end if

MailMerge.execute(Array())

End Function
Allerdings ist dort die Druckerauswahl nicht enthalten, da ich diese nicht brauchte.

Gruss
Heinz

Re: Mail Merge

von Korny1986 » Mo, 01.03.2010 19:17

Haha, zu früh gefreut!

Bin beim näheren betrachten drauf gekommen, dass er immer den selben Datensatz verwendet.

In der normalen Serienbriefvorlage funktioniert dies aber ohne Probleme, daran kann es also nicht liegen!

Was hab ich noch vergessen einzustellen??

Re: Mail Merge

von Korny1986 » Mo, 01.03.2010 18:36

Super, danke funktioniert!

Re: Mail Merge

von DPunch » Mo, 01.03.2010 18:28

Aloha

Probier es mal so (ohne Garantie, kann auch im Moment nichts testen):

Code: Alles auswählen

       Dim oMailMerge as Object
       
       oMailMerge = createunoservice("com.sun.star.text.MailMerge")
       oMailMerge.DataSourceName = "Datenbank"
       oMailMerge.DocumentURL = ConvertToUrl("C:\Vorlagen\Serienbrief.ott")
       oMailMerge.CommandType = 3
       oMailMerge.Command = "SELECT Col1 FROM Tabelle WHERE Col2 = 'String'"
       oMailMerge.OutputType = 1
    '   oMailMerge.OutputUrl = ConvertToUrl("C:\Test\")
    '   oMailMerge.SaveAsSingleFile = True
       oMailMerge.SinglePrintJobs = False
     '*****************************************************************
       Dim myPrinter(0) as new com.sun.star.beans.PropertyValue
       myPrinter(0).Name = "Name"
       myPrinter(0).Value = "KONICA MINOLTA 362/282/222 PS"
       oMailMerge.Model.setPrinter(myPrinter)
     '*****************************************************************
    '   oMailMerge.Model.Printer(0).Value= "FreePDF XP"
    '   oMailMerge.Model.Printer(0).Value = "KONICA MINOLTA 362/282/222 PS"
    '   oMailMerge.FileNameFromColumn = True
    '   oMailMerge.Filenameprefix = "Dateiname"
       Dim MyProps() as Object
       oMailMerge.execute(MyProps())

Mail Merge

von Korny1986 » Mo, 01.03.2010 17:49

Hi Leute!

Hab folgendes Problem: Ich will einen Serienbrief per Makro drucken. Klappt mit MailMerge soweit ganz gut nur habe ich keine Ahnung wie ich ihm den Drucker zuteile. Hab unten schon herum gebastelt jedoch kam nichts dabei raus! Es kommt keine Fehlermeldung, jedoch befolgt er auch nicht den Befehl den ich ihm gegeben habe sondern druckt weiterhin über "FreePDF XP" anstatt über den KONICA.

Vielleicht kann mir ja einer von euch einen Tipp geben was ich falsch mache

Danke
MFG
Korny

Code: Alles auswählen

	Dim oMailMerge as Object
	
	oMailMerge = createunoservice("com.sun.star.text.MailMerge")
	oMailMerge.DataSourceName = "Datenbank"
	oMailMerge.DocumentURL = ConvertToUrl("C:\Vorlagen\Serienbrief.ott")
	oMailMerge.CommandType = 3
	oMailMerge.Command = "SELECT Col1 FROM Tabelle WHERE Col2 = 'String'"
	oMailMerge.OutputType = 1
'	oMailMerge.OutputUrl = ConvertToUrl("C:\Test\")
'	oMailMerge.SaveAsSingleFile = True
	oMailMerge.SinglePrintJobs = False
'	oMailMerge.Model.Printer(0).Value= "FreePDF XP"
	oMailMerge.Model.Printer(0).Value = "KONICA MINOLTA 362/282/222 PS"
'	oMailMerge.FileNameFromColumn = True
'	oMailMerge.Filenameprefix = "Dateiname"
	Dim MyProps() as Object
	oMailMerge.execute(MyProps())

Nach oben