Fragensteller
Serienbrief aus Access 2010 anstoßen

Allgemeine Diskussion
-
Hallo
ich versuche schon seit Tagen, einen Serienbrief aus Access anzustoßen.
Ich möchte das über ODBC Treiber machen, aber der Befehl misslingt.
Weiterhin wäre es super, wenn ich im SQL Statement auf eine gespeicherte Prozedur zugreifen könnte.
Was mache ich falsch?
Public Sub getMailMerge() Dim oApp As New Word.Application Dim oMainDoc As Word.Document Dim sData As String Dim mDoc As String mDoc = "p:\test.docx" dim sql as string sql = "{exec dbo.pW_SELECT_TaFilter}" 'sql = "select * from taInteressen" Dim conODBC As String conODBC = "ODBC;DRIVER={SQL Server Native Client 11.0};SERVER=.\meinServer;DATABASE=meineDB;Trusted_Connection=Yes" Set oMainDoc = oApp.Documents.Add(mDoc) With oMainDoc.MailMerge .MainDocumentType = wdFormLetters .OpenDataSource name:="", Connection:=conODBC, SQLStatement:=sql .Destination = wdSendToNewDocument .Execute End With oMainDoc.Close SaveChanges:=0 oApp.Activate oApp.Documents.Parent.visible = True oApp.Application.WindowState = 1 oApp.ActiveWindow.WindowState = 1 ' Set oApp = Nothing Set oMainDoc = Nothing End Sub
Liebe Grüße, die Luzie!
- Typ geändert Stefan FalzModerator Samstag, 31. März 2018 18:50 Keine Rückmeldung des Fragestellers
Alle Antworten
-
Am 11.03.2018 schrieb Luzie:
ich versuche schon seit Tagen, einen Serienbrief aus Access anzustoßen.
Ich möchte das über ODBC Treiber machen, aber der Befehl misslingt.Was passiert stattdessen? Nichts oder fängt der Herd an zu tanzen?
Weiterhin wäre es super, wenn ich im SQL Statement auf eine gespeicherte Prozedur zugreifen könnte.
Die SP über eine gespeicherte PT-Abfrage ausführen lassen. Oder über eine VBA-Funktion:
Public Function AnzahlDStblSoftware(strTable As String) As Integer On Error GoTo Fehler: AnzahlDStblSoftware = 0 Dim db As DAO.Database Dim rs As DAO.Recordset If strConnect = "" Or IsNull(strConnect) Then strConnect = GetODBC() End If Set db = DBEngine.Workspaces(0).OpenDatabase("", False, False, strConnect) Dim strSQL As String strSQL = "AnzahlDS " & strTable db.Execute strSQL, dbSQLPassThrough Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot, dbSQLPassThrough) AnzahlDStblSoftware = rs!Anz exit_AnzahlDStblSoftware: Exit Function Fehler: Dim i As Integer For i = 0 To Errors.Count - 1 Call HandleError(mModName & ".AnzahlDStblSoftware() as Integer" & Errors(i)) Next i Resume exit_AnzahlDStblSoftware End Function
In strConnect wird der ODBC-Verbindungsstring geholt, so kann ich
einfacher zwischen Live, Test oder sonstigen DBs unterscheide.
AnzahlDS ist eine SP die als Parameter einen String(Tabellennamen)
erwartet.In einer PT-Abfrage schreibst Du nur ein EXEC DeineSP rein, falls Du
Parameter übergeben musst/möchtest, musst Du den Teil der PT on the
fly abändern.#Servus
Winfried
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm Access-Stammtisch: http://www.access-muenchen.de
NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/
vbeTwister: http://www.vbetwister.com/ -
Hallo
sorry, der Fehler lautet: Befehl misslungen.
Aber nochmal zur Klarstellung, eine Verbindung über ODBC mit einer Pass Through Abfrage oder über ein Recordset oder zu eine gespeicherten Prozedur ist bei mir absolut möglich. Darum ging es in meiner Frage nicht.
Ich möchte mit einem o.g. Script in Word einen Serienbrief anstoßen und da funktioniert die genannte ODBC Verbindung nicht. Ist es möglicherweise im Script falsch geschrieben worden? Ich habe so nach Beispiele gesucht, aber ich finde keine.Liebe Grüße, die Luzie!
-
Hallo Luzie,
such zuerst mal nach den englischen Fehlermeldung, evtl. wirst Du da eher fündig.
https://www.google.de/search?q=word+mailmerge+Command+failed
Ansonsten setz mal einen Breakpoint, debug die Prozedur und teile uns dann mit, welche Codezeile genau diesen Fehler verursacht.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community