none
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!

    Sonntag, 11. März 2018 18:06

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/

    Sonntag, 11. März 2018 22:00
  • 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!

    Montag, 12. März 2018 09:06
  • 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

    Montag, 12. März 2018 12:15
    Moderator