Я создал форму поиска по ключевым словам в MS Access, которая отлично работает, но пока использую только LIKE, я могу без проблем выполнить точный поиск по ключевым словам. Что я действительно хочу сделать, так это добавить возможность переключаться на точное или нет.
Мы можем захотеть показать результаты, которые относятся только к «Nottingham», или мы можем захотеть показать результаты, которые включают «nott».
(Два нижеприведенных набора кода предназначены для другого поиска функции, поэтому имеют разные имена)
Вот код VBA, который я в настоящее время запускаю для поиска LIKE:
Private Sub btn_NameSearch_Click()
Dim SQL As String
SQL = "SELECT tbl_AllData.Customer_ID, tbl_Types.Types, tbl_Types.Type_ID, tbl_AllData.Name, tbl_AllData.[Town/City], tbl_AllData.Postcode, tbl_AllData.[Main Contact], tbl_AllData.Phone, tbl_AllData.Email, tbl_AllData.Website " _
& "FROM tbl_Types INNER JOIN tbl_AllData ON tbl_Types.Type_ID = tbl_AllData.Type_ID " _
& "WHERE [Name] LIKE '*" & Me.txt_NameSearch & "*'" _
& "ORDER BY tbl_Types.Types, tbl_Alldata.Name; "
Me.subAllDataList.Form.RecordSource = SQL
Me.subAllDataList.Form.Requery
End Sub
Вот код VBA, который я пытаюсь реализовать возвращает только #NAME?:
Private Sub btn_Town_CitySearch_Click()
Dim SQL As String
Dim SQLExact As String
Dim SQLLike As String
If chkbox_SearchExact = True Then
SQLExact = "SELECT tbl_AllData.Customer_ID, tbl_Types.Types, tbl_Types.Type_ID, tbl_AllData.Name, tbl_AllData.[Town/City], tbl_AllData.Postcode, tbl_AllData.[Main Contact], tbl_AllData.Phone, tbl_AllData.Email, tbl_AllData.Website " _
& "FROM tbl_Types INNER JOIN tbl_AllData ON tbl_Types.Type_ID = tbl_AllData.Type_ID " _
& "WHERE [Town/City] = '*" & Me.txt_Town_CitySearch & "*'" _
& "ORDER BY tbl_Types.Types, tbl_AllData.Name; "
SQLExact = SQL
Else
SQLLike = "SELECT tbl_AllData.Customer_ID, tbl_Types.Types, tbl_Types.Type_ID, tbl_AllData.Name, tbl_AllData.[Town/City], tbl_AllData.Postcode, tbl_AllData.[Main Contact], tbl_AllData.Phone, tbl_AllData.Email, tbl_AllData.Website " _
& "FROM tbl_Types INNER JOIN tbl_AllData ON tbl_Types.Type_ID = tbl_AllData.Type_ID " _
& "WHERE [Town/City] LIKE '*" & Me.txt_Town_CitySearch & "*'" _
& "ORDER BY tbl_Types.Types, tbl_AllData.Name; "
SQLLike = SQL
End If
Me.subAllDataList.Form.RecordSource = SQL
Me.subAllDataList.Form.Requery
End Sub
Сообщите мне, если вам еще что-нибудь нужно увидеть. Я чувствую, что именно так я устанавливаю строку SQL в конце каждого результата оператора IF.