我确信这可能很简单,所以我提前致歉。实际上,这是我第一次编写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字符串上,可以看到正确的“类ID =“值(在本例中为“2”),但是将鼠标悬停在SQL字符串上会显示“= empty”。
我忽略了什么简单的事情?
在此先感谢您的帮助!
最佳答案
字符串分配的Set
部分不正确。您只能将Set
用于对象(例如ADODB对象)。基本数据类型(字符串,整数等)使用简单分配。
即
strGetCustIDSQL = _
"SELECT [CustomerID] FROM [Students Classes] WHERE [Class ID] = " & _
Me.txtClassID.Value & ";"
我也不认为“;”从ADODB执行SQL时必须注意。
关于ms-access - 运行时错误13类型不匹配的VBA Access 2007,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9155367/