使用工作日设置截止日期
Setting a due date using business days
我正在尝试使用基于收到日期的工作日加上给定的天数(具体取决于特定测试的内容)来设置截止日期,但我不确定如何在 [=14= 中使用 while 循环] if/else。所有尝试都导致 Crystal 显示错误,初始 if 之后的所有内容都不是公式的一部分。代码的主要结构来自https://kenhamady.com/formulas/form17.shtml。
WhileReadingRecords;
DateVar Array Holidays;
DateVar Target:=Date({DATE_RECEIVED});
NumberVar Add;
NumberVar Added := 0;
if {METADATA_REPOSITORY.FIELD_VARCHAR_16} = "Test_1" then
NumberVar Add = 28;
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target
else if {ORDTASK.TESTGROUPNAME} = "Test_2" then
NumberVar Add =14;
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target
//else
NumberVar Add = DateAdd("d", Tonumber({TESTS.DURATION}), {CENTRALRECEIVING.DATE_RECEIVED});
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target
试试这个:
WhileReadingRecords;
DateVar Array Holidays;
DateVar Target:=Date({DATE_RECEIVED});
NumberVar Add;
NumberVar Added := 0;
if {METADATA_REPOSITORY.FIELD_VARCHAR_16} = "Test_1" then
NumberVar Add := 28;
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target;
//else
if {ORDTASK.TESTGROUPNAME} = "Test_2" then
NumberVar Add :=14;
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target;
//else
NumberVar Add := DateAdd("d", Tonumber({TESTS.DURATION}), {CENTRALRECEIVING.DATE_RECEIVED});
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target
我正在尝试使用基于收到日期的工作日加上给定的天数(具体取决于特定测试的内容)来设置截止日期,但我不确定如何在 [=14= 中使用 while 循环] if/else。所有尝试都导致 Crystal 显示错误,初始 if 之后的所有内容都不是公式的一部分。代码的主要结构来自https://kenhamady.com/formulas/form17.shtml。
WhileReadingRecords;
DateVar Array Holidays;
DateVar Target:=Date({DATE_RECEIVED});
NumberVar Add;
NumberVar Added := 0;
if {METADATA_REPOSITORY.FIELD_VARCHAR_16} = "Test_1" then
NumberVar Add = 28;
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target
else if {ORDTASK.TESTGROUPNAME} = "Test_2" then
NumberVar Add =14;
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target
//else
NumberVar Add = DateAdd("d", Tonumber({TESTS.DURATION}), {CENTRALRECEIVING.DATE_RECEIVED});
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target
试试这个:
WhileReadingRecords;
DateVar Array Holidays;
DateVar Target:=Date({DATE_RECEIVED});
NumberVar Add;
NumberVar Added := 0;
if {METADATA_REPOSITORY.FIELD_VARCHAR_16} = "Test_1" then
NumberVar Add := 28;
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target;
//else
if {ORDTASK.TESTGROUPNAME} = "Test_2" then
NumberVar Add :=14;
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target;
//else
NumberVar Add := DateAdd("d", Tonumber({TESTS.DURATION}), {CENTRALRECEIVING.DATE_RECEIVED});
WHILE Added < Add
Do (target := target +1;
if dayofweek (target) in 2 to 6 and not (target in holidays)
then Added:=Added+1
else Added:=Added);
Target