后台数据库为MS SQL Sever2000,ADO连接,
有Select ...... Compute by,
在Query Analyzer中能够取得正确的结果,
但是用ADOQuery只能取得第一组,并且不能得到Compute的值。
请问如何更改?
Thanks

解决方案 »

  1.   

    1 ADOQuery好像只能得到一个结果集,所以不能得到computer的
    2 用union吧
      

  2.   

    关于获得SQL Server 20000中Compute语句结果使用pubs数据库
    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值。这就是需要的。
        再次点击,将依次出现下一组...
        
        ***本文是网上资料的综合,希望能够抛砖引玉。