with ADOSQL do
    begin
      Close;
      SQL.Clear;
      SQL.Add(' insert into table1 values(:p1,:p2,:p3);');
      Parameters.ParamByName('p1').Value.:=NoMax;
      Parameters.ParamByName('p2').Value:=NumD;   
      Parameters.ParamByName('p3').Value:=DateTimePicker1.Date;
      ExecSQL;
    end;  
提示错误:数据类型不匹配!
数据库为ACCESS
参数p1,p2应该没有错误,参数p3对应的是日期型字段,格式为短日期
怎么写才对呢?

解决方案 »

  1.   

    试一试
    Parameters.ParamByName('p3').Value:=formatdatetime('yyyy/mm/dd',DateTimePicker1.Date
      

  2.   

    Parameters.ParamByName('p3').Value:=formatdatetime('yyyy/mm/dd',DateTimePicker1.Date);
      

  3.   

    Parameters.ParamByName('p3').Value:=formatdatetime('yyyy''/''mm''/''dd',DateTimePicker1.Date);
    可以解决
      

  4.   

    方法多的很
    var
        mTime: TDateTime;
    mTime := Now();
    with DataM.ADOTable1 do
        begin
          Open;
          Insert;
          FieldByName('时间').AsDateTime := mTime;
          Post;
        end;
    end;
      

  5.   

    给参数赋值前设置各个参数的类型:
    如:Parameters.ParamByName('p1').DataType := ftInteger;
        Parameters.ParamByName('p2').DataType := ftInteger;
        Parameters.ParamByName('p3').DataType := ftDateTime;如果还不行,直接赋值成字符串:
        Parameters.ParamByName('p3').Value := ''''+ DateTimeToStr(DateTimePicker1.Date)  + '''';