adoquery1.SQL.Clear;
     
     adoquery1.sql.Add(' SELECT pm AS 品名,gg as 规格, iif(sum(cksl) is null ,0,sum(cksl))    AS 入库总量 ');
     adoquery1.sql.Add( '  FROM ck  ');
     adoquery1.sql.Add(' WHERE (pm = '+ #39 + edit1.text  + #39 +')  and  (gg = '+ #39 + edit2.text  + #39 +')  group by pm,gg ');  
         adoquery1.open;
数据库access ,上面的sql语句运行的时候出错!错误提示如下:
"Project Project.erxe raised exception class EAccessViolation with message 'Access violation at address 1B041FC6 in moduile 'MSJET40.DLL'.Read of address 0005242E'.Process stopped.Use Step or Run to continue. [OK][Help]好像程序执行到adoquery1.sql.Add(' SELECT pm AS 品名,gg as 规格, iif(sum(cksl) is null ,0,sum(cksl))    AS 入库总量 ');这句的时候出错了,为什么?希望得到大家的帮助!

解决方案 »

  1.   

    如果你调试一下,就会发现在adoquery1.sql.Add( ' SELECT pm AS 品名,gg as 规格, iif(sum(cksl) is null ,0,sum(cksl))    AS 入库总量  ');执行这一行时就已经出错了,原因是使用了"品名","规格",delphi对于字符集的支持很差劲,建议尽量不要使用中文
      

  2.   

    to hsmserver:
    access 中没有ISNULL函数
      

  3.   

    谢谢了,问题已经解决了!
    SELECT pm AS 品名,gg as 规格, iif(sum(cksl) is null ,0,sum(cksl))    AS 入库总量 这个语句没有错误!
    from ck 应该把它们写在一行就行了。