Это недопустимый синтаксис SQL. Идентификаторы (например, для имен столбцов) не могут содержать пробелы или специальные символы, кроме _
. Если они есть, вы должны заключить имя в квадратные скобки.
Также пропущен пробел перед FROM
и между Oldsys_Main
и WHERE
, потому что разрывы строк находятся внутри самого кода VBA, но не внутри созданной строки. Если вы хотите добавить разрывы строк в строке, вы можете сделать это с помощью "first line" & vbCrLf & "second line"
. Но SQL отлично работает в одной строке.
Dim strSource As String, strSearch As String
strSearch = Replace(searchBox.Text, "'", "''")
strSource = "SELECT [Paraiškos ID], [Veikliosios m pavadinimas], [Sugalvotas VP pavadinimas] " _
& "FROM Oldsys_Main " _
& "WHERE [Paraiškos ID] LIKE '*" & strSearch & "*' " _
& "Or [Veikliosios m pavadinimas] LIKE '*" & strSearch & "*' " _
& "Or [Sugalvotas VP pavadinimas] LIKE '*" & strSearch & "*' "
Также замените одинарные кавычки в тексте поиска двумя одинарными кавычками, чтобы избежать их. Текст типа Let's go
становится 'Let''s go'
.
Вы можете проверить SQL следующим образом:
- Откройте окно Immediate с помощью Ctrl-G .
Скопируйте, вставьте в него код и измените его следующим образом (начните с "?", Что эквивалентно Debug.Print
, замените переменную strSearch
реальной текстовой строкой (например, "est"
). Затем нажмите ввод
? "SELECT [Paraiškos ID], [Veikliosios m pavadinimas], [Sugalvotas VP pavadinimas]" _
& "ОТ Oldsys_Main" _
& "WHERE [Paraiškos ID] LIKE '*" & "est" & "*'" _
& "Или [Veikliosios m pavadinimas] LIKE '*" & "est" & "*'" _
& "Или [Sugalvotas VP pavadinimas] LIKE '*" & "est" & "*'"
Результат будет напечатан так (в одну строку):
SELECT [Paraiškos ID], [Veikliosios m pavadinimas], [Sugalvotas VP pavadinimas] ИЗ Oldsys_Main ГДЕ [Paraiškos ID] КАК '* est *' Или [Veikliosios m pavadinimas] LIKE '* est *ot vasvavas Suváv Or [Sugal ] НРАВИТСЯ '* est *'
Скопируйте этот результат в буфер обмена и создайте новый запрос в режиме конструктора. Переключитесь в представление SQL и вставьте в него результат.
Теперь выполните запрос. Вы увидите, работает ли он, или вы получите сообщение об ошибке. Также становятся очевидными синтаксические ошибки, такие как пропущенные пробелы.