我用Mysql数据库,是5.0以上的版本。通过Myodbc-3.51.11-2建立了一个ODBC的数据源,并且通过ADO访问。
但是当我在sql语句中使用sum、avg、min、max等统计函数的时候,就会出一个错误提示:“多步操作产生错误,请检查每一步的状态值”,不知道是什么问题。
用其他sql语句都很正常,唯独用统计函数会出现这样的问题。
代码:
 ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Text := 'select sum(City_Id) from city_tab';//City_Id为int类型
 ADOQuery1.Open;
 showmessage(ADOQuery1.Fields[0].AsString);
统计函数对我很重要,我的工程中很多地方读需要使用,跪求哪位大侠帮我解决这个困扰我很久的问题,一定高分相送,万分感谢!!!!!

解决方案 »

  1.   

    问题应该出在showmessage(ADOQuery1.Fields[0].AsString);这句上.
    看了半天 ADOQuery1.SQL.Text 是没错的.
      

  2.   

    和楼上的有同感....
    我也觉得问题应该出在showmessage(ADOQuery1.Fields[0].AsString);这句上
    在我看来
     ADOQuery1.Close;
     ADOQuery1.SQL.Clear;
     ADOQuery1.SQL.Text := 'select sum(City_Id) from city_tab'
    是没什么问题的....
      

  3.   

    Fields[0]这种东东有时会有好多问题的....我们都用FieldByName来做
      

  4.   

    showmessage(ADOQuery1.Fields[0].AsString);ADOQuery1.Fields[0] 是统计字段吗????  统计显示的是整数哦
      

  5.   

    建议楼主先添加几条简单的数据试试“多步操作产生错误,请检查每一步的状态值”应该是数据库执行查询语句过程时报错
    与ShowMessage(ADOQuery1.Fields[0].AsString);无关,注释这句应该一样会错。
      

  6.   

    是cuteant说的这种情况,open就会错
      

  7.   

    错误是出现在ADOQuery1.Open;的,我试过很多次。
    我也曾经试过在mysql中建立一个view,语句为create view view_city_tab (ci) as select sum(CityId) from city_tab;然后通过ado打开view,也是会出现同样的错误。也就是说只要有sum之类的函数就会出错。
      

  8.   

    非常楼上的几位!
    这种sql语句我在应用其他数据库的时候也是经常写的,sqlserver,oracle都没有问题,但唯独mysql这里有问题,不知为何。
      

  9.   

    MYSQL建议用DBExpress
    性能稳定都高
      

  10.   

    用dbexpress总说unable to load libmysql.dll,好像是版本不对,怎么才能可以用呢?谢谢指教。
      

  11.   

    Open时报的错,以前记得在d5搞midas时也遇到过这个错误,想不起来是怎么回事了,式着设置下connection和query1的属性看看。
      

  12.   

    如果用dbexpress,要在网上找一个老的libmysql.dll(3.X版本)替换现有的libmysql.dll
    ADO->ODCB->MYSQL的确有问题.用BDE->ODBC->MYSQL没问题
      

  13.   

    libmysql安装ems mysqlmanager就有了copy一份出来即可
      

  14.   

    经过多次试验,终于得到解决(至少在我机上可以)
    1.升ADO到2.7(可能不必)
    2.升Myodbc到Myodbc-3.51.12(关键,我在老外网上发现那是myodbc的bug)
      mysql官方网上有下载,注意,不能用最新的Myodbc-5.0,那个绝对不能用
      

  15.   

    非常感谢keiy,问题解决了,这个问题困扰我好久了,太谢谢了。
    也感谢楼上的帮我想办法,谢谢大家了。
      

  16.   

    楼主给分的情况是这样的:keiy (5)、 keiy (95)、 以后别人别回答ddnlkd1204 (String args[]) 的问题了.