以下代码,在部分电脑里会提示“标准表达式中数据类型不匹配。”但不明白原因,其中id、cid 是数字,posttime是日期,其他是备注。保证都有数据。Parameters.ParamByName(xx).Value 是 Variant类型,怎么会不匹配?
with rs do
begin
close;                    Parameters.Clear;
                    ParamCheck:=true;
                    sql.Clear;
                    sql.append('insert into list(id,cid,list,title,link,chkflag,actionflag,posttime,postflag,errflag) values(:id,:cid,:list,:title,:link,false,false,:posttime,false,false)');
                    Parameters.ParamByName('id').Value:=id;
                    Parameters.ParamByName('cid').Value:=cid;
                    parameters.ParamByName('list').Value:=list;
                    parameters.ParamByName('title').Value:=tmptitle;
                    parameters.ParamByName('link').Value:=tmplink;
                    parameters.ParamByName('posttime').Value:=now;                    Prepared:=true;
                    try
                      ExecSQL;                    except                      On E:Exception DO
                        begin
                          showmessage(E.Message);
                          break;
                        end;
                    end;
end;

解决方案 »

  1.   

    忘了注明,是Tadoquery,D7 ,ACCESS数据库
      

  2.   

    确实是日期问题,用了formatdatetime解决,但奇怪的是,同样的操作系统,有的没问题,有的出问题。
      

  3.   

    Access中的日期参数在值两边回上#号,就可以不用转换函数。
      

  4.   

    是不是更改了系统日期格式,比如Now值结果是包括有中文年、月、日...等等;
      

  5.   

    而且,可以在 SQL 里用 GetDate,使用服务器时间。
    没必要用本地时间。