|
02.02.2015, 22:47 | #1 |
Участник
|
добавить один Query в другой
коллеги, многократно обсуждавшуюся тему связывания двух запросов хотелось бы поднять вновь.
имею желание запустить тот же запрос по результатам работы первого, и мыслится мне в этой связи следующая конструкция. ... myQuery2 = new Query(myQuery1); this.addNewRangeValues(myQuery1); // тут мои запросы становятся разными, myQuery1 делает более узкую выборку. this.addExistsJoin(myQuery2, myQuery1); // а вот тут я хочу, чтобы мой первый, более узкий запрос прилепился к хвосту с условием exists join. какие будут соображения? дополнительные детали. коренная таблица reqTrans, из которой хочу выбрать только те записи, для которых по тем же itemId и CovInventDimId существуют плановые ордера. всяких разных фильтров и прочих таблиц пользователь может надобавлять безудержно в диалоге отчёта.
__________________
Felix nihil admirari |
|
03.02.2015, 02:53 | #2 |
Дмитрий Ерин
|
Цитата:
1) существуют в принципе (в таблице) или 2) существуют в видимой выборке (после фильтров пользователя)? В первом случае, мне кажется, можно обойтись без склеивания запросов. Просто приджойнить к myQuery1 еще один datasource, скажем, planReqTrans с наложенными фильтрами (которые подразумеваются в addNewRangeValues).
__________________
|
|
03.02.2015, 18:00 | #3 |
Участник
|
разумеется, вариант номер 2.
по сути требуется добавить все источники данных с отношениями-связями и наложенными фильтрами из первого запроса "под хвост" второму и сделать exists join.
__________________
Felix nihil admirari |
|
04.02.2015, 08:04 | #4 |
Участник
|
Я не очень понял те танцы с бубнами, которые вы исполняете. Зачем вам два Query? Отображайте пользователю тот запрос по которому потом будете работать, пусть пользователь прямо в него добавляет всё что хочет.
|
|
04.02.2015, 17:34 | #5 |
Участник
|
Цитата:
пользователь видит тот запрос, по которому всё выводится, и все нужные фильтры туда добавляет. проблема в том, чтобы потом из таблицы reqTrans мне нужно разложить строки во временную таблицу, которая "кормит" отчёт, по столбцам в соответствии со значением refType. среди прочих параметров, доступных пользователю есть "показывать пустые строки", который решает, выводить ли всё содержимое или только те, где колонка "запланировано" не пуста. сейчас я запускаю запрос как есть, а потом "прибиваю" ненужные строки прямо во времянке. X++: /// <summary> /// Gets the data from <c>cgiCutOrderReportTmp</c> for those only with planned transactions. /// </summary> /// <returns> /// The <c>cgiCutOrderReportTmp</c> temporary table. /// </returns> private void getCgiCutOrderReportTmpPlannedOnly() { cgiCutOrderReportTmp cgiCutOrderReportTmpPlanned; delete_from cgiCutOrderReportTmp notexists join cgiCutOrderReportTmpPlanned where cgiCutOrderReportTmpPlanned.ItemId == cgiCutOrderReportTmp.ItemId && cgiCutOrderReportTmpPlanned.cgiInventColorId == cgiCutOrderReportTmp.cgiInventColorId && cgiCutOrderReportTmpPlanned.cgiQtyPlanned; }
__________________
Felix nihil admirari |
|
05.02.2015, 08:20 | #6 |
Участник
|
Цитата:
Проблема с реализацией Exists/notexists join. AX2009. Не используйте NotExists P.S.: Хотя по той же ссылке, что я привел говорят, что через Query оно должно работать. Нужно пробовать. Готового решения нет, но теоретически можно обойти пользовательский запрос и поэлементно скопировать его к себе. Последний раз редактировалось S.Kuskov; 05.02.2015 в 08:29. |
|
|
За это сообщение автора поблагодарили: wojzeh (1). |
05.02.2015, 18:12 | #7 |
Участник
|
Цитата:
Цитата:
Сообщение от S.Kuskov
Проблема с реализацией Exists/notexists join.
AX2009. Не используйте NotExists во! вот именно об этом и речь! делал ли кто-нибудь уже такой поэлементный перенос?
__________________
Felix nihil admirari |
|
|
За это сообщение автора поблагодарили: Logger (1). |
05.02.2015, 21:58 | #8 |
Участник
|
|
|
05.02.2015, 19:04 | #9 |
Участник
|
Вот тут приводится код создания точной копии Query с перебиванием dynalink'ов в range'и. По аналогии можно и обычные range'и копировать, хотя, конечно, придется повозиться.
Последний раз редактировалось gl00mie; 05.02.2015 в 19:08. |
|
|
За это сообщение автора поблагодарили: wojzeh (1). |
05.02.2015, 19:10 | #10 |
Участник
|
Цитата:
Сообщение от gl00mie
Вот тут приводится код создания точной копии Query с перебиванием dynalink'ов в range'и. По аналогии можно и обычные range'и копировать, хотя, конечно, придется повозиться.
не знал, что при стандартной передаче запроса что-то теряется. это ж полный экибастуз!
__________________
Felix nihil admirari |
|
Теги |
query, range, relation, ax2012 |
|
|