如何使用VBA使用Microsoft Word从访问中搜索数据库记录

时间:2017-09-21 19:21:11

标签: sql vba ms-access word-vba

我希望用Word公司的Access数据库中的表条目填充Word中的Text Form字段。

到目前为止,我有一个用户表单,用公司的项目编号填充组合框。我希望当用户提交来自所选项目的客户端信息时,将其放入Word文档中的文本表单字段中。

我的问题是在表格中搜索项目编号并访问记录。当我在' Find First'之后检查Recordset值时函数它返回表中的第一条记录。

到目前为止,这是我的代码:

'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 个答案:

答案 0 :(得分:0)

使用Access表单选择正确的记录 - 应使用组合框设置并按照向导进行设置。

Word Merge是Office的功能集,其中使用Word - 可以设置链接到Access表或查询或Excel工作表的模板 - 并且该数据源用于将数据插入Word模板/文件:

或者,Access可用于创建报告,然后将其导出为rtf Word文件。

答案 1 :(得分:0)

我最终使用while循环来搜索数据库。可能不是最好的解决方案,但是我能够可靠地找到记录集的唯一方法。

'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

项目编号没有错误检查,因为我在初始化用户窗体时使用数据库填充下拉框选项

'Populate Project Box Dropdown
Do While Not rst1.EOF

ProjectBox.AddItem rst1(0)

rst1.MoveNext

Loop