delphi 往DBF插入数据,日期时间格式,时间部分无法插入问题

在Delphi中使用ADOCommand向DBF文件插入数据时,遇到日期和时间部分无法正确插入的问题。通过调整参数赋值方式,采用CTOD和CTOT函数转换日期和时间格式,成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一般的参数赋值的方法是不行的,如下方法:

 var i:integer;

      fldName : string;

      d : TDateTime;

  begin

    ...

    sSQL := Format('insert into abc.dbf (TyNUMERIC,TyChar,TyDate,Tyvarchar,Tydatetime)'

                              +' values (%d,%s,%s,%s,%s)',

              [11,

               QuotedStr('TyChar'),

               ':TyDate',

               QuotedStr('Tyvarchar'),

               ':Tydatetime']);

    adoCmd1.CommandText := sSQL ; 

adoCmd1.Parameters.ParamByName('TyDate').Value:=d; // 这个可以

    adoCmd1.Parameters.ParamByName('Tydatetime').Value:=d; // 这个就会出问题

...

  end;

 

需要用下面的方法:

procedure InsertDBF(const path:string);

var

  sSQL,sdatetime,sDate:string;

  adoCmd1: TADOCommand;

  ADOConnection1 :TADOConnection;

begin

  ADOConnection1 := TADOConnection.Create(nil);

  adoCmd1:= TADOCommand.Create(nil);

  try

    ADOConnection1.ConnectionString := 'Provider=VFPOLEDB;Data Source='+

         path+ ';Mode=Share Deny None;User ID="";Password="";';

    adoCmd1.Connection := adoconnection1;

    sdatetime := FormatDateTime('mm/dd/yyyy hh:nn:ss',now);

    sDate := FormatDateTime('mm/dd/yyyy',now) ;

    sSQL := Format('insert into abc.dbf (TyNUMERIC,TyChar,TyDate,Tyvarchar,Tydatetime)'

                              +' values (%d,%s,%s,%s,%s)',

              [11,

               QuotedStr('TyChar'),

               'CTOD("'+sDate+'")',

               QuotedStr('Tyvarchar'),

               'CTOT("' + sdatetime + '")']);

//DBF的相关资料 http://blog.163.com/lijinquan_yss/blog/static/16640322020130175449399/

    adoCmd1.CommandText := sSQL ;

    adoCmd1.Execute;

  finally

    adoCmd1.Free;

    ADOConnection1.Free;

  end;

end;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值