多选查找字段数据到VBA

时间:2018-05-04 08:13:48

标签: vba ms-access

最终,我希望根据在多选查找中检查哪些值以及允许的数量来启用和解锁/禁用和锁定一大堆复选框。要做到这一点,首先我需要知道如何通过vba获取这些多选查找中的数据。我想。

我尝试将vba中的变量设置为其中一个字段的值,但它似乎接受的唯一数据类型是equals - 即使这样我也无法获得即时窗口,告诉我我收集到该变量的内容。

如果某个标签是多选字段中列出的标签之一,我需要vba才能计算出来。

现在有了进一步的解释/背景,真实的例子:让我们说你可以根据这本书的作者和类型来选择一本书的颜色"拥有"。每个作者和流派都有可变数量的颜色,你可以选择,范围有限。

让我们说这本书是由鲍勃提供的,他被允许使用红色,蓝色,橙色和黄色2,它是一本幻想书,可以是红色,白色,灰色,黑色和紫色中的3种。

表单上所有红色,蓝色,黄色,橙色,白色,灰色,黑色和紫色的复选框都会启用和解锁,而其余所有复选框都保持锁定和禁用状态,因为它们根本不可用。

  • 用户选择红色 - 除了选中该框之外没有变化。
  • 用户也选择蓝色 - 没有变化,除了那个盒子 选择,因为虽然2(最大允许)的鲍勃的颜色是 选中,红色也在幻想列表中,其中仍有2个 剩余。重叠可以节省更多。
  • 用户取消选择红色,然后选择黄色 - 红色仍然可用 (幻想)但是橙色现在被禁用并锁定。
  • 用户选择红色,白色和紫色 - 禁用灰色和黑色 并锁定,因为所有选项现已用尽。

现在,如果你想让我了解它的全部工作方式,那很棒,但我现在真正要求的是如何掌握那些多选字段中的数据。其余的是上下文等。

1 个答案:

答案 0 :(得分:1)

多选字段(记录集或控件)的.Value属性在Access中定义为变量数组。这意味着您需要使用数组函数来获取值。

你可以读取这样的值:

rs.Fields("MyMultiValuedField").Value(0) 'First value
Join(rs.Fields("MyMultiValuedField").Value, ", ") 'Concatenated values

并设置如下值:

rs.Fields("MyMultiValuedField").Value = Array("Value1", "Value2")

请注意,在查找字段中,会存储密钥,而不是要查找的值。根据我的经验,MVF在使用VBA进行分配时具有最少的验证,您甚至可以插入错误类型的值导致垃圾。