我似乎无法在网格中完成这项工作:
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)
);
但仍然没有。我如何让它工作?`
答案 0 :(得分:2)
您需要将System.DateUtils
单位添加到您的uses子句中。每当您缺少某个函数标识符时,请查看函数的引用。在您的情况下,DaysBetween
函数帮助会将您遗漏的System.DateUtils
单位显示为此函数的来源:
uses
System.DateUtils;
这里突出显示了如何识别缺失的单位: