1

我正在处理基于列表的 infopath 2010 表单/视图。

我有 7 个单独的复选框字段,我想通过提交按钮下的规则来检查至少应该选择其中一个。

尝试执行此操作并检查条件,它允许我一次最多检查 5 个字段。

在提交数据之前,如何检查这 7 个复选框中的至少一个?

4

3 回答 3

2

您可以通过将最后一个条件更改为“表达式”并根据需要使用“和”或“或”来创建复合条件来克服这个问题。因此,例如,如果您需要确保 field1 和 field2 都不为空,您可以使用以下表达式:

     my:myFields/my:field1 != "" and my:myFields/my:field2 != ""

如果您需要帮助确定表达式的正确语法,首先使用下拉菜单设置条件(例如,在第一个下拉菜单中选择 field1,然后在第二个下拉菜单中选择“不是空白”),然后更改首先下拉到“表达式”——无论您的条件是什么,都会自动填充到表达式的框中。将其粘贴到文本编辑器中,然后对其余条件执行相同操作。根据需要在它们之间添加和或或,你就有了你的表达方式!

资料来源: http: //www.infopathdev.com/forums/p/14871/52819.aspx

于 2013-02-04T20:08:28.690 回答
1

我有一个类似的问题并避免使用“表达式”选项,因为在允许用户针对某些场景提交表单之前,我有很多条件要检查,而且调试和故障排除会非常困难。我还考虑了 Glen 的基于求和的解决方案,因为它使故障排除变得困难,因为您无法真正判断缺少哪个条件,并且您无法对正确选择或填写的内容执行逻辑检查。

我的解决方案是设置一个文本 CheckStatus 字段和一个数字 CheckStatus-Value 字段。当满足所需条件时,测试字段上的规则将向 CheckStatus 字段添加值。当 CheckStatus-Value 字段达到“幻数”(下例中为 6)时,我将允许用户提交表单。例如,CheckStatus-Value 和 CheckStatus 字段如下所示,但在表单准备好用于生产时会隐藏: CheckSum-Value 和 CheckSum 字段

然后对于每个所需的字段,我分配一个从“A”到“Z”,或从“a”到“z”,或从“0”到“9”的唯一字母,并测试所需的条件。通过这种方式,您可以测试多达 62 个并发条件,但这有点疯狂 每次 CheckStatus 字段更改时,都会运行一个规则来计算值的数量并更新 CheckStatus-Value: 更新 CheckSum-Value 字段

如果条件为真并且 CheckStatus 字段尚未包含分配给该字段的唯一字母/数字,则我将分配的数字/字母(使用 concat 函数)添加到 CheckStatus 字段。如果空白值在特定条件下是有效值,那么我会在满足该条件时为该字段添加字母/数字,因此准备提交的表单在 CheckStatus-Value 字段中始终具有相同的值。(如果将有效值更改为不同的有效值,请确保字母/数字仅添加一次到 CheckStatus 字段。) 将值 A 添加到 CheckStatus 字段   如果条件为 False,则删除分配的数字/字母(使用翻译函数)来自 CheckStatus 字段。 从 CheckStatus 字段中删除值 A

IF the field being tested (Field-A) is dependent on another field (Field-B), I also add the Field-A rule to Field-B, so the user does not have to touch Field-A to update the CheckStatus. Be careful when copy-pasting the rules; remember InfoPath will change field names automatically! I also added the “’Add-x”’ rules to the Form Load rules (on the Data tab) to update CheckStatus every time the record is loaded. Hope this helps! -Steve

于 2018-09-28T13:21:03.577 回答
0

这是一个想法:使用一个整数字段,并在 7 个复选框中的每一个上添加一个规则,将 1 添加到该字段。然后你的最终验证规则只需要确保整数字段大于零

(如果一个框在被选中后未被选中,最好也有一个减去 1 的规则。)

-格伦

于 2012-03-08T00:24:57.293 回答