MS Access从列表框中检索值

时间:2019-03-19 18:11:16

标签: vba ms-access access-vba

更新:2019/3/20 在子线程对话(如下)之后,我重命名了ListBox。 ItemsSelected属性工作。值仍返回NULL int代码


这是我第一次处理Access中的多选列表。我有一个带有一些下拉菜单,复选框和一个列表框的报告表单。列表框包含将近70个项目-我们称它们为“城市”。

ListBox允许多个选择。在VBA中,我要从表单上的其他控件中获取每个参数,以创建一个巨大的WHERE条件,该条件可以满足我的报告要求。

问题是Access无法读取从ListBox中选择的值。当我逐步执行该行代码时,该值为NULL。

到目前为止:

Dim s As Variant
s = Me.City.Value & "" 

这是我知道我弄错了的地方,但是,以前没有处理多选ListBox,我不知道读取值的语法。

下一步:检查是否在列表“ s”中选择了值:

If s <> "" Then

在当前WHERE条件下检查其他参数。如果不存在,那么

If c.WhereCondition = "" Then
c.WhereCondition =

通过将列表值(字符串)与Source表中等效字段的Yes / No值进行比较来设置WHERE条件。

我必须将列表值与表中的70个字段进行比较-才能提取出匹配的记录。

否,没有1个字段-例如城市,有70个可能的值。相反,可能的70个城市中的每一个都是其自己的“是/否”字段。我继承了这个数据库。这是它的建造方式。

目前,我对此的尝试如下:

c.WhereCondition = "( City1 = -1 OR City2 = -1 OR City3 = -1 OR .....)

`如果当前WHERE子句中有参数,然后将“列表”与“源”表中的值进行比较,并使用“与”将ANDEND结果与WHERE条件进行比较

ELSE
       c.WhereCondition = c.WhereCondition & " AND (City1 = -1 OR City2 = -1, OR ...)

    End If
    End If

我希望我能对此做足够的解释。第一个问题是读取值。没有那,我不知道我的比较尝试是对还是错。

1 个答案:

答案 0 :(得分:0)

这带了很多面包屑让我来这里!

解决方案:

target_link_libraries(${PROJECT_NAME} PRIVATE
    protobuf::libprotobuf
    protobuf::libprotoc
)
  1. 我不得不将控制权从“县”重命名为“县”。看起来前者是该报告的一部分,并且搞砸了其他所有内容。我是在最初删除并重新添加控件后执行此操作的。

  2. 这里的评论确实有用。我只需要弄清楚如何使用这些属性才能得到我想要的东西。

  3. 我必须将70个yes / no字段与数据进行比较,仅提取那些返回True的字段。因此为-1。

它编译。它运行。手指交叉以确保数据准确性。

谢谢!