30.09.2008, 12:09 | #1 |
Участник
|
QueryBuildRange в select.. where
Имеется:
qbr = qbd.addRange(fieldNum(LedgerJournalTrans, TransDate)); как в select добавить условие из range: while select AvLedgerJournalTrans where AvLedgerJournalTrans.TransDate == qbr ?? возможно ли такое? |
|
30.09.2008, 12:13 | #2 |
Ищущий знания...
|
X++: while select AvLedgerJournalTrans where AvLedgerJournalTrans.TransDate == qbr.value(); чтобы найти этот range в запросе нужно использовать метод findRange() у QueryBuildDataSource.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
30.09.2008, 12:16 | #3 |
Участник
|
пробовал так, при компиляции " типы операнда не совместимы с оператором" .
да, заполняется пользователем. у меня 2.5 Акс. может она что-то не понимает) |
|
30.09.2008, 12:20 | #4 |
Ищущий знания...
|
вот написал джоб естественно типы сравниваемых полей должны совпадать!
X++: static void test(Args _args) { Query query = new Query(); QueryBuildDataSource qbds; QueryBuildRange qbr; InventTable inventTable; ; // создаем запрос qbds = query.addDataSource(tableNum(InventTable)); qbds.addRange(fieldNum(InventTable, ItemId)).value('Номенклатура'); // ищем в запросе range qbr = qbds.findRange(fieldNum(InventTable, ItemId)); // используем в запросе select InventTable where inventTable.ItemId == qbr.value(); }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
30.09.2008, 12:22 | #5 |
Ищущий знания...
|
чтобы быть уверенным в том что сходятся типы полей, можно сделать через переменную:
X++: static void test(Args _args) { Query query = new Query(); QueryBuildDataSource qbds; QueryBuildRange qbr; InventTable inventTable; ItemId itemId; ; // создаем запрос qbds = query.addDataSource(tableNum(InventTable)); qbds.addRange(fieldNum(InventTable, ItemId)).value('Номенклатура'); // ищем в запросе range qbr = qbds.findRange(fieldNum(InventTable, ItemId)); itemId = qbr.value();// используем переменную // используем в запросе select InventTable where inventTable.ItemId == itemId; }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
30.09.2008, 12:42 | #6 |
Участник
|
Цитата:
В любом случае, ИМХО, подход кривой, propeller, Вы бы рассказали зачем Вам это понадобилось? |
|
|
За это сообщение автора поблагодарили: lev (1). |
30.09.2008, 12:42 | #7 |
Участник
|
Все это будет работать только в случае точного указания искомого значения в range.
В общем случае (range.value("A, B, C..D, !E, F*, *G, *H*")) проблема с добавлением в select условий из Query неразрешима. |
|
30.09.2008, 12:52 | #8 |
Ищущий знания...
|
Точно, никогда не обращал внимания Спасибо Lemming.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
30.09.2008, 13:12 | #9 |
Moderator
|
Цитата:
X++: qr = new QueryRun(..._ds.queryRun().query()); while(qr.next()) { // что-то делаем с каждой записью из отфильтрованного пользователем набора } |
|
30.09.2008, 13:27 | #10 |
Участник
|
в квери у меня один запрос по 2 таблицам с группорвками,
селектом нужно было сделать подобный запрос но еще +2 таблицы джоином, а потом уже группировки. Хорошо если нельзя селектом, сделал второй query, написал в нем: qbr2.value(qbr1.value()) - не работает написал qbr2 = qbr1 тоже не работает, ну я думаю так и не должно. как правильно тогда передать из одного query1 рендж в другой query2? |
|
30.09.2008, 13:28 | #11 |
MCTS
|
Цитата:
как правильно тогда передать из одного query1 рендж в другой query2?
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
30.09.2008, 13:35 | #12 |
Ищущий знания...
|
Что то типа такого:
X++: static void test(Args _args) { Query query = new Query(); QueryRun queryRun; QueryBuildDataSource qbds, qbds1, qbdsJoin; ; // первый запрос qbds = query.addDataSource(tableNum(InventTable)); qbds.addRange(fieldNum(InventTable, ItemId)).value('Номенклатура'); queryRun = new QueryRun(query); // джойним ещё таблицу qbds1 = queryRun.query().dataSourceTable(tableNum(InventTable)); qbdsJoin = qbds1.addDataSource(tablenum(InventItemGroup)); qbdsJoin.relations(true); qbdsJoin.addRange(fieldNum(InventItemGroup, ItemGroupId)).value(QueryValue('Группа')); }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем Последний раз редактировалось lev; 30.09.2008 в 13:37. Причина: исправил relation на relationS |
|
Теги |
join, query |
|
Похожие темы | ||||
Тема | Ответов | |||
Разница NotInTTS и Found | 6 | |||
Ошибка при старте АОСа | 4 | |||
gatesasbait: Reverse keyword on Select Statements | 0 | |||
Вопрос про Demand Planner | 4 | |||
select * where ... | 10 |
|