【发布时间】:2012-06-08 05:11:23
【问题描述】:
我正在用一些数据填充 DataWindow。一些列名称是“请求编号”、“状态”等。
“Status”列可以包含“Pending”、“Active”、“Expired”等值。
每当填充 DataWindow 时,我都想计算 PowerBuilder 中状态为“活动”的记录数。
在获得记录计数后,我将在一些静态文本中填充计数。
任何人都可以帮助我,如何实现这一点,因为我是 PowerBuilder 的新手。
谢谢
【问题讨论】:
我正在用一些数据填充 DataWindow。一些列名称是“请求编号”、“状态”等。
“Status”列可以包含“Pending”、“Active”、“Expired”等值。
每当填充 DataWindow 时,我都想计算 PowerBuilder 中状态为“活动”的记录数。
在获得记录计数后,我将在一些静态文本中填充计数。
任何人都可以帮助我,如何实现这一点,因为我是 PowerBuilder 的新手。
谢谢
【问题讨论】:
这将为您提供答案,但它会向您介绍我们 PowerBuilder 开发人员所熟知的“波浪号地狱”。
ll_Count = Long (dw.Describe ("Evaluate('sum (if((status = ~~~"Active~~~"),1,0))',1)"))
波浪号疯狂与每个级别的字符串评估将表达式归结为下一次评估有关。 (~~ 归结为 ~,而 ~" 归结为 " 如果您的字符串用双引号括起来,这很有用)
Describe() 内的Evaluate(<expression>, <row>) 将返回给定行上<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()
【讨论】: