Показать сообщение отдельно
Старый 01.11.2007, 12:49   #1  
Mike2005 is offline
Mike2005
Участник
 
24 / 10 (1) +
Регистрация: 03.06.2005
Ошибка в интерпретации запроса
Есть вот такой запрос.
queryBalance.dataSourceTable(tableNum(BalanceLine)).findRange(fieldNum(BalanceLine, BOMId)).value(strfmt('!%1,!(%2)', parameter1, parameter2));

parameter1="Парам1";
parameter2="Парам2*,Парам3*";
Он интерпретируется в
((NOT (BOMId = Парам1) AND NOT (BOMId LIKE (Парам2*) OR BOMId LIKE Парам3*))).

Если же вводим 3-й параметр отдельно, т.е.
parameter1="Парам1";
parameter2="Парам2*";
parameter3="Парам3*";
То тогда SQL запрос выглядит так:
((NOT (BOMId = Парам1) AND NOT (BOMId LIKE Парам2*) AND NOT (BOMId LIKE Парам3*))).

По моей логике оба эти запроса должны быть равны, т.к. просто раскрыли скобки и OR заменилось на AND. По логике Axapta в первом случае выражение OR BOMId LIKE Парам3* по-просту игнорируется.
В конце концов пришлось оставить второй вариант с 3-мя параметрами
Где ошибка?