AQ : TADOQuery;AQ.SQL.Add('select groupID, userID, sum(useTime) as tolTime Into tmptbl from tblUser group by userID');
AQ.SQL.Add('select groupName, count(tmptbl.userID) as 组人数, sum(tmptbl.tolTime)/count(tmptbl.userID) as 组平均时间 from tblGroup inner join tmptbl on tblGroup.groupID = tmptbl.groupID group by groupName');
AQ.SQL.Add('Drop table tmptbl');AQ.OPEN;提示说 Commandtext does not return a result set
在SQL Server的查询分析器里执行以上SQL是没有问题的,也能返回记录
请问该如何设置才能在Delphi中执行成功

解决方案 »

  1.   

    看错了,你只要在执行完一条后重新加SQL中的语句
      

  2.   

    最后一句不能用open执行
    最后一句sql必须用ExecSQL()
      

  3.   

    还有对于有返回结果集的才能用OPEN
      

  4.   

    每个语句后带 “go”语句,
    最后exec
      

  5.   

    加分号结尾啊 ;
    select和其它command不一样得用open
    gz
      

  6.   

    每次select 返回一些数据集结果,你这样写数据要返回什么呢?
    最后该成aq.execsql可以执行,但是什么结果都返不回来。
      

  7.   

    建议:
    aq.close;
    aq.sql.clear;
    AQ.SQL.Add('select groupID, userID, sum(useTime) as tolTime Into tmptbl from tblUser group by userID');
    execsql;aq.close;
    aq.sql.clear;
    AQ.SQL.Add('select groupName, count(tmptbl.userID) as 组人数, sum(tmptbl.tolTime)/count(tmptbl.userID) as 组平均时间 from tblGroup inner join tmptbl on tblGroup.groupID = tmptbl.groupID group by groupName');
    execsql;aq.close;
    aq.sql.clear;
    AQ.SQL.Add('Drop table tmptbl');
    execsql;
      

  8.   

    加分号我试过,不行
    我明白大家的意思,分步执行是没有问题的,问题是我想一次过将三条SQL送给SQL Server处理,建临时表、查询临时表、删除临时表三步组成一个事务,如果可以一次送给Server处理,改造一下就可以写成多线程查询,如果分成三步然后在connection中使用事务那么在线程中处理就比较麻烦,我不知道表达的清不清楚,很谢谢大家的帮忙。
      

  9.   

    试一下AQ.SQL.Add('set nocount on ');