【问题标题】:Data type mismatch on SQL Query in VBAVBA 中 SQL 查询的数据类型不匹配
【发布时间】:2022-05-08 19:12:08
【问题描述】:

我正在尝试在 VBA 中执行 SQL 查询以重新调整特定的案例编号。每当我执行查询时,它都会返回“条件表达式中的数据类型不匹配”的错误。我正在向查询传递一个整数,用于查询自动编号主键。

    Dim c As ADODB.Connection
    Dim r As ADODB.Recordset
    Dim strSQL As String, strManager As String
    Set c = New ADODB.Connection
    c.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Commit Tracker.accdb; Persist Security Info=False;"
    strSQL = "SELECT * FROM CommitTrk WHERE CASE_ID_NBR = '" & CInt(frmCommitViewer.lstCases.Value) & "'"
    Set r = c.Execute(strSQL)

当然调试会突出执行命令。任何帮助,将不胜感激。我是否传递了错误的数据类型来匹配自动编号?如果是这样,我应该使用什么数据类型?谢谢!

【问题讨论】:

    标签: sql excel vba


    【解决方案1】:

    如果CASE_ID_NBR 是数字类型,你应该使用不带引号的:

    strSQL = "SELECT * FROM CommitTrk WHERE CASE_ID_NBR = " & CInt(frmCommitViewer.lstCases.Value)
    

    您可能还想阅读以下内容:Global Variables in SQL statement

    【讨论】:

    • 完美,成功了。我仍在努力解决这个 SQL 问题。格式让我失望。我会在允许时接受答案。我稍后会读到。谢谢!
    • 一般来说,使用"SELECT ... WHERE Field1 = 1"(数字)"SELECT ... WHERE Field1 = #01/01/2012#"(日期)和"SELECT ... WHERE Field1 = 'sometext'"(文本)是常见的错误
    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多