access做数据库时,时间/日期类型为默认的'1889-01-01 00:00:00'  ,如何把当前的系统时间,系统日期提取出来,然后加到一条access记录呢,需要什么组件,两条记录之间如何比较,计算差额呢,谢谢指教。

解决方案 »

  1.   

    用ADO控件与数据库连接起来date      //取系统日期
    now       //取系统日期时间
    ADOQuery.sql.add('insert ......')
      

  2.   

    贴个代码给大家看看,我以前自己弄的
    procedure TFrmTimeset.RzBitBtn1Click(Sender: TObject);
    var sqlscript, tempstr: string;
       tempdate: tdatetime;  monthValue: integer;
    begin
       sqlscript := 'select 登陆日期, 流水批号, 期间段 from 批号';
       with dmmaster.ADOGeTGuest do
       begin
          if Active then Active := false;
          CommandText := sqlscript;
          active := true;
          tempdate := strtodate(datetostr(fieldbyname('登陆日期').AsDateTime));
          if (tempdate >date()) then
          begin
             infomessage('当前系统日期小于最后登陆时间,请调整当前')
             end else
             begin
                bperiod := copy(formatdatetime('yy', date()), 2, 1);
                monthValue := strtoint(formatdatetime('mm', date()));
                case monthvalue of
                   10: tempstr := 'A';
                   11: tempstr := 'B';
                   12: tempstr := 'C';
                   else
                      tempstr := inttostr(monthvalue);
                   end ;
                   bperiod := bperiod + tempstr;
                   if fieldbyname('期间段').AsString <>bperiod then
                   begin
                      edit;
                      fieldbyname('期间段').AsString := bperiod;
                      fieldbyname('流水批号').AsInteger := 1;
                      fieldbyname('登陆日期').AsDateTime := now();
                      post;
                   end
                   else
                   begin
                      edit;
                      fieldbyname('登陆日期').AsDateTime := now();
                      post;
                   end;
                           FrmTimeset.Hide ;
                         Application.CreateForm(Tfrmmain, frmmain);
                         frmmain.ShowModal ;               FrmTimeset.Close;
                end
             end;
             {  if (tempdate)>LocDay.Date   then
             begin
             infomessage('当前系统时间小于最后登陆时间,请调整当前系统时间!')
             end
             else
             begin
             with dmmaster.ADOEXEC  do
             begin
             if Active   then Active :=false;
             Bperiod:=formatdatetime('yy',Date )+formatdatetime('mm',Date );
             sqlscript:='select count(期间段) as countnum from 批号 where 期间段='''+bperiod+'''';
             sql.Clear ;
             sql.Add(sqlscript);
             active:=true;
             if fieldbyname('countNum').AsInteger=0  then
             begin
             active:=false;
             sqlscript:='update 批号 set 期间段='''+bperiod+''',  流水批号=1,登陆日期=#'+datetimetostr(now())+'#';
             sql.Clear ;
             sql.Add(sqlscript);
             ExecSQL;
             end
             else
             begin
             active:=false;
             sqlscript:='update 批号 set 登陆日期='''+datetimetostr(now())+'''';
             sql.Clear ;
             sql.Add(sqlscript);
             ExecSQL;
             end   ;
             active:=false;;
             end;
             close;
             end;
          end;
      

  3.   

    有的地方可一用formatdatetime ,但是习惯了用datetimetostr
      

  4.   

    between # date1 # and # date2 #,呵呵
      

  5.   

    取系统日期
    Date
    日期时间
    TimeDatabase.table.field.value:=DateToStr(Date);
    Datebase.table.field.value:=DateTimeToStr(Time);
      

  6.   

    Database.table.field.value:=DateToStr(Date);
    Datebase.table.field.value:=DateTimeToStr(Time);
      

  7.   

    用datediff可以算出差值datediff("dd",now,rs("date"))
      

  8.   

    大家都说过了 我也帮你顶一下好了!在Access里如果保存时间的话,可以用VB中的一些函数
    DateValue TimeValue 可以把日期和时间分别的转换
      

  9.   

    fieldbyname('Time').AsDateTime := now
      

  10.   

    用NOW()
    或用time()
    with table1 do
    begin
    append;
    fields[0].asdatetime:=time();
    post;