运行时错误13类型不匹配VBA Access 2007

时间:2012-02-06 03:47:07

标签: ms-access vba runtime-error type-mismatch

我确信这可能很简单,所以我提前道歉。这实际上是我第一次写VBA而且我遇到了一个问题,我根本无法解决这个问题。我已经搜索并尝试了多种方法,但是尽管我尝试了任何东西仍然存在同样的问题。

我只是打开一个新记录集,使用SQL从另一个表中填充值,从记录集中检索值,然后在表单上的某些标签上设置标题。我的代码:

Dim oconStudents As ADODB.Connection
Dim orsStudents As ADODB.Recordset
Dim strStudentsSQL As String

Set oconStudents = CurrentProject.AccessConnection
Set orsStudents = New ADODB.Recordset
Set strGetCustIDSQL = _
    "SELECT [CustomerID] FROM [Students Classes] WHERE [Class ID] = " & _
    Me.txtClassID.Value & ";"

orsStudents.Open strGetCustIDSQL, oconStudents, adOpenForwardOnly, _
    adLockReadOnly, adCmdTable

With orsStudents
   If Not orsStudents.EOF Then
       lblStudent1.Caption = orsStudents.Fields.Item(0)
       orsStudents.MoveNext
   End If
End With

我运行此操作,并在此行中收到运行时错误13:

Set strGetCustIDSQL = _
    "SELECT [CustomerID] FROM [Students Classes] WHERE [Class ID] = " & _
    Me.txtClassID.Value & ";"

我不能为我的生活找出原因。我在查询中运行SQL,它正确地为我返回我的值。我已将adCmdTable更改为adCmdText,并尝试在SQL字符串的Me.txtClassID.Value部分周围添加“#”符号以及许多其他字符。将鼠标悬停在SQL字符串上,我可以看到正确的“Class ID =”值(在本例中为“2”),但将鼠标悬停在SQL字符串上会显示“= empty”。

我忽略了什么简单的注意事项? 在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

字符串赋值的Set部分不正确。您只对对象使用Set(例如ADODB对象)。原始数据类型(字符串,整数等)使用简单赋值。

strGetCustIDSQL = _
    "SELECT [CustomerID] FROM [Students Classes] WHERE [Class ID] = " & _
    Me.txtClassID.Value & ";"

我也不认为“;”从ADODB执行SQL时是不可靠的。