如何计算@DbColumn的记录数?

时间:2014-03-25 17:42:06

标签: lotus-notes lotus lotus-formula

我正在尝试使用@DbColumn为页面上的某些计算文本字段获取列值。

假设我有一个名为“按状态”的视图,如下所示:

+-------+--------+-----------+----------+------------+
| Count | Status |  Created  |  Author  |  Comments  |
+-------+--------+-----------+----------+------------+
|  134  |  Open  |           |          |            |
+-------+--------+-----------+----------+------------+
|       |        | Records with "Status" = "Open"... |
+-------+--------+-----------------------------------+
|  101  |  Hold  |           |          |            |
+-------+--------+-----------+----------+------------+
|       |        | Records with "Status" = "Hold"... |
+-------+--------+-----------------------------------+
...

非常自我解释 - 它按状态显示数据库的所有记录,并且每个状态都有一个计数(记录数)。

在我的页面上,我为每个状态都有一个计算文本字段;打开,保持等我正试图按状态计算。例如:

@Text( @DbColumn(  "Notes" : "ReCache" ; "" : "" ; "By Status"; 1 ) );

返回134,这是状态“打开”的计数。我知道这对我上面的陈述是正确的,但是,这不是我想要的。

如何为每个“状态”获取“计数”的值?使用@DbLookup或许..?

2 个答案:

答案 0 :(得分:2)

有两种不同的做法,你想做什么。 首先是为你的状态的每个值做一个@DbLookup。这看起来像这样(状态为Open的例子):

@DbLookup( "":"ReCache"; ""; "By Status"; "Open"; 1)

取决于可能变慢的状态数。

另一种方法是在计算字段中执行dbcolumn(这意味着为此目的而不是页面采用表单,但这不是真正的问题):

名为“allTotals”的字段,数字,计算显示,允许多个值,公式:

@DbColumn( "":"ReCache"; ""; "By Status"; 1)

然后在特殊状态的总计的每个值中,您需要在视图中的位置。第一状态:

@Subset( @Subset( allTotals; 1 ) ; -1 )

第二状态:

@Subset( @Subset( allTotals; 2 ) ; -1 )

...

当然,可能还有其他更复杂的处理方法......

答案 1 :(得分:1)

@DbLookup是一个解决方案。您可能希望设置一个新视图,其中“状态”列是视图中的第一列,并按字母顺序排序。第二列是计数,然后你的公式得到保持的计数将是:

@DbLookup("Notes":"NoCache"; "":""; "NewView"; "Hold"; 2);

您还应该能够使用@DbColumn获取两个相关的列表。

Statuses := @DbColumn(  "Notes" : "ReCache" ; "" : "" ; "By Status"; 2 );
Counts := @DbColumn(  "Notes" : "ReCache" ; "" : "" ; "By Status"; 1 );
NumberOnHold := @Select(@Member("Hold"; Statuses); Counts);