var
  pas, cod, pastr, SqlStr:string;
  PassTime:TDateTime;
beginpas := '123456';
PassTime := now;
cod := '001';
pastr := '654321';sqlstr := ' update user_table set user_pass = ''' + pastr + '''' ;
sqlstr := sqlstr + ', user_pass_date = ''' + PassTime + '''';    //这一句报错
sqlstr := sqlstr + ' where user_code = ''' + cod + ''' and user_pass = ''' + pas + '''';
ADOCommand1.CommandText := sqlstr;
ADOCommand1.Execute;
end;
请问为什么报错啊,我在C++ Builer中采用累似的写法是可以通过的啊
本人刚学DELPHI,请兄弟们指点,多谢

解决方案 »

  1.   

    var
      pas, cod, pastr, SqlStr:string;
      PassTime:TDateTime;
    beginpas := '123456';
    PassTime := now;
    cod := '001';
    pastr := '654321';sqlstr := ' update user_table set user_pass = ''' + pastr + '''' ;
    sqlstr := sqlstr + ', user_pass_date = ''' + FormatDateTime('yyyy-mm-dd hh:mm:ss',PassTime) + '''';    //这一句报错
    sqlstr := sqlstr + ' where user_code = ''' + cod + ''' and user_pass = ''' + pas + '''';
    ADOCommand1.CommandText := sqlstr;
    ADOCommand1.Execute;
    end;
      

  2.   

    建议楼主,不要使用类型转换,把其它类型都转换成字符串,
    写进SQL中,
    最好用参数,
    不用类型转换,绝不出错,例:
    with ADOCommand1 do
    begin
      CommandText:=' update tb1 set ddate=:ddate ';
      Parameters.ParamByName('ddate').Value:=DateTimePicker.Date;
      Excute;
    end;
      

  3.   

    sqlstr := sqlstr + ', user_pass_date = ''' + PassTime + ''''改为:sqlstr := sqlstr + ', user_pass_date = ''' + datetimetostr(PassTime) + ''''也行!