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