首页 > 解决方案 > 我想知道为什么我会收到这个错误?

问题描述

(假条目和文件目录)

这是我在尝试运行从查询中获取值并将它们分配到单词 .docx 上的书签位置的宏时遇到的错误

这是它失败的那条线

Set rs = CurrentDb.OpenRecordset("Query1", dbOpenDynaset)

这是 vba 代码从中获取值的查询

SELECT Table1.ProjectNo, Table1.FirstName, Table1.LastName, Table1.Phone, Table1.ProjectName, Table1.EMail, Table1.Client
FROM Table1
WHERE (((Table1.LastName) Like "*" & [Forms]![Form3]![SearchBox] & "*"));

Private Sub Command9_Click()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim rs As DAO.Recordset


Set wApp = New Word.Application
Set wDoc = wApp.Documents.Open("C:\Documents\ECORtester.docx")
Set rs = CurrentDb.OpenRecordset("Query1", dbOpenDynaset)

If Not rs.EOF Then rs.MoveFirst

Do Until rs.EOF

    wDoc.Bookmarks("Attention").Range.Text = Nz(rs![FirstName], "") & Nz(rs![LastName], "")
    wDoc.Bookmarks("Client").Range.Text = Nz(rs![Client], "")
    wDoc.Bookmarks("Email").Range.Text = Nz(rs![Email], "")
    wDoc.Bookmarks("Phone").Range.Text = Nz(rs![Phone], "")
    wDoc.Bookmarks("ProjectName").Range.Text = Nz(rs![ProjectName], "")
    wDoc.Bookmarks("ProjectNumber").Range.Text = Nz(rs![ProjectNo], "")
    wDoc.SaveAs2 "C:\Documents" & rs!ProjectNumber & "_ECORtester.docx"
    rs.MoveNext
    
Loop
End Sub

    

标签: vbams-access

解决方案


基于具有未定义/未设置动态参数的查询对象的记录集将不起作用。相反,基于表的记录集并在 VBA 中构建 SQL。

strSQL = "SELECT * FROM Table1 WHERE LastName Like "*" & [Forms]![Form3]![SearchBox] & "*"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

将 LIKE 与通配符一起使用可能会返回多个客户端。如果有多个姓氏相同/相似的人,他们都可以被检索到。如果您只需要一个客户端,则使用唯一记录 ID 作为筛选条件。组合框可能比自由格式输入文本框更有用。使用代码,组合框可以实现模式匹配和“键入时过滤”功能,但随后会从列出的项目中进行选择,并且可以使用唯一 ID。


推荐阅读