![]() |
#1 |
Участник
|
Разбираюсь с QueryBuildRange.value(). Задачка: отобрать все записи таблицы Tаблица, у которых стринговое поле X равно значению переменной value1, если поле Y пустое, и значению value2, если поле Y не пустое.
Посмотрел, что в value() можно писать выражения (например вот как здесь : http://www.axforum.ru/forums/showthread.ph...d=1634#post1634 ). Пишу так: <div class='XPPtop'>X++</div><div class='XPP'> qBDS = query.addDataSource([color=:blue]tableNum[/color](Таблица),[color=:red]"A"[/color]); qBR = qBDS.addRange([color=:blue]fieldNum[/color](Таблица, X)); qBR.value([color=:red]" ! A.Y ? value1 : value2"[/color]);</div> Такая конструкция компилируется, но проверка не срабатывает: выводятся ВООБЩЕ ВСЕ СУЩЕСТВУЮЩИЕ записи. Т.е. range полностью игнорируется. В чем дело? Что не так ? Нельзя использовать условие ? Или в Аксапте 3.0 вообще нельзя использовать подобные выражения в range.value() ? |
|
![]() |
#2 |
Участник
|
Не. Вражения в сложном условии не сработают
см. http://axapta.mazzy.ru/hints/search/ особенно внизу в дополнениях про пустые строки здесь http://axapta.mazzy.ru/hints/emptyqueryrange/ |
|
![]() |
#3 |
Модератор
|
И вообще поосторожнее с пробелами в Range
http://stopbugs.erpkb.com/view.php?id=16
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#4 |
Участник
|
Спасибо. Прочел. Действительно. Жаль, однако.
|
|
![]() |
#5 |
Участник
|
Vadik, дополняю твой пример с сообщением "Ошибка расширенного диапазона запроса". Возникает не только c пробелом, но и cо знаком отрицания :
Пример 1 - с полем датасорса A.Y: range.value("(A.Y)"); run-time ошибки нет range.value("(!A.Y)"); "Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 4." Пример 2 - с переменной Х: range.value("(X)"); "Ошибка расширенного диапазона запроса: Ожидается правая круглая скобка рядом с 0. range.value("(!X)"); "Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 4." |
|