从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中的表填充列表框的主要内容,如果未能解决你的问题,请参考以下文章
访问 VBA - 使用 VBA 的 SQL 语句使用文本框组合框值在表单上填充列表框 OR