后台数据库为MS SQL Sever2000,ADO连接,
有Select ...... Compute by,
在Query Analyzer中能够取得正确的结果,
但是用ADOQuery只能取得第一组,并且不能得到Compute的值。
请问如何更改?
Thanks
有Select ...... Compute by,
在Query Analyzer中能够取得正确的结果,
但是用ADOQuery只能取得第一组,并且不能得到Compute的值。
请问如何更改?
Thanks
调试欢乐多
2 用union吧
SQL语句及其结果为:SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price) BY type
type price advance
------------ --------------------- ---------------------
business 19.9900 5000.0000
business 11.9500 5000.0000
business 2.9900 10125.0000
business 19.9900 5000.0000 sum
=====================
54.9200
type price advance
------------ --------------------- ---------------------
mod_cook 19.9900 .0000
mod_cook 2.9900 15000.0000 sum
=====================
22.9800
type price advance
------------ --------------------- ---------------------
popular_comp 22.9500 7000.0000
popular_comp 20.0000 8000.0000
popular_comp NULL NULL sum
=====================
42.9500
type price advance
------------ --------------------- ---------------------
psychology 21.5900 7000.0000
psychology 10.9500 2275.0000
psychology 7.0000 6000.0000
psychology 19.9900 2000.0000
psychology 7.9900 4000.0000 sum
=====================
67.5200
type price advance
------------ --------------------- ---------------------
trad_cook 20.9500 7000.0000
trad_cook 11.9500 4000.0000
trad_cook 14.9900 8000.0000 sum
=====================
47.8900
type price advance
------------ --------------------- ---------------------
UNDECIDED NULL NULL sum
=====================
新建Application,在form1上放置
ADOConnection1,ADOQuery1,DataSource1,DBGrid1 ADOConnection1连接设置为指向pubs,ADOQuery1的Connection指向ADOConnection1,SQL设置为上面的SQL语句
DBGrid1通过DataSource1连接ADOQuery1
将ADOConnection1,ADOQuery1的Active都置为True,将会看到DBGrid里出现了第一组的记录。这并不是想要的。
在form1上放置Button1,在Button1的OnClick事件加入
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
ADOQuery1.Recordset:=ADOQuery1.NextRecordset(i);end;
F9 Run。
还是第一组记录。点击Button1,就会发现出现了第一组的compute值。这就是需要的。
再次点击,将依次出现下一组...
***本文是网上资料的综合,希望能够抛砖引玉。