我有两个字段(“开始日期”、“结束日期”)都是日期类型。
而且我还有两个我试图掩盖的情况 - 没有成功:
答: “开始日期”未定义,但“结束日期”例如 Start Date= 0D ,End Date= 31.12.2020。这意味着从 0D 到 2020 年 12 月 31 日之间的一切都应该被视为重叠。
定义“开始日期”和未定义“结束日期”也是如此,例如 Start Date= 02.02.2020 , End Date= ''。那将被视为 02.02.2020..∞</p>
为了可视化它,我添加了一个屏幕截图。
注意: “开始日期” = “Gültig von”和“结束日期” = “Gültig bis”)。
这种情况会重叠,因为 02.02.2020 一直到“无穷大”,例如“结束日期”的第一行在第二行的范围内。
B:在这种情况下,范围不碍事(不重叠),例如,第一行的开始日期= 0D,结束日期= 31.01.2020,第二行的开始日期= 02.02.2020,结束日期= ''。
再次可视化:
在这里,我们看到两行都有自己的范围(不重叠),因为第一行在第二行的下一个范围开始前两天结束。
我的方法不起作用:
local procedure ValidateRandomRec()
var
_random: Record Random;
begin
if (Rec."Gueltig bis" = 0D) and (Rec."Gueltig von" <> 0D) then begin
if _random.FindSet() then
_random.SetFilter("Gueltig von", '=''''|%1..', Rec."Gueltig von")
else begin
_random.SetFilter("Gueltig bis", '');
_random.SetFilter("Gueltig von", '%1..', Rec."Gueltig von");
end;
end;
end;
if (_random.FindSet()) and (_random.Count >= 1) then begin
if GuiAllowed then
Message('Date overlapping');
end;
像这样被称为我的页面:
trigger OnInsert()
begin
ValidateRandomRec();
end;
trigger OnModify()
begin
ValidateRandomRec();
end;
trigger OnRename()
begin
ValidateRandomRec();
end;
结果比预期的要长。至少它是可重现的:)