怎样得到行数据在分组里的排序号

fallstone 2003-05-07 08:47:10
就是分组DW。
在每个分组里按某个字段排序,然后显示按这个字段排序后,记录的名次。比如:

A B C 名次
ASD 3SD 9 1
ASD 342D 6 2
ASD SD34 3 3

小计

以上按A分组,按C排序,名次字段就是现在的样子。我就不知道最后这个名次列怎么得到值
...全文
68 点赞 收藏 22
写回复
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
fallstone 2003-05-09
dibov(迪波威) 说的应该可以
回复
fallstone 2003-05-09
killerdanny(将十一片指甲遗失在故事里) :DW里只有GETROW,GETTEXT啊?
没找到你说的。
zhzyhq() :
GetRow() for group 1这个怎么用?有这个用法么?
感谢andyzq(小强) ( )的帮忙
回复
zhzyhq 2003-05-09
显示各组行号使用表达式为:
GetRow()-First(GetRow() for group 1)+1 的计算列
回复
fallstone 2003-05-08
OK,我试过了,会在分组里只有一条明细的时候跟上一分组连起来。
回复
dibov 2003-05-08
可用dw_findgroupchange()实现。

a:用ll_breakrow = dw_findgroupchange()得到第一组的第一条记录.
b:用count(*) for group 1得到每小组记录数
c: for i = 1 to 每小组记录数
ll_breakrow = ll_breakrow++
//赋给'名次'
next
d:循环
http://expert.csdn.net/Expert/topic/1756/1756957.xml?temp=.4276087
回复
dibov 2003-05-08
关注!
回复
killerdanny 2003-05-08
分组后做个重新计算!

DW一个G开头的函数!

我还在家里休息!
没办法帮你了,天蓝小弟!
回复
andyzq 2003-05-08
其实用getrow()就行了,这样做的目的是得到一连串递增的数字,那么在那段代码中就好控制了,起关键作用的还是那段代码
回复
fallstone 2003-05-07
sorry,楼上。

偶其实是根据两个字段分组的,写问题的时候为了简单,没写上:(
非常对不起
回复
andyzq 2003-05-07
对的,compute_1指的就是这个
其实这样就行了
abs(count(A for group 1) - getrow())

再把代码加在retrieve后就可以了


回复
andyzq 2003-05-07
想了一个用代码实现的方法
1.用A分组
abs(count(A for group 1) - rowcount() - getrow())

2.为表添加一个字段用来记录顺序tag int
在dw_1.retrieve()之后写


long ll_num, ll_num_compare, ll_rowcount, i, ll_find
string ls_A, ls_A_compare

ll_rowcount = dw_1.rowcount()

for i = 1 to ll_rowcount
ls_A = dw_1.object.A[i]
ll_num = dw_1.object.compute_1[i]
if i = 1 then
ls_A_compare = ls_A
ll_num_compare = ll_num
end if


if i < ll_rowcount then
ll_find = dw_1.find("A = '" + ls_A_compare + "'", i + 1, ll_rowcount)
end if

if ll_find > 0 then
dw_1.object.tag[i] = ll_num - ll_num_compare + 1
else
if i > 1 then
dw_1.object.tag[i] = dw_1.object.tag[i - 1] + 1
end if
if i < ll_rowcount then
ls_A_compare = dw_1.object.A[i + 1]
ll_num_compare = dw_1.object.compute_1[i + 1]
end if
end if
next
回复
xirumin 2003-05-07
getrow()不行。
getrow() - 上面各组的和才行
回复
andyzq 2003-05-07
用A分组

abs(count(A for group 1) - rowcount() - getrow())

这样达到排序的效果了,但是不是显示1,2,3,只能想到那么多,余下的你再想想
回复
andyzq 2003-05-07
sorry,写的不对,再想想
回复
xirumin 2003-05-07
建一计算字段, 用getrow() for group 1 不知可行否
回复
andyzq 2003-05-07
用A分组
count(A for group 1 DISTINCT)
回复
juwuyi 2003-05-07
用计算域阿,根据每一行的行号来设定名次。
回复
fallstone 2003-05-07
回楼上,不是,只做明细数据的处理
回复
mjhnet 2003-05-07
那个小计也是要包含在返回的记录集中的吗
回复
fallstone 2003-05-07
abs(count(A for group 1) - rowcount() - getrow())这句什么意思真不懂
回复
发动态
发帖子
DataWindow
创建于2007-09-28

567

社区成员

PowerBuilder DataWindow
申请成为版主
社区公告
暂无公告