vba - 我想知道为什么我会收到这个错误?
问题描述
(假条目和文件目录)
这是我在尝试运行从查询中获取值并将它们分配到单词 .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
解决方案
基于具有未定义/未设置动态参数的查询对象的记录集将不起作用。相反,基于表的记录集并在 VBA 中构建 SQL。
strSQL = "SELECT * FROM Table1 WHERE LastName Like "*" & [Forms]![Form3]![SearchBox] & "*"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
将 LIKE 与通配符一起使用可能会返回多个客户端。如果有多个姓氏相同/相似的人,他们都可以被检索到。如果您只需要一个客户端,则使用唯一记录 ID 作为筛选条件。组合框可能比自由格式输入文本框更有用。使用代码,组合框可以实现模式匹配和“键入时过滤”功能,但随后会从列出的项目中进行选择,并且可以使用唯一 ID。
推荐阅读
- macos - 为较旧的 Mac OS 版本构建 golang 应用程序的正确方法是什么?
- android - 华为定位包在室内无法获取到我的位置
- python - 该列表如何在 django 中返回值和键
- javascript - 在 Typescript 中使用外部 JS-Library(基本原语图)
- javascript - 如何使用 JavaScript 检查另一个元素中是否有一个元素
- java - 无法解析intellij中的符号jsonobject
- python - 图形大小随颜色条变化
- python - 在pygame中单击图像时如何运行函数?
- android-studio - 我不知道我的代码有什么问题
- kotlin - 发送不和谐心跳后客户端关闭连接,而不和谐响应 4002 错误代码