下面的语句为什么一执行就出错,‘指针地址在msjet40.dll’
这是为什么?
g_carno:string;
  yyear:string;
  mmonth:string;
这三个变量是已定义和有值的。
我只要去掉SUM()函数就可以啦,不知道是不是ACCESS数据库的问题
 with datamodule22.ADOQuery3 do
       begin
          close;
          sql.clear;
          sql.add('select sum(zcgls) as zcgls1,sum(rkgls) as rkgls1,sum(lqh) as lqh1,sum(oil) as oil1,sum(sl) as sl1,sum(zcgls*sl) as dgl,sum(sl*yj) as ysfy');
          sql.add('from dayrecord where carno=:jcar and year(rq)=:y and month(rq)=:m');
          Parameters.ParamByName('jcar').Value:=g_carno;      // 车号
          Parameters.ParamByName('y').Value:=yyear;      //年
          Parameters.ParamByName('m').Value:=mmonth;      //月
          open;
       end;

解决方案 »

  1.   

    sql.add('select sum(zcgls) as zcgls1,sum(rkgls) as rkgls1,sum(lqh) as lqh1,sum(oil) as oil1,sum(sl) as sl1,sum(zcgls*sl) as dgl,sum(sl*yj) as ysfy');
              sql.add('from dayrecord where carno='''+g_carno+''' and year(rq)='''+yyear+''' and month(rq)='''+mmonth+'''');
    open;
    用上面的试一试
      

  2.   

    应该注意你带入的参数类型和你access中的字段类型是否一致;
    另外,在带入参数之前加上prepare,这样可以提高你程序的性能,尤其是大型查询更是如此。
      

  3.   

    caijitao(阿修罗) (
    在哪里加上prepare