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..