用户如何在表中拾取多条记录

时间:2016-11-25 09:08:33

标签: vba ms-access access-vba ms-access-2013

我为可能很愚蠢的问题道歉,但我已经不知道用哪个词来搜索我需要的东西了。我有很好的编程经验,但对于Access来说却是一个新手。

我有一个带控件的表单,还有一个包含人物联系人只读列表的子表单。此列表由来自多个表的动态查询填充,因此我在设计时不知道所有字段的计数和名称。用户希望能够从列表中手动接收多个联系人,以便向他们发送一封电子邮件。

我曾经用一个表控件允许用户选择多个记录(通常用ctrl)。但事实证明,在Access数据表中,只允许连续选择。

然后我想到将可编辑的复选框列添加到只读表,用户可以在其中标记所需的行。但我还没有找到一种方法在Access中如何做到这一点。似乎Append in Fields集合中的方法仅适用于表和索引,但不适用于查询或记录集。

我还阅读了删除子表单的建议,并使用属性multiselect = extended在列表框中显示数据。但在这种情况下,用户将失去表的好处:他无法移动和调整列的大小,排序和过滤数据。

我有一种感觉,决定应该非常简单,我只是不知道如何在Access中实现此功能的传统方式。请帮帮我。

2 个答案:

答案 0 :(得分:2)

这可以通过使用子表单的RecordsetClone属性来实现。这是一个例子:

Sub GetSelectedValue()

Dim rs as Recordset
Dim sContact as String

Set rs = Me.[SubFormName Goes Here].Form.RecordsetClone    
rs.MoveFirst
rs.Move Me.[SubFormName Goes Here].Form.SelTop - 1
sContact = rs![Recordset Column Name Goes Here] 

Set rs = Nothing
End Sub

您可以通过一个按钮控件将它放在主窗体上,该控件接受活动行联系并将该名称放入主窗体上的列表框中。一旦用户做出了所有选择,您就可以从列表框中的名称中运行您的电子邮件程序。

答案 1 :(得分:1)

如果您需要数据表(用于过滤,排序,调整大小),那么可编辑复选框确实是您唯一的选择。

该列可以是原始表的一部分,也可以创建一个带有ID和check列的连接表,您可以在其中添加基表的所有记录中的ID。

在子表单中,您可以设置除Locked = True的复选框以外的所有控件。