ms-access - 在 Access 2010 中构建搜索表单

标签 ms-access vba ms-access-2010

我正在尝试为 access 2010 制作搜索客户表单。

我喜欢有一个基于查询搜索的选项组。我做了一个搜索查询,寻找名字或姓氏。表单上还有两个文本框来填写查询输入(名字和姓氏)

我需要选项组,以便我可以选择结果名称进行预订。

过去,我使用子表单和复选框间接地做到了这一点。 然后在子表单和复选框(重新查询)上加载两个结果,因此用户只需在复选框上进行选择。但是这次我希望选项是查询结果本身!请帮忙。

最佳答案

这是一个使用列表框的简单示例:

表:客户

ID - 自动编号
姓氏 - 文本(255)
名字 - 文本(255)
电子邮件 - 文本 (255)

测试数据:

ID  LastName    FirstName       Email
--  ----------  --------------  ------------------
1   Thompson    Gord            gord@example.com
2   Loblaw      Bob             bob@example.com
3   Kingsley    Hank            hank@example.com
4   Thompson    Hunter S.       hunter@example.com
5   Squarepants Spongebob       ss@example.com
6   O'Rourke    P. J.           pj@example.com
7   Aldrin      Edwin "Buzz"    buzz@example.com

表单布局:

DesignView

此表单的 VBA 模块:

Option Compare Database
Option Explicit

Private Sub Form_Load()
Me.lstSearchResults.RowSource = ""
End Sub

Private Sub btnSearch_Click()
Me.lstSearchResults.SetFocus
Me.lstSearchResults.Value = Null
Me.lstSearchResults.RowSource = _
        "SELECT ID, LastName, FirstName FROM Clients " & _
            "WHERE LastName LIKE ""*" & DQ(Me.txtSearchLastName.Value) & _
                "*"" AND FirstName LIKE ""*" & DQ(Me.txtSearchFirstName.Value) & "*"""
End Sub

Private Function DQ(s As Variant) As String
' double-up double quotes for SQL
DQ = Replace(Nz(s, ""), """", """""", 1, -1, vbBinaryCompare)
End Function

Private Sub btnLookupEmail_Click()
If IsNull(Me.lstSearchResults.Value) Then
    Me.txtEmail.Value = ""
Else
    Me.txtEmail.Value = DLookup("Email", "Clients", "ID=" & Me.lstSearchResults.Value)
End If
End Sub

第一次打开表单时,一切都是空的。

FirstOpened

键入“thompson”(不带引号)并单击 btnSearch 会用客户端 WHERE LastName LIKE "*thompson*" 填充列表框。 (如果您查看代码,您会发现如果您提供 FirstName,它也会匹配 FirstName。)

SearchResults

在列表框中选择一项并单击btnLookupEmail,电子邮件地址将显示在下面的文本框中。

EmailFound

关于ms-access - 在 Access 2010 中构建搜索表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15670881/

相关文章:

ms-access - VBA检查对象是否已设置

ms-access - 一旦在 VBA/Access 2003 中设置,就无法从字典中提取值

vba - Excel VBA - 为什么包含数字的分割字符串的算术比较有效?

sql - Access 更新到今天的日期

ms-access - 断开与引用数据库的链接

ms-access - MS-Access : I can't figure out why the error message is not showing up

c# - 使用 Access 数据库部署 C# 应用程序,无需安装 Access

java - 无需 IDE 的 ucanaccess jdbc 连接

excel - 安装多个证书时使用 "setClientCertificate"

vba - 在组合框和列表框上为 ListFillRange 使用表格列