0

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

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

请帮助我如何做到这一点

4

3 回答 3

2

你的问题很难回答,因为它取决于搜索字段的数据类型等一些东西。所以这个答案在其中一些点上会很模糊......

首先,您需要使用搜索条件创建列表框,该条件将在表单上查找搜索值并进行相应过滤。

您可以通过设置列表框的 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 事件中重新查询,该事件将在他们键入时进行过滤。但是,如果您的查询速度很慢,这可能效果不佳。

赛斯

于 2009-07-14T14:32:35.000 回答
0

我同意麦克。我只是使用 AfterUpdate 事件而不是我从未使用过的 LostFocus。

于 2009-08-12T15:25:27.873 回答
0

假设您有一个表 TABLE1,其中包含字段 userid、员工。您应该创建一个具有组合框(名为 boxid)和文本框(名为 EdtEmployee)的表单。定义组合框的行源值,例如

SELECT table1.userid FROM table1 WHERE employee like EdtEmployee & "*"; 

然后像这样定义一个文本框的 lostfocus 事件

Private Sub EdtEmployee_LostFocus()
 BoxId.Requery
End Sub

我希望,这对你有用

于 2009-07-16T05:30:42.463 回答