如何在Sum的数据窗口计算字段中包含过滤行(PowerBuilder)

时间:2014-01-10 17:39:35

标签: filter expression powerbuilder datawindow

我有一个包含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 for all)) whilch最初工作。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

  1. 将数据窗口过滤器存储到本地字符串以供以后使用。
  2. 关闭数据窗口重绘dw_1.SetRedraw(false)
  3. 使用SetFilter和过滤器功能清除过滤器
  4. 获取您需要的任何计数
  5. 使用SetFilter和Filter
  6. 恢复原始过滤器
  7. 通过dw_1.SetRedraw(true)
  8. 重新打开数据窗口重绘