我正在为员工数据库开发一个vba表单,因为有一个用户ID和员工姓名的搜索条件,用户ID应该显示在一个列表框控件中,该控件来自单个表
我需要根据文本框中作为搜索框的值(例如:userid)填充表中值的列表框
请帮我怎么做
答案 0 :(得分:2)
你的问题很难回答,因为它取决于某些事情,例如搜索字段的数据类型等等。所以这个答案在其中一些问题上会模糊不清......
首先,您需要使用搜索条件创建列表框,该搜索条件将在搜索值的表单上查找并相应地进行过滤。
您可以通过设置列表框的RowSource属性来完成此操作。 HEre是一个列表框的示例行源,它在表单上查找其过滤器值的文本框...
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事件中进行Requery,它会在键入时进行过滤。但是如果你的查询很慢,这可能效果不好。
赛斯
答案 1 :(得分:0)
假设您有一个表TABLE1,其中包含字段userid,employee。 您应该创建一个具有组合框(名为boxid)和文本框(名为EdtEmployee)的表单。 定义组合框的行源值,如
SELECT table1.userid FROM table1 WHERE employee like EdtEmployee & "*";
然后定义像这样的文本框的lostfocus事件
Private Sub EdtEmployee_LostFocus()
BoxId.Requery
End Sub
我希望,这对你有用
答案 2 :(得分:0)
我同意mik。 我只是使用AfterUpdate事件而不是我已经使用过的LostFocus。