+ -
当前位置:首页 → 问答吧 → 在SQL中使用正常的查询语句,在Access数据库中使用报错。字段内容都一样。

在SQL中使用正常的查询语句,在Access数据库中使用报错。字段内容都一样。

时间:2011-09-19

来源:互联网

在SQL中使用正常的查询语句,在Access数据库中使用报错。字段内容都一样。请大侠帮我看看要改哪些地方?

Delphi(Pascal) code



//===========================SQL2000版=======================================

            with dtm.QryExec do     
    begin
      Close;
      SQL.Clear;
      SQL.add('insert into LiuShui(pzh,sfbz,UserName,YsMoney,ll,KxDate) ');
      SQL.add('select a.Pzh,''收'',a.h_UName,a.h_Money,b.ll,convert(varchar(100),a.h_date,23)) from hdinfo a join dkinfo b on (a.h_kxPzh=b.pzh) where a.Lrdate between :TimeBegin and :TimeEnd');
      Parameters.ParamByName('TimeBegin').Value:=DateToStr(DateTime1.Date);
      Parameters.ParamByName('TimeEnd').Value:=DateToStr(DateTime2.Date+1);
      execsql;
    end;

//===========================Access版=======================================

            with dtm.QryExec do     
    begin
      Close;
      SQL.Clear;
      SQL.add('insert into LiuShui(pzh,sfbz,UserName,YsMoney,ll,KxDate) ');
      SQL.add('select a.Pzh,''收'',a.h_UName,a.h_Money,b.ll,str(a.h_date) from hdinfo a join dkinfo b on (a.h_kxPzh=b.pzh) where a.Lrdate between :TimeBegin and :TimeEnd');
      Parameters.ParamByName('TimeBegin').Value:=DateToStr(DateTime1.Date);
      Parameters.ParamByName('TimeEnd').Value:=DateToStr(DateTime2.Date+1);
      execsql;
    end;

作者: yangqi613   发布时间: 2011-09-19

应该将报错的提示贴出来。

作者: gzzai   发布时间: 2011-09-19

是不是Access不能用join on 的语句? 不知道在Access要怎么用才能达到上面sql的功能。

回二楼,就这么两句查询的代码啊,错误提示被try过滤掉了的。

作者: yangqi613   发布时间: 2011-09-19

UserName这个字段改个名字看看。
或者是将str(a.h_date)改成 CStr(a.h_date)看看呢。

作者: xmfan2000   发布时间: 2011-09-19

a.Lrdate between ? and ?');

作者: ACMAIN_CHM   发布时间: 2011-09-19