2017-09-21 1 views
0

Word의 텍스트 양식 필드를 회사의 Access Database에서 테이블 항목으로 채우려합니다.VBA를 사용하여 Microsoft Word를 사용하여 액세스에서 데이터베이스 레코드를 검색하는 방법

지금까지 회사의 프로젝트 번호로 콤보 상자를 채우는 사용자 폼이 있습니다. 사용자가 선택한 프로젝트의 클라이언트 정보를 제출할 때 Word 문서의 텍스트 양식 필드에 입력하면됩니다.

제 문제는 테이블에서 프로젝트 번호를 찾고 레코드에 액세스하는 것입니다. 'Find First'함수 다음에 Recordset 값을 확인하면 테이블의 첫 번째 레코드를 반환합니다. - 콤보 상자를 사용하고 마법사를 따라 설정해야 올바른 레코드를 선택하는 Access 폼을 사용하여

'Access Database 
Dim db As Database 

Dim rst As Recordset 

Dim strPath As String 

Dim doc As Document 

Set doc = ThisDocument 

strPath = "string path name" 

Set db = OpenDatabase(strPath) 

Set rst = db.OpenRecordset("Word Report Query") 

rst.FindFirst "Project Number = " & ProjectBox.Value 
+2

사용을 초기화 할 때 내가 드롭 다운 상자 옵션을 채우기 위해 데이터베이스를 사용하기 때문에

'Access Database Dim db As Database Dim rst As Recordset Dim strPath As String Dim doc As Document Set doc = ThisDocument strPath = "path name" Set db = OpenDatabase(strPath) Set rst = db.OpenRecordset("Word Report Query") 'Find Selected Record Do While rst![Project Number] <> ProjectBox.Value rst.MoveNext Loop ActiveDocument.FormFields("Company").Result = rst![Client] ActiveDocument.FormFields("Email").Result = EmployeeBox.Value ActiveDocument.FormFields("Date").Result = DateBox.Value If rst![Consultant] <> Null Then ActiveDocument.FormFields("Addressing").Result = rst![Consultant] End If 

프로젝트 번호에 대한 오류 점검이 없습니다. [] 안에 동봉하십시오. [Project Number]는 텍스트 또는 숫자 유형입니까? – June7

+0

'FindFirst' 호출 후에'rst.NoMatch' 속성을 검사하여 검색이 성공했는지 여부를 확인할 수도 있습니다. –

답변

0

:

여기에 지금까지 내 코드입니다.

Word 병합은 Word 작업 - Access 테이블 또는 쿼리 또는 Excel 시트에 연결되는 서식 파일을 설정할 수 있음 - 및 해당 데이터 원본을 사용하여 Word 서식 파일에 데이터를 삽입하는 기능 집합입니다. /의사.

또는 Access를 사용하여 보고서를 만든 다음 rtf Word 파일로 내보낼 수 있습니다.

0

나는 while 루프를 사용하여 데이터베이스를 검색했다. 아마도 가장 좋은 해결책은 아니지만 신뢰할 수있는 방식으로 레코드 집합을 찾을 수있는 유일한 방법 일 것입니다. 사용자 정의 폼이 문제의 원인이 될 수있는 필드 이름 공간의

'Populate Project Box Dropdown 
Do While Not rst1.EOF 

ProjectBox.AddItem rst1(0) 

rst1.MoveNext 

Loop 
관련 문제