2015-05-05 3 views
-1

Я пытаюсь создать поисковую форму в MS Access 2013, каждый раз, когда я вставить критерии поиска в любом из полей создается я получаю сообщение об ошибкеошибка синтаксиса (отсутствующий оператор) в выражении запроса

" ошибка синтаксиса (отсутствующий оператор) в выражении запроса "* FROMWHERE (FirstName), как "Godswill"" И»

находкой ниже кодов

<blink> 
Private Sub cmdSearch_Click() 
On Error GoTo errr 
Me.qryCandInfo_subform.Form.RecordSource = "SELECT*FROM" & BuildFilter 
Me.qryCandInfo_subform.Requery 
Exit Sub 
errr: 
MsgBox Err.Description 
End Sub 
Private Function BuildFilter() As Variant 
Dim varWhere As Variant 
Dim tmp As String 
tmp = """" 
Const conSetDate = "\#dd\/mm\/yyyy\#" 
varWhere = Null 

If Me.txtEnrNo > "" Then 
varWhere = varWhere & "(Enr_No) like " & Me.txtEnrNo & "AND" 
End If 

If Me.txtFirstName > "" Then 
varWhere = varWhere & "(First_Name) like " & tmp & Me.txtFirstName & tmp & "AND" 
End If 

If Me.txtDateFrom > "" Then 
varWhere = varWhere & "((Admisssion_Year)>= " & Format(Me.txtDateFrom, conSetDate) & ") AND" 
End If 

If Me.txtDateTo > "" Then 
varWhere = varWhere & "((Admisssion_Year)<= " & Format(Me.txtDateTo, conSetDate) & ") AND" 
End If 

If IsNull(varWhere) Then 
varWhere = "" 
Else 
varWhere = "WHERE" & varWhere 

If Right(varWhere, 5) = "AND" Then 
varWhere = Left(varWhere, Len(varWhere) - 5) 
End If 
End If 
BuildFilter = varWhere 
End Function 

+0

Looks например, вам нужно добавить некоторые пробелы в строку запроса '' SELECT * FROM ", вероятно, должно быть' 'SELECT * FROM и т. д." ' – phuzi

ответ

0

Существует много неправильного кода.
Чтобы сделать его легким для вас и всех участвующих: Добавить пробелы до и после каждого ключевого слова:

"SELECT*FROM" & BuildFilter => "SELECT * FROM " & BuildFilter 
& "AND" => & " AND " 
varWhere = "WHERE" & varWhere => varWhere = " WHERE " & varWhere 
& ") AND" => & ") AND " 

Кроме того, вы не хватает для specfify таблицу, которую необходимо выбрать из ...
Кроме того ваш SQL имеет завершающий AND. Либо позаботьтесь об этом, либо выберите не очень совершенный способ присоединения 1: varWhere = " WHERE " & varWhere & " 1". (Ваша версия проверяет окончание с некоторыми 5 символов и сравнить с And - что никогда не должно быть правдой ...)

Кроме того: SQL-инъекции ... Я сомневаюсь, что до и appening """" меняет что-нибудь

Смежные вопросы