2014-04-01 356 views
1

我正在尝试在VBA中执行SQL查询以重新调用特定的案例编号。无论何时执行查询,它都会返回“数据类型在标准表达式中不匹配”的错误。我传递查询一个整数用于查询自动编号主键。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) 

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

回答

1

如果CASE_ID_NBR有数字型,你应该使用它不带引号:

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

你可能还需要阅读:Global Variables in SQL statement

+1

完美,那工作。我仍然试图围绕这个SQL的东西。格式化让我失望。当我允许时,我会接受答案。我会稍微阅读一下。谢谢! – 1337Atreyu

+0

一般来说,当使用'“SELECT ... WHERE Field1 = 1”(numeric)'“SELECT ... WHERE Field1 =#01/01/12#”'(日期)和'“SELECT”时,常见错误。 .. Where Field1 ='sometext'“'(text) –