clientdataset 按某一字段排序,可以通过编辑这个字段来改变行的顺序。
将列的类型设置为浮点类型,
然后加上索引。
如何将列的顺序 改为 1,2,3,... 的排序呢。
因为有索引的,比如说行值分别为0.5, 1, 2 ;将2改为0.8 ,回车后,行的排序应该是 0.5,0.8,2;
如果循环数据集,将每行的顺序变为1,2,3, 将会有问题,解决方法是每行*100吧;
inherited;
cdsDtl.DisableControls;
// 先将每行行号加上0.001,防止排序出现问题。
// 索引会引起问题
cdsDtl.Last;
while not cdsDtl.bof do
begin
cdsDtl.Edit;
cdsDtl.FieldByName('line').AsFloat := cdsDtl.FieldByName('line').AsFloat * 1000;
cdsDtl.Post;
cdsDtl.Prior;
end;
i := 1;
cdsDtl.First;
while not cdsDtl.Eof do
begin
cdsDtl.Edit;
cdsDtl.FieldByName('line').Value := i;
cdsDtl.Post;
cdsDtl.Next;
inc(i);
end;
cdsDtl.EnableControls;
select rownum,a.* from (
select nvl(g.line, 1) line,
af.gdgid gid,
gd.code gcode,
gd.name gname,
sum(decode(storegid, 1000022, af.qty, 0)) col_1000022,
sum(decode(storegid, 1000023, af.qty, 0)) col_1000023,
sum(decode(storegid, 1000044, af.qty, 0)) col_1000044
from AllocJobFresh af
left join Freshgoods g
on af.gdgid = g.gid
and g.orggid = 1000020
left join goods gd
on af.gdgid = gd.gid
where jobno = '120VD456'
group by af.jobno, line, af.gdgid, code, name order by line) a