从vba中的表填充列表框

Posted

技术标签:

【中文标题】从vba中的表填充列表框【英文标题】:Populate list box from a table in vba 【发布时间】:2009-07-14 05:39:19 【问题描述】:

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

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

请帮助我如何做到这一点

【问题讨论】:

从标签来看,这是关于 Access - 这是正确的吗?哪个版本的访问?什么样的后端? Access 2003 和访问表是后端 见:***.com/questions/1123664/… 【参考方案1】:

您的问题很难回答,因为它取决于搜索字段的数据类型等某些因素。所以这个答案在某些方面会很模糊......

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

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

赛斯

【讨论】:

我很可能会为行源分配一个组织名称的硬连线值。如果您必须重新查询,为什么不拥有一个更清晰的 RowSource 属性(即没有控件引用)并在您要重新查询的同一事件中重新分配它? 大卫,我不明白你的问题......你能解释一下吗?赛斯【参考方案2】:

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

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

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

Private Sub EdtEmployee_LostFocus()
 BoxId.Requery
End Sub

我希望这对你有用

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于从vba中的表填充列表框的主要内容,如果未能解决你的问题,请参考以下文章

ms excel vba 填充具有不同列要求的列表框

Excel VBA - 如何从另一个控件触发列表框单击

VBA访问从级联列表框传递和编辑记录并重新查询列表框

访问 VBA - 使用 VBA 的 SQL 语句使用文本框组合框值在表单上填充列表框 OR

VBA - Access 03 - 遍历列表框,使用 if 语句进行评估

Excel VBA将组合框列表从静态范围更改为动态范围