with adoquerytemp1 do
 begin
 Active:=false;
 SQL.Clear;
 SQL.Add('SELECT clb.sbid,sbb.sbname,sum(clb.rcl)');
 SQL.Add(' FROM clb INNER JOIN sbb ON clb.SBID=sbb.SBID');
 SQL.Add(' WHERE trim(str(year(clb.tdate)))=:ptdate');
 Parameters.ParamByName('ptdate').Value :=trim(edit1.Text);
 SQL.Add(' and trim(str(month(clb.tdate)))=:pm');
 Parameters.ParamByName('pm').Value:=trim(edit2.Text);
 SQL.Add(' GROUP BY clb.sbid,sbb.sbname');
 Prepared:=true;
 ExecSQL;
 Active:=true;
 end;
改为
with adoquerytemp1 do
 begin
 close;
 SQL.Clear;
 SQL.Add('SELECT clb.sbid,sbb.sbname,sum(clb.rcl)');
 SQL.Add(' FROM clb INNER JOIN sbb ON clb.SBID=sbb.SBID');
 SQL.Add(' WHERE trim(str(year(clb.tdate)))=:ptdate');
 Parameters.ParamByName('ptdate').Value :=trim(edit1.Text);
 SQL.Add(' and trim(str(month(clb.tdate)))=:pm');
 Parameters.ParamByName('pm').Value:=trim(edit2.Text);
 SQL.Add(' GROUP BY clb.sbid,sbb.sbname');
 Prepared:=true;
 ExecSQL;
 exsql;
 end;

解决方案 »

  1.   

    最后没有acitve=true打开显示,还有什么意义呢?
      

  2.   

    'Access violation at address 1F453E7E in moudule 'msado15.dll'.是在EXECSQL()时发生的,我是运行了insert,update的SQL语句.
    这个问题我也碰到,可能需要下在ADO,Dephi补丁.
      

  3.   

    (问:大山里的人)安装ado补丁后你的的语句运行没问题了吗?哪里有的下载?
      

  4.   

    检索、汇总统计的SQL中不能使用ExecSQL来执行,ExecSQL是
    执行数据更新时用的(Insert,Update...)换为Open或者
    Active=True即可。
      

  5.   

    GreenCsdn说的正是,改为open或active=true就可