我这里没有这个现象。ADO+sql server
建议将sql语句贴到sql server中运行,看是否是sql语句的错
另检查tadoquery是否创建!

解决方案 »

  1.   

    你的(是不是在中文输入法下输入的?
         ★==========★==========★
         ‖ Delphi里的最后一丝游魂‖
         ★==========★==========★
      

  2.   

    TADOQuery.SQL.Add('select sum(num) from xx group by xx')例如:
    TADOQuery.SQL.Add('select sum(工资) from 工资表 group by 部门')
    这个不会错吧!
      

  3.   

    CSDN Helper(CSDN 论坛助手)
         ★==========★==========★
         ‖ Delphi里的最后一丝游魂‖
         ★==========★==========★
      

  4.   

    很奇怪的问题,大家看代码,程序运行到第三个Add就出错了,如果把第二个Add删除,程序又可运行,如果把第三个Add中的(符号换掉又可运行了!         RS_ContractSum:= TADOQuery.Create(self);
                RS_ContractSum.Connection:=DataModuleConnection.DataConnection;
                RS_ContractSum.Close;
                RS_ContractSum.SQL.Clear;
                RS_ContractSum.SQL.Add('SELECT Sum([Num]) AS NumSum,');
                RS_ContractSum.SQL.Add(' Sum([Num]*[Price]) AS Amount,');
                RS_ContractSum.SQL.Add(' Sum([num]*[price]-[num]*[price]*[Discount]) AS DisAmount');
                RS_ContractSum.SQL.Add(' FROM sale_OrderMain LEFT JOIN sale_OrderList ON sale_OrderMain.OrderID = sale_OrderList.OrderID');
                RS_ContractSum.SQL.Add(' Where ContractID="'+Param_ContractID+'"');
                RS_ContractSum.Open;
      

  5.   

    为什么用left join啊,试试:RS_ContractSum:= TADOQuery.Create(self);
                RS_ContractSum.Connection:=DataModuleConnection.DataConnection;
                RS_ContractSum.Close;
                RS_ContractSum.SQL.Clear;            RS_ContractSum.SQL.Add('SELECT Sum([Num]) AS NumSum,');
                RS_ContractSum.SQL.Add(' Sum([Num]*[Price]) AS Amount,');
                RS_ContractSum.SQL.Add(' Sum([num]*[price]-[num]*[price]*[Discount]) AS DisAmount');
                RS_ContractSum.SQL.Add(' FROM sale_OrderMain , sale_OrderMain.OrderID = sale_OrderList.OrderID');
                RS_ContractSum.SQL.Add(' Where ContractID="'+Param_ContractID+'"');
                RS_ContractSum.Open;
      

  6.   

    其实不是程序中语句的错误,执行的错误如下:错误Project xx.exe raiseed exception calss Eaccessviolation with message 'Access Violntion at address' B03F511 in module' msjet40.dll不知道是否有遇到这个问题的?程序运行的到一个很正常的地方出这个错误!
      

  7.   

    倒數第二行是否用了雙引號,“ContractID="'+Param_ContractID+'"');”
    如果是須改成兩個單引號。
      

  8.   

    我多次实验发现是这个问题:TADOQuery.SQL.Add('中间有三个sum()函数就出错的问题 ')列如:TADOQuery.SQL.Add('select sum(a) as a1,sum(b) as b1,sum(c) as c1');运行这个包含三个SUM的语句系统就出错!D6环境。50分送解决方法!错误提示如下
    Project xx.exe raiseed exception calss Eaccessviolation with message 'Access Violntion at address' B03F511 in module' msjet40.dll