Как построить поиск по ключевым словам с точным флажком в форме в MS Access 2007? - PullRequest
0 голосов
/ 27 мая 2020

Я создал форму поиска по ключевым словам в 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.

1 Ответ

0 голосов
/ 27 мая 2020

С тех пор я понял это, не требовалось, чтобы я сбрасывал каждую строку, мне просто нужно было установить SQL в результате одного из следующих:

Private Sub btn_Town_CitySearch_Click()
    Dim SQL As String

    If chkbox_SearchExact = True Then
        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 [Town/City] = '" & Me.txt_Town_CitySearch & "'" _
        & "ORDER BY tbl_Types.Types, tbl_AllData.Name; "

    Else
        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 [Town/City] LIKE '*" & Me.txt_Town_CitySearch & "*'" _
        & "ORDER BY tbl_Types.Types, tbl_AllData.Name; "

    End If

    Me.subAllDataList.Form.RecordSource = SQL
    Me.subAllDataList.Form.Requery

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...