开发工具:  Delphi7
数据库:     MySQL5.0 
数据库驱动:My ODBC 3.51 Driver问题描述:在使用ADOConnection 连接 MYSQL,使用ADOQuery控件执行SQL语句时(语句如下)总是不能通过(错误提示如下),请名师指点,Why?
SQL 语句:select sum(quantity) as Qt from Product_Stock(Quantity 为 Int(10))
错误提示:Multiple-step operation generated errors,Check each status value(大概含义:多步操作产生错误,请检查每一步的状态值)调试发现在执行:Sum()、Avg()函数时就会遇到如上错误,但其他函数如:Count、Max就没有问题。

解决方案 »

  1.   

    quantity 这个单词应该也不是保留字,
    看来你只能单步调试下,看下执行前的sql到底是什么
      

  2.   

    已经测试过了,执行前的SQL语句很正常,可是就是当用了sum,avg函数的语句就不行了。
    同样语句直接在mysql执行是没有问题的。另外采用MyODBC在VS.net测试也正常!
      

  3.   

    你把问题发到 MySQL版块中去,那里应该有人知道。或者你把这段代码贴出来,大家给看一下
      

  4.   

    不知道是不是Delphi的Bug,因为在其他的开发工具里面是可以的。
      

  5.   

    检查一下Product_Stock表的非空列是否为空
      

  6.   

    quantity 这列中有null值么 或是空值?
      

  7.   

    quantity 是 int(10)类型,记录正常的,
    总共也就一条记录,该语句在MySQL命令行中执行完全正常,
    在其他的开发工具(VS.net2003)正常,
    下午发现:
    如果将int 类型 换成double型 Delphi中的执行也正常了。
    超级奇怪!
      

  8.   

    楼主,你提供的信息太少了.(最好把表的结构,执行代码打出来)
    有些事不能就事论事。可能有其他方面的因素影响你的执行,而你没注意到。我连是mysql4.0.20
    没有问题
    CREATE TABLE `product_stock` (
      `quantity` int(10) default NULL
    ) TYPE=MyISAM;INSERT INTO `product_stock` (`quantity`) VALUES 
      (1),
      (1);procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOQuery1.Close;
      ADOQuery1.SQL.Text := select sum(quantity) as Qt from Product_Stock ';
      try
        ADOQuery1.Open;
      except
        exit;
      end;
      ADOQuery1.Close;
    end;
      

  9.   

    感谢6rl(海)的回答,我把你的代码照着打了一遍,(其实我原来的代码也差不多)。
    还是有问题,提示:
    多步操作产生错误,请检查每一步的状态值。另外在提供一些信息吧,我用的是windows 2000 Advanced Server,MySQL 5.0.18-nt,MyODBC 3.51。我是比较郁闷了。呵呵。
      

  10.   

    呵呵,试一下连mysql4.0.20.这个“Multiple-step operation generated errors,Check each status value”
    一般都是在插入记录或是更新记录的时候发生的
    http://www.vibig.net/Article_Show.asp?ArticleID=36你的却是在打开的时候
      

  11.   

    谢谢6rl(海) ,我刚刚用了mysql4测试了一下,OK了,看来是mysql5的问题。
    揭帖咯!