从vba中的表填充列表框

时间:2009-07-14 05:39:20

标签: sql winforms ms-access vba ms-access-2003

我正在为员工数据库开发一个vba表单,因为有一个用户ID和员工姓名的搜索条件,用户ID应该显示在一个列表框控件中,该控件来自单个表

我需要根据文本框中作为搜索框的值(例如:userid)填充表中值的列表框

请帮我怎么做

3 个答案:

答案 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。