|
|
#11 |
|
Участник
|
1. CASE, мо-моему, не только читабельнее, но и чуть-чуть быстрее чем IF..ELSE..IF
2. SETRANGE, по-моему, тоже быстрее чем SETFILTER, поэтому конкретно в этом случае можно обе даты фильтровать не с SETFILTER Код: TmpTimeBreakeCapacity.SETFILTER("Starting Date",'<=%1',CurrCapacityRec."Ending Date");
TmpTimeBreakeCapacity.SETFILTER("Ending Date",'>=%1',CurrCapacityRec."Starting Date");Код: TmpTimeBreakeCapacity.SETRANGE("Starting Date",0D,CurrCapacityRec."Ending Date");
TmpTimeBreakeCapacity.SETRANGE("Ending Date",CurrCapacityRec."Starting Date", 2999D);Если есть вероятность, что не всегда имеется отфильтрованная запись в TmpTimeBreakeCapacity, то можно перед FIND'ом это проверить через ISEMPTY, т.к. лишний (и не нашедший запись) FIND стоит по времени дороже: Код: ..............
TmpTimeBreakeCapacity.SETRANGE("Starting Date",0D,CurrCapacityRec."Ending Date");
TmpTimeBreakeCapacity.SETRANGE("Ending Date",CurrCapacityRec."Starting Date", 2999D);
TmpTimeBreakeCapacity.SETRANGE("Line No.",CurrCapacityRec."Entry No.");
IF TmpTimeBreakeCapacity.ISEMPTY THEN EXIT
ELSE TmpTimeBreakeCapacity.FINDFIRST;
REPEAT
...
UNTIL TmpTimeBreakeCapacity.NEXT = 0; |
|
|