【问题标题】:DOORS DXL issue looping through a filtered datasetDOORS DXL 问题循环通过过滤的数据集
【发布时间】:2017-04-19 12:46:28
【问题描述】:

我有一个脚本,我在其中按某个属性值过滤模块中的数据。现在,当我遍历这些对象时,我在 infoBox 中显示对象的绝对数量。但是,该脚本显示了不在数据集中的对象的绝对数量。经过进一步调查,我发现额外的绝对数字是针对整个模块中的每个表的。我不明白为什么当这些表不在过滤的模块数据中时脚本会包含这些表。我什至尝试在此属性值上手动过滤模块,然后使用“工具->编辑 DXL”循环遍历结果项目,它仍然显示未包含的表格的数字。为什么会这样做? 这是我的代码:

bm2 = moduleVar
Filter fltr = contains(attribute "RCR_numbers", sRCRNum, false);
filtering on;
set(bm2, fltr);
for oObj in document(bm2) do {
    absNum = oObj."Absolute Number";
    infoBox("Object #" absNum ".");
}

我也尝试删除文档转换,所以它改为“for oObj in bm2 do”,但这不会改变输出。为什么代码给了我不在过滤器中的对象?任何帮助都将不胜感激,因为这是我的项目的一个高优先级问题,而我自己也没有想法。

克里斯

【问题讨论】:

  • 如果你只运行前四行代码(即只设置过滤器,但不进行计数),你看到你期望的对象集了吗?
  • 是的,我看到了应该存在的对象(即没有表格)。
  • 不确定我是否正确理解了您的问题,但您可能需要使用 perms „void showTables (bool)“ 和 “void tableContents (bool)” 更改模块的显示设置

标签: filter ibm-doors


【解决方案1】:

DOORS 9.6.1 DXL Reference Manual你可以看到:

文档中的对象

将变量 o 分配为每个连续的 模块中的对象。 相当于模块循环中的for对象, 除了包含表头对象,但不包含行头 对象或单元格。

因此,您必须使用 for object in module 或在现有循环中测试隐藏属性 TableType - 这将设置为 TableNone 对于不属于表格的任何内容,包括表格标题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 2018-05-07
    相关资源
    最近更新 更多