Microsoft Access VBA-Ошибка времени выполнения '3075'
Я столкнулся с ошибкой времени выполнения "3075". Я новичок в VBA! >.- Могу я узнать, где все пошло не так? Я не могу ее решить...
Например, если я ввожу имя "Салли" в текстовое поле (txtMainName), при нажатии на кнопку поиска появляется ошибка.
Ошибка:
Ошибка времени выполнения '3075':
Синтаксическая ошибка (отсутствует оператор) в выражении запроса 'и [имя основного заявителя] типа 'Салли'".
Public Sub Search_Record()
Dim stDocName As String
Dim stLinkCriteria As String
Dim stLinkCriteria1 As String
Dim stLinkCriteria2 As String
stLinkCriteria = ""
stDocName = "frmDisplayInfo"
If (Me!txtMainName <> "") Then
stLinkCriteria1 = "[Main Applicant Name] Like ' " & Me![txtMainName] & "'"
stLinkCriteria = stLinkCriteria & " And " & stLinkCriteria1
End If
If (Me!txtIDNo <> "") Then
stLinkCriteria2 = "[ID No] Like ' " & Me![txtIDNo] & "'"
stLinkCriteria = stLinkCriteria & " And " & stLinkCriteria2
End If
'(*This part is highlighted*)
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.Maximize
End Sub
3 ответа:
Проблема в том, что вы присваиваете значение
Runtime error 3975
этоInvalid operator
, согласно быстрому поиску Google наaccess vba runtime error 3075
(который вы могли бы сделать сами).""
толькоstCriteria
. Если выполняется первый операторif
, тоstCriteria
присваивается значениеstCriteria AND stCriteria1
, которое является недопустимым. То же самое происходит, если выполняется второй операторif
. (На самом деле, если оба они действительно запущены,stCriteria
теперь содержитAND stCriteria1 AND stCriteria2
, что еще хуже.)Решение заключается в изменении кода чтобы добавить только
AND
, Если это необходимо:stLinkCriteria = "" stDocName = "frmDisplayInfo" If (Me!txtMainName <> "") Then stLinkCriteria = "[Main Applicant Name] Like ' " & Me![txtMainName] & "'" End If If (Me!txtIDNo <> "") Then If stLinkCriteria <> "" then stLinkCriteria = stLinkCriteria & " AND " End If stLinkCriteria2 = "[ID No] Like ' " & Me![txtIDNo] & "'" stLinkCriteria = stLinkCriteria & " And " & stLinkCriteria2 End If
Для дальнейшего использования, способ решить такого рода проблемы состоит в том, чтобы фактически исследовать значение переменной (в данном случае
stCriteria
) непосредственно перед выполнением строки, вызывающей ошибку (здесь это строкаDoCmd.OpenForm
). Это можно сделать, установив точку останова в строке, где произошла ошибка, запустив приложение до тех пор, пока не будет достигнута точка останова, а затем изучив значение переменной. Это показывает вам точно , что содержит переменная, что может раскрыть проблему.
Из логики кажется, что ваша stLinkCriteria начинается с "и", что вызывает ошибку:
Вы, вероятно, должны поставить:
If (Me!txtMainName <> "") Then stLinkCriteria1 = "[Main Applicant Name] Like ' " & Me![txtMainName] & "'" if stLinkCriteria <> "" then <==== add this stLinkCriteria = stLinkCriteria & " and " <==== and this end if <==== and this stLinkCriteria = stLinkCriteria & stLinkCriteria1 <=== change this End If
Надеюсь, что это работает - в противном случае логика выглядит хорошо.
Я получаю эту ошибку из дополнительного пространства между точкой и именем Поля в:
Примечание Для Microsoft: пожалуйста, создавайте более точные и полезные сообщения об ошибках. Спасибо. Я не сомневаюсь, что ты все сделаешь правильно.DoCmd.RunSQL "UPDATE cp INNER JOIN [char_lib] ON [cp]. [library_id] = [char_lib].[id] set..