【发布时间】:2021-02-04 02:38:43
【问题描述】:
我正在尝试找到在 AnyLogic 中创建数据库条件过滤的最佳方法。数据库,如下所示:
我要做的是在 AnyLogic 主窗口 12 中添加复选框:P1、P2、P3、...、T5、T6
如果用户勾选P1,参考上表,需要显示A和B。
如果用户勾选P2,则需要显示C
如果用户勾选了P1和T2,则需要显示A
总而言之,这就像在 Excel 中通过“x”过滤任何一组列,注意其他单元格具有空值。
首先,我使用以下代码仅过滤 P1(将条目添加到 String 类型的集合中):
collectionDescription.addAll(
selectFrom( data_base ).
where( data_base.P1.eq("x")).
list( data_base.Col1));
现在也过滤 P2,可以执行以下操作:
collectionDescription.addAll(
selectFrom( data_base ).
where( data_base.P1.eq("x")).
where( data_base.P2.eq("x")).
list( data_base.Col1));
按照上述逻辑,可以根据需要添加尽可能多的“where”条件。但是,可能的组合有很多(例如 P1/P2、P1/P2/P3、P1/P3 等。您可以想象可能的组合数量)。
所以,我想到了一个潜在的解决方案,我会添加与列一样多的“where”条件,但不是添加“.eq(“x”)”,而是添加“.eq(varP1)” .如果勾选了复选框(例如 P1),则 varP1 将等于“x”(varP1 是字符串类型的变量)。但是,如果未选中该框,理想情况下 varP1 应该采用一个表示“任何地方”的值,这样条件就不会产生任何影响。我没有设法找到模仿这种行为的方法。
抱歉,这篇文章很长,但我想确保情况尽可能清楚。那么我在正确的轨道上吗?对于如何解决这个问题,有任何的建议吗?您的建议将不胜感激。
【问题讨论】:
标签: anylogic