|
![]() |
#1 |
Участник
|
ок. убедили.
вариант S.Kuskov: приджойнить exist join тоже не подойдет. поскольку в запросе уже может быть join. http://msdn.microsoft.com/en-us/libr...36(AX.10).aspx тогда остается только перебор записей в случае, если критерий на accountNum установлен? |
|
![]() |
#2 |
Участник
|
Цитата:
X++: boolean findSuperCust(Query _srcQuery, CustAccount _custAccount = "КлиентАБВ") { Query q = new Query(_srcQuery); // создаем копию QueryBuildDataSource qbds = q.dataSourceTable(tablenum(custTable)); QueryBuildRange qbr; QueryRun qr; Range SuperCustRange = strfmt("(%1.%2 == %3)", qbds.name(), fieldStr(custTable, AccountNum)); // устанавливаем новый критерий или меняем существующий qbr = SysQuery::findOrCreateRange(qbds ,fieldnum(custTable, DataAreaId)); if (qbr.value()) qbr.value(strfmt("(%1 && %2)", SuperCustRange, qbr.value())); else qbr.value(SuperCustRange); // выполняем запрос qr = new QueryRun(q); return qr.next(); } |
|
![]() |
#3 |
Участник
|
Хм.
А что, уже стало возможно использовать совместно расширенный синтаксис фильтров и обычный?
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
![]() |
#4 |
Участник
|
Цитата:
Я тут ещё один чисто теоретический способ придумал ![]() Как понятно из обсуждения, основной проблемой является сложность присоединения, в случае уже имеющегося условия, нового контрольного условия по "И". Вот я и подумал раз уж это так проблемно, то пусть оно себе присоединяется по "ИЛИ". В результате исходный запрос изменится и это изменение можно будет анализировать. В случае если количество строк возвращаемое запросом (можно посчитать при помощи SysQuery::countTotal) станется прежним, это будет означать (конечно с определёнными ограничениями), что новое условие по ИЛИ никак не повлияло на выборку, а следовательно исходный запрос содержал в себе контрольное условие. Что и требовалость орпределить ![]() Недостатки: на время анализа вся выборка должна быть заблокирована от корректировок для того чтобы исключить возможность изменения количества строк в запросе из вне. |
|
![]() |
#5 |
Участник
|
или не содержал И искомого значения в базе вообще нет.
![]() не, не пойдет |
|
![]() |
#6 |
Участник
|
Цитата:
Пользователи его просто не видят в интерфейсе ![]() Кстати, никто не обращал внимание, что критерии со статусом Hidden - не такие уж и невидимые? Достаточно в форме расширенного фильтра вызвать расширенный фильтр (в 2009-й через комбинацию клавишь) и нажать Ok ![]()
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#7 |
Участник
|
|
|
![]() |
#8 |
Участник
|
Можно попробовать добавить явный критерий по RecId искомой записи клиента, если он не используется в запросе (обычно не используется
![]() Если используется, то через расширенный фильтр по аналогии с кодом клиента описанной выше у S.Kuskov. Или напрямую распарсить критерии по RecId и либо найти в них искомый и оставить только его либо выдать облом ![]() Последний раз редактировалось Alexius; 12.09.2011 в 17:32. |
|
Теги |
query, как правильно |
|
![]() |
||||
Тема | Ответов | |||
Очередной вопрос про Query | 45 | |||
Вопрос по query? | 1 | |||
Вопрос по query и join | 2 | |||
Вопрос по запросу (query) | 2 | |||
Вопрос знатокам QBE и Query в AXAPTA | 6 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|