有两个Oracle表A,B,A的字段为(a1,a2),B的字段为(b1,b2);
A: a1 a2 B: b1 b2
2 70 2 3
3 56 4 5
6 40 6 7
我想将A.a1=B.b1的纪录查询出来,并按照A.a2排序,即
Query1.SQL.add('select A.a2,B.b2 from A,B ');
Query1.SQL.add('where A.a1=B.b1 ');
Query1.SQL.add('order by A.a2');
会得到以下表:
a2 b2
40 7
70 3
但我想在DBGrid里显示这个表时,第一列再加一个字段,字段名为“顺序”,即
顺序 a2 b2
1 40 7
2 70 3
怎样才能达到这种结果呢?
A: a1 a2 B: b1 b2
2 70 2 3
3 56 4 5
6 40 6 7
我想将A.a1=B.b1的纪录查询出来,并按照A.a2排序,即
Query1.SQL.add('select A.a2,B.b2 from A,B ');
Query1.SQL.add('where A.a1=B.b1 ');
Query1.SQL.add('order by A.a2');
会得到以下表:
a2 b2
40 7
70 3
但我想在DBGrid里显示这个表时,第一列再加一个字段,字段名为“顺序”,即
顺序 a2 b2
1 40 7
2 70 3
怎样才能达到这种结果呢?
在OnCalcFields事件中加入
DataSet.fieldbyname('num').asinteger:=abs(DataSet.RecNO);
就可以了
右键,
先:add all fields,
再右键
选:new field
进得相关设置
!哪位朋友给多写几行详细代码吧。谢谢
Query1.SQL.add('where A.a1=B.b1 ');
Query1.SQL.add('order by A.a2,B.b2,Rec.cont');
B.b2t Rec.cont 必须写!不然会出错!
Query1.SQL.add('where A.a1=B.b1 ');
Query1.SQL.add('order by A.a2,B.b2,Rec.cont');
B.b2t Rec.cont 必须写!不然会出错!
不过会影响速度的。
你在query中自己增加的,然后在query 的计算事件中写就可以了。
Query.1fieldbyname('num').asinteger:=abs(Query1.RecNO);,并不能得到我帖子中所提的排序效果,num中的值都为1,而不是1,2,3……。
如果查询的表在数据库中不存在,而是从其他Query中调用Batchmove方法得到的,就不能为Query1组件添加all fields,有会做的朋友可以给我发个E-mail:[email protected],定以高分相送!谢谢!