【发布时间】:2014-11-23 20:44:02
【问题描述】:
我有一个包含三个列表框和一个子表单的主表单。我想建立一个允许我在子表单和三个列表框之间切换链接的例程。这可能吗?还是我必须创建同一个子表单的三个副本并隐藏两个而另一个激活?
为了实用,我的表单会这样工作:子表单包含参与项目的人员的记录列表、他们的具体角色以及他们来自哪个内部团队。我想使用三个列表框来允许用户通过以下任一方式过滤此表单:
(1) 来自某个团队的所有参与者 (2) 所有参与者按角色(职务) (3) 按参与者名称过滤
我的不足之处是如何重新链接子表单上的过滤器,以便当用户从一个过滤器传递到另一个过滤器时,它会从一个列表框变为另一个列表框。
使用下面 Krish 的建议作为一个简单的测试,我正在尝试以下代码,但在记录源行上收到一条编译错误消息,指出无法找到方法或数据成员。不知道这意味着什么:
Private Sub lstRoles_AfterUpdate()
Dim SQL_GET As String
SQL_GET = "SELECT * from tblProjectGovernanceResources where ((role like '" & lstRoles.Value & "')"
Me.frmProjectGovernanceResources.RecordSource = SQL_GET
End Sub
【问题讨论】:
-
请更具体地说明您想要实现的目标,表单的行为方式。
-
我编辑了解释。谢谢
-
您将向每个列表框的“更新后”事件添加代码。在代码中,创建所需的过滤器(您的“WHERE”子句),然后创建所需的 SQL,并更新子表单的 RECORDSOURCE。即'select * from Table1 where MyID = 'xxxx';'
-
谢谢韦恩。所以我的理解是,也许我必须在基础表(记录)中创建一个列来标记列表框选择的记录,并根据我在记录源上创建的标记在我的表单上进行过滤?您是否也能快速解释一下使用列表框识别该值的最佳方式?我的初学者级直觉告诉我,我必须使用 DAO 从列表框中获取唯一 ID,将其存储在某处,然后更新我的记录源?很抱歉造成混乱。
-
您的表格应该已经包含您要过滤的三个字段;如果不是,那么为不存在的项目提供列表框对我来说毫无意义。这些字段可能都在同一个表中,也可能在相关表中。假设您为子表单定义了一个查询并且它具有这些字段,我将使用 VBA 代码根据选择更改 WHERE 子句(或表单过滤器)。给我一点时间,我会发布一些代码。
标签: ms-access vba ms-access-2010