![]() |
#1 |
Участник
|
![]()
...
qbr = qbds.addRange(FieldNum(InventTrans, StatusReceipt)); qbr.value(enum2str(StatusReceipt::Purchased)); qbr = qbds.addRange(FieldNum(InventTrans, StatusIssue)); qbr.value(enum2str(StatusIssue::Sold)); Аксапта формирует запрос так ...((StatusReceipt = Закуплено) AND (StatusIssue = Продано)) А мне надо сделать не AND, а OR! Неужели это невозможно? |
|
![]() |
#2 |
Модератор
|
Developer's Guide -> Creating queries -> Query basics -> Organization of queries -> Ranges
|
|
![]() |
#3 |
Участник
|
Посмотрел в Developer's Guide -> Creating queries -> Query basics -> Organization of queries -> Ranges, там ответа на мой вопрос нет.
Так значит невозможно? |
|
![]() |
#4 |
Участник
|
|
|
![]() |
#5 |
Участник
|
Насколько я понимаю на http://axapta.mazzy.ru/hints/search/
рассматривается случай когда добавляется несколько Range на одно поле в таблице. А в моем вопросе добавляются два Range на разные поля. |
|
![]() |
#6 |
Модератор
|
Цитата:
Изначально опубликовано diviza
А в моем вопросе добавляются два Range на разные поля. Тогда Best Practices -> Shared standards -> X++ standards -> Query programming -> Advanced query range value expressions ![]() |
|
![]() |
#7 |
Участник
|
Цитата:
Изначально опубликовано diviza
А в моем вопросе добавляются два Range на разные поля. |
|
![]() |
#8 |
Участник
|
Цитата:
Изначально опубликовано mazzy
А вы попробуйте ... qbr = qbds.addRange(FieldNum(InventTrans, StatusReceipt)); qbr.value(strfmt("%1 || %2 = %3", enum2str(StatusReceipt::Purchased), FieldStr(InventTrans, StatusIssue), enum2str(StatusIssue::Sold))); ... // вместо || ставил и OR В отладчике получаю: ... ((StatusReceipt = Закуплено || StatusIssue = Продано)) ... При мониторинге запросов SQL получаю в лог файле: ... AND (B.STATUSRECEIPT=255) ... Естественно, это не тот результат который я хотел получить. Где же ошибка? |
|
![]() |
#9 |
Участник
|
Внимательнее читаем Best Practice (в совете Сергея, это также процитировано).
Цитата:
In x++ you can use for example int2str to convert an enumerated value to the suitable numeric format.
PHP код:
PHP код:
|
|
![]() |
#10 |
Участник
|
Цитата:
Изначально опубликовано dn
... вместо enum2str(StatusReceipt::Purchased) нужно использовать int2str(StatusReceipt::Purchased) PHP код:
... ((StatusReceipt = 1 || StatusIssue = 1)) ... При мониторинге запросов SQL опять получаю в лог файле: ... AND (B.STATUSRECEIPT=255) ... С тем же результатом ![]() |
|
![]() |
#11 |
----------------
|
Чувствую, пора вмешаться
PHP код:
|
|
![]() |
#12 |
Участник
|
Откройте всё-таки на досуге Best Practice. Там много чего полезного. И даже примеры есть...
PHP код:
|
|
![]() |
#13 |
Участник
|
Всем спасибо! Получилось.
![]() p.s. Что интересно, что верно как "=" (см. ответ Wamr), так и "==" (см. ответ dn). Ранее я пробовал такой вариант "(%1 == %2)||(%3 == %4)", но почему-то не догадался поставить внешнюю пару скобок. ![]() |
|
![]() |
#14 |
Участник
|
А как быть если требуется like?
вариант "((%1 like %2)||(%3 like %4))" как и сказано в http://axapta.mazzy.ru/hints/search/ не работает |
|