我正在用一些数据填充 DataWindow。一些列名称是“请求编号”、“状态”等。
“状态”列可以包含“待定”、“活动”、“过期”等值。
每当填充 DataWindow 时,我想计算 PowerBuilder 中状态为“活动”的记录数。
在获得记录计数后,我将在一些静态文本中填充计数。
任何人都可以帮助我,如何实现这一点,因为我是 PowerBuilder 的新手。
谢谢
我正在用一些数据填充 DataWindow。一些列名称是“请求编号”、“状态”等。
“状态”列可以包含“待定”、“活动”、“过期”等值。
每当填充 DataWindow 时,我想计算 PowerBuilder 中状态为“活动”的记录数。
在获得记录计数后,我将在一些静态文本中填充计数。
任何人都可以帮助我,如何实现这一点,因为我是 PowerBuilder 的新手。
谢谢
这将为您提供答案,但它会向您介绍我们 PowerBuilder 开发人员所熟知的“波浪号地狱”。
ll_Count = Long (dw.Describe ("Evaluate('sum (if((status = ~~~"Active~~~"),1,0))',1)"))
波浪线疯狂与每个级别的字符串评估将表达式归结为下一次评估有关。(~~ 归结为 ~,而 ~" 归结为 " 如果您的字符串用双引号括起来,这很有用)
Evaluate(<expression>, <row>)
在 a 内Describe()
将返回<expression>
给定行的值。(由于与在整个数据集上运行<row>
的操作无关sum()
,您需要做的就是确保它是有效的行,即在本例中,至少有一行。)
祝你好运,
特里。
一种解决方案是使用您的条件过滤 DW 数据,然后获取行数。
就像是:
dw_ctrl.SetFilter("status='Active'")
dw_ctrl.Filter()
ll_count = dw_ctrl.RowCount()
//...
//don't forget to reset filter after that
dw_ctrl.SetFilter("")
dw_ctrl.Filter()