如何在MS Access 2007的表单中的确切复选框中建立关键字搜索?

问题描述 投票:0回答:1

我已经在MS Access上建立了一个关键字搜索表单,该表单运行得很好,但是到目前为止仅使用LIKE,我就可以使其成为准确的关键字搜索没有问题。我真正想要做的是添加选项以切换为精确。

我们可能要显示仅是“诺丁汉”的结果,或者我们可能要显示包含“ nott”的结果。

(下面的两组代码针对不同的搜索功能,因此具有不同的名称)

这是我目前为LIKE搜索运行的VBA代码:

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

让我知道您还有什么需要看的。我觉得这是我在每个IF语句结果的末尾设置SQL字符串的方式。

ms-access access-vba
1个回答
0
投票

我已经弄清楚了,不需要重置每个只需要设置SQL的String,结果如下所示:

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
© www.soinside.com 2019 - 2024. All rights reserved.