使用具有多个条件的文本框搜索多个字段

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

对于VBA来说是全新的,并且通常是编码。我正在使用数据库,正在尝试为其进行搜索。

数据库具有诸如文档编号,文档日期和不同平台的字段

[我正在使用的搜索表单具有一个显示数据库的子表单,在搜索文本框中每按一次键,该数据库就会变成uodatrd,有点像Google搜索。

问题是,我需要文本框执行2件事。首先,我需要能够在其中放置多个条件,并以逗号分隔。例如,我可以搜索文档所基于的参数,例如日期,标题和平台(“ Android报告1,2020年1月21日,Android”)。然后,我需要文本框来搜索数据库中的所有字段,并仅向我显示具有我所输入的所有条件的记录。

抱歉,所有这些听起来都很混乱,这是我第一次在这里提出问题,如前所述,我是编码整体的初学者。

提前感谢

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

在未绑定的表单上放置3个文本框(txtDocument,txtDate和txtPlatform),一个命令按钮(cmdSearch)和一个列表框(lstSearch)。将列表框设置为3列。然后,在命令按钮的OnClick事件中,放置以下VBA代码:

Private Sub cmdSearch_Click()
    On Error GoTo E_Handle
    Dim strSQL As String
    If Len(Me!txtDocument) > 0 Then
        strSQL = strSQL & " AND DocumentNumber='" & Me!txtDocument & "' "
    End If
    If IsDate(Me!txtDate) Then
        strSQL = strSQL & " AND DocumentDate=" & Format(Me!txtDate, "\#mm\/dd\/yyyy\#")
    End If
    If Len(Me!txtPlatform) > 0 Then
        strSQL = strSQL & " AND Platform='" & Me!txtPlatform & "' "
    End If
    If Left(strSQL, 4) = " AND" Then
        strSQL = " WHERE " & Mid(strSQL, 5)
    End If
    strSQL = "SELECT DocumentNumber, DocumentDate, Platform " _
        & " FROM tblDocument " _
        & strSQL _
        & " ORDER BY DocumentDate, DocumentNumber, Platform;"
    Me!lstSearch.RowSource = strSQL
sExit:
    On Error Resume Next
    Exit Sub
E_Handle:
    MsgBox Err.Description & vbCrLf & vbCrLf & "cmdSearch", vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume sExit
End Sub

这将检查每个文本框中是否有数据,并建立SQL字符串的where部分。请注意,它将DocumentNumber和Platform的数据用单引号引起来,因为它们是文本,并且将DocumentDate的数据格式化为明确的日期,并将其包裹在八叉戟(“#”)中。最后,它将这条SQL插入到SQL SELECT语句中,以用作ListBox的RowSource。

问候,

© www.soinside.com 2019 - 2024. All rights reserved.