AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.10.2008, 21:31   #11  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
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");
а с SETRANGE
Код:
TmpTimeBreakeCapacity.SETRANGE("Starting Date",0D,CurrCapacityRec."Ending Date");
TmpTimeBreakeCapacity.SETRANGE("Ending Date",CurrCapacityRec."Starting Date", 2999D);
3. Если позволяет версия Navision и база данных на SQL, то вместо FIND('-'), FIND('+') использоватъ FINDFIRST, FINDLAST
Если есть вероятность, что не всегда имеется отфильтрованная запись в 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;
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:12.