我正在为员工数据库开发一个 vba 表单,其中有一个用户 ID 的搜索条件,并且带有用户 ID 的员工姓名应该显示在来自单个表的列表框控件中
我需要根据充当搜索框的文本框中的值(例如:userid)用表中的值填充列表框
请帮助我如何做到这一点
我正在为员工数据库开发一个 vba 表单,其中有一个用户 ID 的搜索条件,并且带有用户 ID 的员工姓名应该显示在来自单个表的列表框控件中
我需要根据充当搜索框的文本框中的值(例如:userid)用表中的值填充列表框
请帮助我如何做到这一点
你的问题很难回答,因为它取决于搜索字段的数据类型等一些东西。所以这个答案在其中一些点上会很模糊......
首先,您需要使用搜索条件创建列表框,该条件将在表单上查找搜索值并进行相应过滤。
您可以通过设置列表框的 RowSource 属性来做到这一点。这是一个列表框的示例行源,它在表单上查找其过滤器值的文本框...
SELECT tblAgencies.AgencyID, tblAgencies.OrganizationName
FROM tblAgencies
WHERE (((tblAgencies.OrganizationName)
Like "*" & nz([Forms]![frmMainMenu2]![txtSearchAgencies],"") & "*"))
ORDER BY tblAgencies.OrganizationName;
关键部分是 Like... 行。关于它的一些事情......请注意,查询会根据某些条件查看表单。您可以在查询的 [Forms]![frmMainMenu2]![txtSearchAgencies] 部分看到这一点。所以在 frmMainMenu2 上有一个名为 txtSearchAgencies 的搜索文本框。
另请注意,我正在使用 NZ 函数来确保查看该文本框至少返回一个空字符串。最后请注意,它在两端使用带有通配符的 Like 运算符,以便用户可以键入部分字符串。
最后...在您的搜索框旁边放一个命令按钮来执行过滤器/搜索。它所要做的就是像这样请求列表框......
Me.lstAgencies.Requery。
您还可以尝试在 OnChange 事件中重新查询,该事件将在他们键入时进行过滤。但是,如果您的查询速度很慢,这可能效果不佳。
赛斯
我同意麦克。我只是使用 AfterUpdate 事件而不是我从未使用过的 LostFocus。
假设您有一个表 TABLE1,其中包含字段 userid、员工。您应该创建一个具有组合框(名为 boxid)和文本框(名为 EdtEmployee)的表单。定义组合框的行源值,例如
SELECT table1.userid FROM table1 WHERE employee like EdtEmployee & "*";
然后像这样定义一个文本框的 lostfocus 事件
Private Sub EdtEmployee_LostFocus()
BoxId.Requery
End Sub
我希望,这对你有用