首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数据窗口计算字段(PowerBuilder)中包含过滤过的行

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

Stack Overflow用户
提问于 2014-01-10 17:39:34
回答 2查看 1.7K关注 0票数 2

我有一个有两个组(公司和部门)的数据窗口。我需要显示公司的总金额,即使用户已经通过部门过滤。

数据场景

代码语言:javascript
复制
Company   Department Role       EmpCount
ABC       X          Managers       2
ABC       X          Employees     33
ABC       Y          Managers       1
ABC       Y          Employees      9

我需要部门组(第2组)的组总数只包括该部门的总数(sum(第2组的EmpCount))。这很管用。

我需要公司集团(第一组)的集团总数包括所有部门的计数(sum(EmpCount为第1组)或(sum( ALL )。

但是,当用户过滤数据窗口仅显示"X“部门的行时,公司组的组总数现在只反映了一个部门(35)的数据,但我需要的总是显示所有(45)的数据。

数据窗口也是可编辑的,因此该值必须是计算字段,而不是检索的值。

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

EN

回答 2

Stack Overflow用户

发布于 2014-01-13 09:33:15

与在数据窗口上使用filter函数不同,您最终可以在要隐藏的组的高度属性上使用修改函数。在这种情况下,计算和( ...for all)将为45。

票数 0
EN

Stack Overflow用户

发布于 2015-07-29 15:05:57

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

  1. 将数据窗口筛选器存储到本地字符串以供以后使用。
  2. 通过dw_1.SetRedraw关闭数据窗口重绘(False)
  3. 使用SetFilter和Filter函数清除过滤器
  4. 得到任何你需要的计数
  5. 使用SetFilter和filter恢复原始筛选器
  6. 通过dw_1.SetRedraw重新绘制数据窗口(True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21050836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档