if FormMain.ADOConnection1.Connected then
  begin
    with FormMain.ADOQuery4 do
    begin
      if Active then
        Close;      SQL.Clear;
       SQL.Add('UPDATE Information SET');
      SQL.Add('Time=' + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) +  ',');
//      SQL.Add('Time=' + DateTimeToStr(Now) + ',');
      SQL.Add('CH4Concent=' + FloatToStr(concent) + ',');
      SQL.Add('pressure=' + FloatToStr(pressure) + ',');
      SQL.Add('tfl=' + FloatToStr(tfl));
      SQL.Add('WHERE' +'(CoalID='  + #39 + coalid + #39 + ') And' + '(WorkID='  + #39 + workid + #39 + ') And' + '(DeviceID=' + #39 + deviceid + #39 + ')');      try
        ExecSQL;
      except
        exit;
      end;    end;
  end;程序运行后出错:
Project Safty.exe are raised exception class EoleException with message 'Parameter 对象被不正确的定义。提供了不一致或不完整的信息。'   Process stopped. Use Step or Run to continue请各位大虾帮帮忙看看该如何修改!
我用单步调试时,发现是SQL.Add('Time=' + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) +  ',')这句的问题。

解决方案 »

  1.   

    不如改成 SQL.Add('Time=getdate()')
      

  2.   

    如果你的数据库是SQL Server 就用getdate()
    是ORACLE就用SYSDATE
      

  3.   

    用getdate()或用参数:time
    SQL.Add(':Time‘);
    adoquery1.parameters.parambyname('time').value:=StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));
      

  4.   

    我用的数据库是Access,请问该如何处理?
      

  5.   

    我试过,时间参数加引号:
    SQL.Add('Time=' + #39 + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) + #39 + ',');
      

  6.   

    值使用参数传递,一般不会有错:
    AdoQuery1.Parameters.ParamByName('time').Value:=StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));
      

  7.   

    我上面的错了,应该直接传递数据库中的字段的类型的值。AdoQuery1.Parameters.ParamByName('time').Value := Now;
      

  8.   

    getdate() 只是取日期的还是用fromatdatetime好
      

  9.   

    我加上引号后,还是出错,提示说“UPDATE 语句 语法错误”
      

  10.   

    在ACCESS中 日期时间 是用 # 号括起来的
      

  11.   

    我用的是ACCESS,改成这个语句:
    SQL.Add('Time=#' + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) +  '#,');
    还是不行,提示出错:
    Project Safty.exe are raised exception class EoleException with message 'Parameter 对象被不正确的定义。提供了不一致或不完整的信息。'   Process stopped. Use Step or Run to continue
      

  12.   

    如果是SQL2000则在代入日期变量时这样的
    SQL.Add('update table1 set field_time = ''' + FormatDateTime('yyyy-mm-mm hh:ss:mm',now) + ''' ');
    这样就没有问题了吧.这个问题我曾经也遇到过,不过有时不加''号还可以通过.