2016-07-25 3 views
0

Ich erstellte eine Client-Datenbank. In der Datenbank ist jeder der Clients nach einer eindeutigen Firmen-ID gruppiert. Der Benutzer kann alle Mandanten im Unternehmen durchsuchen, indem er in der folgenden Zelle des Hauptformulars eine Firmen-ID eingibt.Ich muss eine Schaltfläche erstellen, um Seriendruck von Access-Teilformular zu Word

Im Moment möchte ich Seriendruck vom Unterformular zu Word nach, indem Sie auf eine Schaltfläche auf dem Hauptformular klicken.

ich einige Ideen auf den folgenden Link bekommen: Access and Word 2010 merging one record depending on subform button clicked

Ausgabe: Wenn ich versuche, den Code auszuführen, zeigt es an der Zeit Fehler laufen „4198“: Befehl fehlgeschlagen.

Wenn ich laufe, debuggen die dieser Befehl

hervorgehoben wurde
.OpenDataSource Name:=sData, SQLStatement:=strSQL 

Kann mir jemand sagen, wie der Fehler zu beheben?

Private Sub Command203_Click() 

Dim mDoc As String 
Dim strSQL As String 

mDoc = "C:\~~~\800052 ENG w Macro titus.docx" 
strSQL = "SELECT * FROM![frmNavigationForm]![frmKYCGenerator] WHERE [RS ID]=" & [Forms]![frmNavigationForm]![Text78] 

Dim oApp As New Word.Application 
Dim oMainDoc As Word.Document 
Dim sData As String 

    oApp.Visible = True 
     Data = "C:\~~~\Database - Users - PR.accdb" 

    Set oMainDoc = oApp.Documents.Open(mDoc) 

     With oMainDoc.MailMerge 
     .MainDocumentType = wdFormLetters 
     .OpenDataSource Name:=sData, SQLStatement:=strSQL 
     End With 

    With oMainDoc 
     .MailMerge.Destination = wdSendToNewDocument 
     .MailMerge.Execute 
    End With 

    oApp.Activate 
    oApp.Documents.Parent.Visible = True 
    oApp.Application.WindowState = 1 
    oApp.ActiveWindow.WindowState = 1 

Set oApp = Nothing 
Set oMainDoc = Nothing 

Exit Sub 

Err_Handle: 
    Set oApp = Nothing 
    Set oMainDoc = Nothing 
     MsgBox "An error occurred..." & vbCrLf & vbCrLf & Err.Description 
End Sub 
+0

Sie sollten eine 'Option Explicit' nach oben in Ihrem Code hinzuzufügen. Macht es einfacher, schwer zu vertippende Tippfehler wie sData/Data – dbmitch

Antwort

0

Vielleicht ist der Name Ihrer Datenquelle leer. Ich denke, dass:

Data = "C:\~~~\Database - Users - PR.accdb" 

sein sollte:

sData = "C:\~~~\Database - Users - PR.accdb" 
+0

guten Haken zu finden. Ich repariere es bereits, also glaube ich nicht, dass das das Problem ist. – Raymundo21

0

eine Option Explicit nach oben Ihr Modul Code hinzufügen.

, dass das Problem identifiziert durch @ Peter und alle anderen nicht deklarierten oder Tippfehler Fehlervariablen finden würde

Es sieht auch wie Sie ein paar Namen zusammen in der SQL- fusionierte ich nehme an, Sie wissen, was Sie tun in Ihrem SQL-Anweisung - Entweder haben Sie den Tabellennamen vergessen - oder Sie verwenden die Abfrage/Tabelle, die durch [frmNavigationForm]![frmKYCGenerator]

definiert ist Da Sie keinen Tabellennamen erwähnen, gehe ich von letzterem aus. dies in diesem Fall ...

ändern

strSQL = "SELECT * FROM![frmNavigationForm]![frmKYCGenerator] WHERE [RS ID]=" & [Forms]![frmNavigationForm]![Text78] 

Zu diesem

strSQL = "SELECT * FROM [" & [Forms]![frmNavigationForm]![frmKYCGenerator] & "] WHERE [RS ID]=" & [Forms]![frmNavigationForm]![Text78] 
+0

Danke für die Hilfe und die Korrektur. [frmNavigationForm] ist das Hauptformular und [frmKYCGenerator] ist das Unterformular. Also habe ich stattdessen die Aussage in folgendes geändert. strSQL = "SELECT * FROM [Formular]! [FrmNavigationForm] WHERE [RS ID] =" & [Formulare]! [FrmNavigationForm]! [Text78] Aber jetzt sagt mir die Datenbank "ODBC Microsoft Access Treiber Login fehlgeschlagen "und konnte die folgende Datei nicht finden. "C: \ ~~~ \ Database - Benutzer - PR.mdb" Wissen Sie, warum es das aktuelle Dateiformat (.accdb) nicht erkennt? – Raymundo21

+0

Ändern Sie Ihren Code oben, um zu zeigen, womit wir uns gerade beschäftigen. Und für Ihre eigenen Debugging-Zwecke sollten Sie 'Debuggen 'verwenden.Klicken Sie auf "Print" oder "Msgbox", um anzuzeigen, was an ".OpenDataSource" übergeben wird. – dbmitch

+0

Wie lautet der Name der Access-Tabelle, von der Sie Daten abrufen möchten? Sie können keine SQL-Abfrage für einen Formularnamen ausführen. – dbmitch

Verwandte Themen