Filter 如何在数据窗口计算字段中为Sum包含筛选的行(PowerBuilder)

Filter 如何在数据窗口计算字段中为Sum包含筛选的行(PowerBuilder),filter,expression,powerbuilder,datawindow,Filter,Expression,Powerbuilder,Datawindow,我有一个数据窗口,它有两个组(公司和部门)。即使用户已按部门筛选,我也需要显示公司的总金额。 数据场景 Company Department Role EmpCount ABC X Managers 2 ABC X Employees 33 ABC Y Managers 1 ABC Y Employees 9 我需要部

我有一个数据窗口,它有两个组(公司和部门)。即使用户已按部门筛选,我也需要显示公司的总金额。
数据场景

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)或(集团1的EmpCount)的总数,而这些部门最初都在工作

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


我曾尝试使用SetDetailHeight“隐藏”其他部门的行,这有助于保持公司组总数的正确性,但它仍然显示筛选出的部门的预告

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

确定对过滤数据的datawindow计数,而没有明显的UI影响。这应该可以很好地工作,但是如果出于某种原因您不想操纵可见的datawindow,那么您可以创建一个快速数据存储,分配datawindow dataobject,并使用RowScope复制行,而不是操纵数据存储上的数据。这听起来好像很多,但除非你有成千上万到几十万行,否则不会有太多的性能损失。如果我记得PB有一种比RowScope更有效的方法-我认为您可以将一个的数据分配给另一个的数据或类似的东西-很抱歉,我身边没有我的PB帮助

  • 将datawindow筛选器存储到本地字符串以供以后使用
  • 通过dw_1关闭数据窗口重画。设置重画(false)
  • 使用SetFilter和Filter函数清除过滤器
  • 获取您需要的任何计数
  • 使用SetFilter和filter恢复原始筛选器
  • 通过dw_1重新打开数据窗口重画。设置重画(true)