计算表中2个日期字段之间的日差

时间:2013-03-31 23:58:46

标签: delphi delphi-xe2 delphi-xe

我似乎无法在网格中完成这项工作:

procedure TForm1.ABSQuery1CalcFields(DataSet: TDataSet);
begin
// if (ABSQuery1.FieldByName('START_DATE').AsDateTime > 0) and (ABSQuery1.FieldByName('END_DATE').AsDateTime > 0) then
//    ABSQuery1.FieldByName('DAYS').AsInteger:= Daysbetween(ABSQuery1.FieldByName('START_DATE').AsDateTime,ABSQuery1.FieldByName('END_DATE').AsDateTime)
//else
//    ABSQuery1.FieldByName('DAYS').Value := Null;

end;

为此,我在查询中创建了一个额外的字段(整数类型)。但它不起作用。 我明白了:

  

[dcc32错误] Unit1.pas(64):E2003未声明的标识符:'Days between'

简要地试过这个:

ABSQuery1.FieldByName('DAYS').Value := 
   IntToStr( 
      Daysbetween(ABSQuery1.FieldByName('START_DATE').AsDateTime, 
                  ABSQuery1.FieldByName('END_DATE').AsDateTime)
   );

但仍然没有。我如何让它工作?`

1 个答案:

答案 0 :(得分:2)

您需要将System.DateUtils单位添加到您的uses子句中。每当您缺少某个函数标识符时,请查看函数的引用。在您的情况下,DaysBetween函数帮助会将您遗漏的System.DateUtils单位显示为此函数的来源:

uses
  System.DateUtils;

这里突出显示了如何识别缺失的单位:

enter image description here