|
|
|
|
#1 |
|
Axapta
|
Я понимаю, что salesLine.InventTransId по хорошему должен быть непустым, но правильнее сделать все-таки вот так:
X++: void SelectNextSample(salesID _salesID, inventtransID _inventTransID = '') { salesLine salesLine; ; while select salesLine where salesLine.SalesId == _salesID && // (salesLine.InventTransId == _inventTransID || _inventTransID == '') (_inventTransID == '' || salesLine.InventTransId == _inventTransID) { info(salesLine.ItemId); } } |
|
|
|
| За это сообщение автора поблагодарили: lev (1). | |
|
|
#2 |
|
Ищущий знания...
|
Цитата:
когда писал пример не заострил внимание на логическом построении условия с inventTransId. Конечно лучше вначале проверить заполнена ли переменная с критерием, а потом уже проверить соответствие этой переменной с полем в таблице.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#3 |
|
Участник
|
Вообще по хорошему вычисление выражения (_inventTransID == '') должно быть выполнено оптимизатором до цикла. И на SQL-сервер должен уйти следующий запрос, который в свою очередь должен быть в итоге соптимизирован до простейшего запроса.
Код: select salesLine
where
salesLine.SalesId == _salesID &&
(salesLine.InventTransId == _inventTransID || true)Код: // Оптимизируем
select salesLine
where
salesLine.SalesId == _salesID && trueКод: // Ещё раз оптимизируем
select salesLine
where
salesLine.SalesId == _salesID
|
|
|
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|