更新: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
我希望我能对此做足够的解释。第一个问题是读取值。没有那,我不知道我的比较尝试是对还是错。
答案 0 :(得分:0)
这带了很多面包屑让我来这里!
解决方案:
target_link_libraries(${PROJECT_NAME} PRIVATE
protobuf::libprotobuf
protobuf::libprotoc
)
我不得不将控制权从“县”重命名为“县”。看起来前者是该报告的一部分,并且搞砸了其他所有内容。我是在最初删除并重新添加控件后执行此操作的。
这里的评论确实有用。我只需要弄清楚如何使用这些属性才能得到我想要的东西。
我必须将70个yes / no字段与数据进行比较,仅提取那些返回True的字段。因此为-1。
它编译。它运行。手指交叉以确保数据准确性。
谢谢!