【发布时间】:2021-03-19 21:45:00
【问题描述】:
我一直在寻找记录集的 SQL 查询。如果我将查询注释掉,我不会收到类型不匹配错误,所以我相对有信心它在这个查询中。该查询在 Access 的“查询”窗口中也可以正常工作(没有将其导入 VBA 的引号)。我一辈子都无法弄清楚为什么会出现编译错误:类型不匹配。它总是到最后一个'&'。我想我在下面发布了所有相关代码。请帮忙?我确实打算最后把它移到一个字符串变量中,但我想先让它工作。
编辑:我可以通过进行如下所述的更改来解决类型不匹配的问题。但是,现在我收到 424 错误。如果我将它输出到调试窗口并将输出粘贴到访问中的 SQL 查询窗口中,我会得到我期望的结果,但由于某种原因 VBA 不喜欢它。
Dim rs As DAO.Recordset
Dim FileNumber As String
FileNumber = Me.txtFileNumber
Set rs = "SELECT tblParentRecord.FileNumber, tblChildRecord.CombinedName " _
& " FROM tblParentRecord INNER JOIN tblChildRecord ON tblParentRecord.FileNumber = tblChildRecord.FileNumber " _
Added: & " WHERE (((tblParentRecord.FileNumber)= " & """" & Me.FileNumber & """" & ")) "
Removed:& " WHERE (((tblParentRecord.FileNumber) LIKE'" & FileNumber & "*" & "'))')
【问题讨论】:
-
前进进度。我将最后一行更改为 & " WHERE (((tblParentRecord.FileNumber)=" & Me.txtFileNumber & "));"现在我得到一个 424,object required 错误。我会去打,看看我能不能解决这个问题。稍后,我将在一个与表单的链接所在的变量后面插入一个变量,以便我可以将其提取到一个模块中。如果我修复它,我将重新发布最终代码。如果有人有简单的建议,我会接受。
-
我觉得like后面应该有空格。 WHERE tblParentRecord.FileNumber) LIKE '" & FileNumber & "* '"
-
谢谢。我不认为是这样。我将此输出作为字符串输出到 MsgBox,然后将输出粘贴到新的 SQL 查询窗口中。在我在 FileNumber 变量输出周围加上引号之前,我仍然收到错误消息。我不知道如何保留变量引用并在 VBA 中添加引号。我尝试使用 Chr(34),它在 Msgbox 中看起来不错,并且当我粘贴到我的查询窗口时可以工作,但仍然输出错误。我试过 & """ & FileNumber & """,但它会导致 VBA 将 FileNumber 读取为文本而不是变量。
标签: sql vba ms-access compiler-errors