2

我有一个包含 2 个组(公司和部门)的数据窗口。即使用户已按部门过滤,我也需要显示公司的总金额。
数据场景

Company   Department Role       EmpCount
ABC       X          Managers       2
ABC       X          Employees     33
ABC       Y          Managers       1
ABC       Y          Employees      9

我需要部门组(第 2 组)的组总数仅包括该部门的计数(总和(第 2 组的EmpCount)) ......这是有效的。
我需要公司组(第 1 组)的组总数来包括所有部门的计数(总和(第 1 组的EmpCount))(总和(所有的EmpCount)),虽然最初有效。

但是,当用户过滤数据窗口以仅显示“X”部门的行时,公司组的组总数现在仅反映一个部门的数据(35),但我需要它始终显示所有(45 ) .
数据窗口也是可编辑的,因此值必须是计算字段,而不是检索值。

我尝试使用 SetDetailHeight 来“隐藏”其他部门的行,这有助于保持公司组总数正确,但它仍然显示被过滤掉的部门的预告片。

4

2 回答 2

0

您最终可以在要隐藏的组的高度属性上使用修改功能,而不是在数据窗口上使用过滤器功能。在这种情况下,您的计算总和(...for all)将为 45。

于 2014-01-13T09:33:15.467 回答
0

在没有明显 UI 影响的情况下确定过滤数据的数据窗口计数。这应该可以正常工作,但如果由于某种原因您不想操作可见数据窗口,您可以创建一个快速数据存储,分配数据窗口数据对象,并使用 RowsCopy 复制行,而不是操作数据存储上的数据。这听起来很多,但除非你有数万到数十万行,否则性能损失应该不大。如果我记得 PB 有比 RowsCopy 更有效的方法 - 我认为您可以将一个数据分配给另一个数据或类似的数据 - 抱歉,我附近没有我的 PB 帮助。

  1. 将数据窗口过滤器存储到本地字符串以供以后使用。
  2. 通过 dw_1.SetRedraw(false) 关闭数据窗口重绘
  3. 使用 SetFilter 和 Filter 函数清除过滤器
  4. 获取您需要的任何计数
  5. 使用 SetFilter 和 Filter 恢复您的原始过滤器
  6. 通过 dw_1.SetRedraw(true) 重新打开数据窗口重绘
于 2015-07-29T15:05:57.697 回答