-1

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

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 未声明的标识符:“Daysbetween”

简短地尝试了这个:

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

但仍然没有。我怎样才能让它工作?

4

1 回答 1

2

您需要将System.DateUtils单位添加到您的使用条款中。每当您缺少某个函数标识符时,请查看该函数的引用。在您的情况下,功能帮助显示为您缺少的单元DaysBetween的此功能的来源:System.DateUtils

uses
  System.DateUtils;

这里突出显示,如何识别丢失的单元:

在此处输入图像描述

于 2013-04-01T00:00:26.677 回答