RunTime Ошибка 13 Несоответствие типов VBA Access 2007 - PullRequest
2 голосов
/ 06 февраля 2012

Я уверен, что это, вероятно, что-то простое, поэтому я прошу прощения заранее.На самом деле я впервые пишу на 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 и попытался добавить символы «#», а также множество других символов вокруг секции Me.txtClassID.Value строки SQL.При наведении курсора на строку SQL я вижу правильное значение «Class ID =» (в данном случае «2»), но при наведении курсора на строку SQL отображается «= empty».

Какой простой вещью я пренебрегаюзамечать?Заранее спасибо за помощь!

1 Ответ

3 голосов
/ 06 февраля 2012

Неправильная часть Set присваивания для строки. Вы используете Set только для объектов (например, объектов ADODB). Примитивные типы данных (строковые, целые и т. Д.) Используют простое присваивание.

т.е.

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

Также я не думаю, что ";" необязательно при выполнении SQL из ADODB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...