如何识别为它们定义了列总计的 notesView 列?
How to identify notesView columns that have column totals defined for them?
我有几个视图在这些视图的某些列中定义了 'column totals'。总计在每个视图中可以位于不同的位置。在我扫描这些列和视图之前,我正在寻找一种快速、可靠的方法来识别哪些列具有总计。
理想情况下,我希望在列定义 (NotesViewColumn) 上使用 'isTotal' 属性,但 属性 不是 defined/available。
我可以看到 ColumnValues 数组中的总计确实 return 一个存在列的 'double' 数据类型,但是我只有在开始扫描视图中的数据后才能看到这一点,在我开始查看数据之前,我需要这个细节。 (有关信息,类别 notesViewEntry 的 ColumnValues 是一个数组,其中包含:cat 列的字符串,未统计字段的 'empty' 和总计的双精度数)。
我(当然)可以在某个地方硬编码这个细节,但必须这样做似乎过时了。我可以 'getFirstDoc' 在 'pre-loop' 检查中计算出 ColumnValues,但这似乎 'wasteful'.
PS:我看到了一个叫做 'ColumnValuesIndex' 的东西,但这似乎是一个我不想使用的未记录的功能。但是,如果有 'isTotal' 未记录的功能 - 我会同意的!
在扫描数据之前,我能想到的唯一解决方案是将视图设计导出到 DXL,然后检查 DXL 中指定每列是否显示总计的属性或元素。
为此,我假设 DXL 中的视图列具有属性或子元素。我没查过。
如果您从未做过这样的事情,将 NotesDXLExporter
与 NotesDOMParser
或 NotesSAXParser
结合使用,您可以将选定的设计元素导出到内存中的 DXL并以编程方式对其进行分析。
如原文 post 中所述,查看类别行上 NotesViewEntry (NVE) 的 ColumnValues 确实提供了一个值数组,您可以使用这些值来确定任何特定列是否是类别字符串、空或总计。总计的数据类型为双精度,因此在循环中跨过列可以轻松标记总计。
如果视图有类别,则视图中的第一个 NVE 将提供这些详细信息。一个简单的 'NotesView.GetFirstEntry().ColumnValues' 将 return 数组。如果视图有总计,但没有类别,您可以 'GetLastEntry' 视图底部的总计行。
读取总计只是查找类别行 (nve.IsCategory) 并从 nve.ColumnValues.
中提取总计的情况
性能合理,可以通过在总计存在的位置构建布尔数组预循环来提高性能。
我有几个视图在这些视图的某些列中定义了 'column totals'。总计在每个视图中可以位于不同的位置。在我扫描这些列和视图之前,我正在寻找一种快速、可靠的方法来识别哪些列具有总计。
理想情况下,我希望在列定义 (NotesViewColumn) 上使用 'isTotal' 属性,但 属性 不是 defined/available。
我可以看到 ColumnValues 数组中的总计确实 return 一个存在列的 'double' 数据类型,但是我只有在开始扫描视图中的数据后才能看到这一点,在我开始查看数据之前,我需要这个细节。 (有关信息,类别 notesViewEntry 的 ColumnValues 是一个数组,其中包含:cat 列的字符串,未统计字段的 'empty' 和总计的双精度数)。
我(当然)可以在某个地方硬编码这个细节,但必须这样做似乎过时了。我可以 'getFirstDoc' 在 'pre-loop' 检查中计算出 ColumnValues,但这似乎 'wasteful'.
PS:我看到了一个叫做 'ColumnValuesIndex' 的东西,但这似乎是一个我不想使用的未记录的功能。但是,如果有 'isTotal' 未记录的功能 - 我会同意的!
在扫描数据之前,我能想到的唯一解决方案是将视图设计导出到 DXL,然后检查 DXL 中指定每列是否显示总计的属性或元素。
为此,我假设 DXL 中的视图列具有属性或子元素。我没查过。
如果您从未做过这样的事情,将 NotesDXLExporter
与 NotesDOMParser
或 NotesSAXParser
结合使用,您可以将选定的设计元素导出到内存中的 DXL并以编程方式对其进行分析。
如原文 post 中所述,查看类别行上 NotesViewEntry (NVE) 的 ColumnValues 确实提供了一个值数组,您可以使用这些值来确定任何特定列是否是类别字符串、空或总计。总计的数据类型为双精度,因此在循环中跨过列可以轻松标记总计。
如果视图有类别,则视图中的第一个 NVE 将提供这些详细信息。一个简单的 'NotesView.GetFirstEntry().ColumnValues' 将 return 数组。如果视图有总计,但没有类别,您可以 'GetLastEntry' 视图底部的总计行。
读取总计只是查找类别行 (nve.IsCategory) 并从 nve.ColumnValues.
中提取总计的情况性能合理,可以通过在总计存在的位置构建布尔数组预循环来提高性能。