procedure TForm1.actIntTrafBillExecute(Sender: TObject);
begin
  with  datamodule1.ADOQuery1 do
  begin
   close;
   sql.clear;
   sql.Add('select scraddr,sum(doctets) as octets from netflow  where scraddr like ''192.9.201%'' group by scraddr');
   open;
  end;
  datamodule1.DataSource1.DataSet:=datamodule1.ADOQuery1;
  datamodule1.DataSource1.DataSet.fields[0].DisplayLabel:='流出IP地址';
  datamodule1.DataSource1.DataSet.fields[1].DisplayLabel:='费用';
  dbgrideh1.Show;
end;代码如上。为什么编译的时候总是提示EOLE错误,说什么“多步操作产生错误,请检查每一步状态”?
我设置了断点调试了一下,到open,那一句出错,但是我在数据库下面执行同样的SQL语句是正确的呀。奇怪请高人指点。

解决方案 »

  1.   

    sql.Add(Format('select scraddr,sum(doctets) as octets from netflow  where scraddr like ''%s%%'' group by scraddr',['192.9.201']));
      

  2.   

    like '+'''192.9.201%'''+' group by scraddr');
      

  3.   

    发现有两个可能性:1、数据库没有设置默认值,导致赋值一个空值时出错2、游标应该设置 CursorLocation adUseClient
      

  4.   

    sql.Add('select scraddr,sum(doctets) as octets from netflow  where scraddr like ''192.9.201' + '%'' group by scraddr');
      

  5.   

    是不是因為scraddr 有空值.
      

  6.   

    还是不行,换了一种数据库就可以了。难道MYSQL和ADO兼容性不好?