【问题标题】:How to identify notesView columns that have column totals defined for them?如何识别为它们定义了列总计的 notesView 列?
【发布时间】:2017-06-07 09:16:08
【问题描述】:

我有几个视图在这些视图的某些列中定义了“列总计”。总计可以在每个视图中的不同位置。在我扫描这些列和视图之前,我正在寻找一种快速、可靠的方法来识别哪些列具有总计。

理想情况下,我希望列定义 (NotesViewColumn) 上有一个“isTotal”属性,但该属性未定义/可用。

我可以看到 ColumnValues 数组中的总计确实返回存在列的“双”数据类型,但是只有在开始扫描视图中的数据后才能看到这一点,并且在开始之前我想要这个详细信息看着数据。 (有关信息,类别 notesViewEntry 的 ColumnValues 是一个数组,其中包含:字符串表示 cat 列,“空”表示未计字段,双精度数表示总计。

我可以(当然)在某处硬编码这个细节,但必须这样做似乎过时了。我可以“getFirstDoc”在“预循环”检查中计算出 ColumnValues,但这似乎“浪费”。

PS:我看到了一个名为“ColumnValuesIndex”的东西,但这似乎是一个我不想使用的未记录功能。但是,如果有一个“isTotal”未记录的功能 - 我会接受的!

【问题讨论】:

    标签: lotus-notes lotus-domino lotusscript


    【解决方案1】:

    在扫描数据之前,我能想到的唯一解决方案是将视图设计导出到 DXL,然后检查 DXL 中指定每列是否显示总计的属性或元素。
    我假设 DXL 中的视图列为此目的具有属性或子元素。我没查过。

    如果您从未做过类似的事情,使用 NotesDXLExporterNotesDOMParserNotesSAXParser,您可以将选定的设计元素导出到内存 DXL 并以编程方式对其进行分析。

    【讨论】:

    • 感谢您的回答。与检查单个文档的 columnsValues 'pre-loop' 或读取预先计算的 DXL 摘要相比,DXL 提取可能要慢得多且复杂得多。理想情况下,我只想要一些简单的东西,可以在扫描这些视图之前动态检查。
    【解决方案2】:

    如原始帖子中所述,查看类别行上的 NotesViewEntry (NVE) 的 ColumnValues 确实提供了一个值数组,您可以使用这些值来确定任何特定列是类别字符串、空还是总计.总计的数据类型为双精度,因此在循环中遍历列可以轻松标记总计。

    如果视图有类别,那么视图中的第一个 NVE 将提供这些详细信息。一个简单的“NotesView.GetFirstEntry().ColumnValues”将返回该数组。如果视图有总计,但没有类别,您可以为视图底部的总计行“GetLastEntry”。

    读取总数只是查找类别行 (nve.IsCategory) 并从 nve.ColumnValues 中提取总数的情况。

    性能是合理的,并且可以通过构建一个布尔数组预循环来更快地计算总数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多