01.11.2007, 12:49 | #1 |
Участник
|
Ошибка в интерпретации запроса
Есть вот такой запрос.
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-мя параметрами Где ошибка? |
|
01.11.2007, 13:13 | #2 |
MCTS
|
Цитата:
Если же вводим 3-й параметр отдельно
Как вы parameter3 "вводите"?
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
01.11.2007, 13:35 | #3 |
Участник
|
Добавил еще одну строковую переменную. Было две- parameter1,parameter2. Добавил parameter3
|
|
01.11.2007, 16:02 | #4 |
MCTS
|
Посмотрите Limitations
There are two major limitations to the Query Expressions syntax. The first is the loss of support for wildcards and comma-separated range values
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
02.11.2007, 06:31 | #5 |
Участник
|
Спасибо. Именно то, что нужно. Понял, что решил проблему правильно, добавив еще один параметр.
|
|