【问题标题】:Access Compile error: Type mismatch on SQL Recordset Query访问编译错误:SQL 记录集查询上的类型不匹配
【发布时间】: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


【解决方案1】:

试试,

Dim rs As Recordset
Dim db As Database
Dim FileNumber As String
Set db = CurrentDb



FileNumber = Me.txtFileNumber

strSql = "SELECT tblParentRecord.FileNumber, tblChildRecord.CombinedName " _
  & " FROM tblParentRecord INNER JOIN tblChildRecord ON tblParentRecord.FileNumber = tblChildRecord.FileNumber " _
  & " WHERE tblParentRecord.FileNumber Like '" & FileNumber & "' "

Set rs = db.OpenRecordset(strSql)

【讨论】:

  • 我正要发布我的结果,但决定先刷新。这基本上就是我所做的。更改: rsQuery = "SELECT tblParentRecord.FileNumber, tblChildRecord.CombinedName " _ & " FROM tblParentRecord INNER JOIN tblChildRecord ON tblParentRecord.FileNumber = tblChildRecord.FileNumber " _ & " WHERE (((tblParentRecord.FileNumber)= " & """" & Me.FileNumber & """" & ")) " 添加:Set rs = CurrentDb.OpenRecordSet(rsQuery)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多