2016-07-25 6 views
0

클라이언트 데이터베이스를 만들었습니다. 데이터베이스에서 각 클라이언트는 고유 한 회사 ID로 그룹화됩니다. 사용자는 주 양식의 다음 셀에 회사 ID를 입력하여 회사의 모든 고객을 검색 할 수 있습니다.Access subform에서 Word로 편지 병합을 수행하는 버튼을 만들어야합니다.

([Forms]![frmNavigationForm]![Text78]) 

지금은 기본 양식의 단추를 클릭하여 하위 양식에서 단어로 편지 병합을 수행하려고합니다.

내가 다음 링크에서 몇 가지 아이디어를 가지고 : Access and Word 2010 merging one record depending on subform button clicked

는 문제 : 코드를 실행하려고하면 , 그것은 시간 오류 "4198"를 실행 보여줍니다 : 명령이 실패했습니다.

나는이 명령

.OpenDataSource Name:=sData, SQLStatement:=strSQL 

을 강조했다 사람이 어떻게 오류를 수정하는 방법을 말해 줄래 디버깅 실행하면?

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

이. sData/Data – dbmitch

답변

0

아마도 데이터 소스의 이름이 비어있을 수 있습니다.

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

가 있어야한다 : 나는 생각

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

과 같이 쉽게 찾을 수없는 오타를 쉽게 찾을 수 있습니다. 나는 이미 그것을 고쳤다. 그래서 나는 그것이 문제라고 생각하지 않는다. – Raymundo21

0

이 모듈 코드의 상단에 Option Explicit를 추가합니다.

@ 피터 당신이 당신의 SQL 함께 몇 가지 이름을 합병처럼

그것은 또한 당신이 당신이 무슨 일을하는지 알고 있다고 가정 보이는 다른 선언되지 않은 또는 오타 오류 변수에 의해 식별 된 문제를 찾아 낼 것입니다

당신의 SQL 문 - 테이블 이름을 잊어 버렸습니다 - 또는 실제로 정의한 쿼리/테이블을 사용하고 있습니다 [frmNavigationForm]![frmKYCGenerator]

테이블 이름을 언급하지 않았으므로 후자를 가정합니다. 이 경우 ...

변경 당신은 코드의 상단에`옵션 Explicit`를 추가해야

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

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

도움을 주시고 저를 시정 해 주셔서 감사합니다. [frmNavigationForm]은 기본 폼이고 [frmKYCGenerator]는 하위 폼입니다. 그래서 저는 성명서를 대신 다음과 같이 변경했습니다. STRSQL = [양식]을! [frmNavigationForm]!는 [Text78] 하지만 지금은 데이터베이스가 저를 말하고있다 "는 ODBC를 마이크로 소프트 액세스 드라이버 로그인 실패"* [양식]! [frmNavigationForm] [RS ID] FROM = 선택 " "다음 파일을 찾을 수 없습니다. "C : \ ~~~ \ Database - Users - PR.mdb" 왜 currect 파일 형식 (.accdb)을 인식하지 못하는지 알고 있습니까? – Raymundo21

+0

위의 코드를 변경하여 실제로 처리중인 내용을 표시하십시오. 그리고 자신의 디버깅 목적을 위해'Debug '를 사용해야합니다.Print' 또는'Msgbox'를 사용하여'.OpenDataSource'에 전달되는 것을 보여줍니다. – dbmitch

+0

데이터를 가져 오려는 Access 테이블의 이름은 무엇입니까? 양식 이름에 SQL 조회를 실행할 수 없습니다. – dbmitch