25.02.2010, 10:26 | #1 |
Участник
|
Помогите при запросе ...
Здраствуйте ,
Есть стандартная аналитика и станд. query в рапорте : InventDim -> InventSum -> InventTable ... Дело в том что хочу немножко поправить запрос , но неполучаеться . Мое желание : PHP код:
PHP код:
Спасибо заранее ! С уважением , Римантас |
|
25.02.2010, 10:38 | #2 |
Участник
|
Вы знакомы с http://www.axaptapedia.com/index.php...ultiple_tables?
Хотя, сейчас присмотрелся к запросу. Расширенный синтаксис там вообще не нужен. Вам же просто нужно коректно записать условие '>=' http://axapta.mazzy.ru/lib/search/ Последний раз редактировалось S.Kuskov; 25.02.2010 в 11:05. |
|
25.02.2010, 11:33 | #3 |
MCTS
|
А таблицы слинкованы правильно?
В смысле без наложения условия по DatePhysical запрос работает? X++: qr = new QueryRun( element.query() ); qbds1 = qr.query().dataSourceName( "InventSum" ).addDataSource( tableNum( InventTrans ) ); qbds1.fetchMode( joinMode::ExistsJoin ); // qbds1.relations( false ); qbds1.firstOnly( true ); qbds1.sortIndex( indexnum( InventTrans, ItemIdx ) ); qbds1.addLink( fieldnum( InventSum, ItemId ), fieldnum( InventTrans, ItemId ) ); qbds1.addLink( fieldnum( InventSum, InventDimId ), fieldnum( InventTrans, InventDimId ) ); // qbds1.addRange( fieldnum( InventTrans, DatePhysical ) ).value( 'invTrn.DatePhysical >= dBgn' );
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
25.02.2010, 11:51 | #4 |
Ищущий знания...
|
меня смущает вот эта строка:
X++: qbds1.addRange( fieldnum( InventTrans, DatePhysical ) ).value( 'invTrn.DatePhysical >= dBgn' ); может там должно быть что то типа X++: qbds1.addRange( fieldnum( InventTrans, DatePhysical ) ).value(strFmt('%1..', dBgn ));
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
25.02.2010, 11:56 | #5 |
Ищущий знания...
|
ещё немного подумал, и решил что совсем красиво будет так:
X++: qbds1.addRange( fieldnum( InventTrans, DatePhysical ) ).value(SysQuery::range(dBgn, dateMax()));
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
25.02.2010, 15:30 | #6 |
Участник
|
Цитата:
PHP код:
SELECT * FROM InventSum WHERE InventDim.inventDimId = InventSum.InventDimId AND ((ItemId = 1062A)) AND ((InventLocationId = LS nukain.50)) JOIN * FROM InventTable WHERE InventSum.ItemId = InventTable.ItemId SELECT FIRSTONLY * FROM InventTrans WHERE ((ItemId = inventTrans.ItemId == inventSum.ItemId)) AND ((inventDimId = inventTrans.InventDimId == inventSum.InventDimId)) AND ((DatePhysical>=2010.01.01 AND DatePhysical<=2153.12.31)) Но - while ( qr.next() ) - пустой ... А по простому селекту ( в первом сообщении while select ... ) - все работает ... Чего ещё нехватает ? |
|
25.02.2010, 15:48 | #7 |
Ищущий знания...
|
просто немного не правильный ситаксис.
во первых QueryRun надо инициализировать после того как собрали Query... предполагаю что Ваш запрос должен выглядеть так (это пример): X++: Query query; QueryBuildDataSource qbdsInventSum, qbdsInventTrans; QueryBuildRange qbr; QueryRun qr; InventLocationId cInvLoc; TransDate dBgn; ; query = element.Query(); qbdsInventSum = query.dataSourceTable(tableNum(InventSum)); qbr = qbdsInventSum.addRange(fieldNum(InventSum, InventLocationId)); qbr.value(QueryValue(cInvLoc)); qbdsInventTrans = qbdsInventSum.addDataSource(tableNum(InventTrans)); qbdsInventTrans.addLink(fieldNum(InventSum, ItemId), fieldNum(InventTrans, ItemId)); qbdsInventTrans.addLink(fieldNum(InventSum, InventDimId), fieldNum(InventTrans, InventDimId)); qbdsInventTrans.joinMode(JoinMode::ExistsJoin); qbdsInventTrans.firstOnly(true); qbr = qbdsInventTrans.addRange(fieldNum(InventTrans, DatePhysical)); qbr.value(SysQuery::range(dBgn, dateMax())); qr = new QueryRun(query);
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
25.02.2010, 16:35 | #8 |
Участник
|
Цитата:
Сообщение от lev
просто немного не правильный ситаксис.
во первых QueryRun надо инициализировать после того как собрали Query... предполагаю что Ваш запрос должен выглядеть так (это пример): X++: Query query; query = element.Query(); qbdsInventSum = query.dataSourceTable(tableNum(InventSum)); qbr = qbdsInventSum.addRange(fieldNum(InventSum, InventLocationId)); qbr.value(QueryValue(cInvLoc)); qbdsInventTrans = qbdsInventSum.addDataSource(tableNum(InventTrans)); qbdsInventTrans.addLink(fieldNum(InventSum, ItemId), fieldNum(InventTrans, ItemId)); qbdsInventTrans.addLink(fieldNum(InventSum, InventDimId), fieldNum(InventTrans, InventDimId)); qbdsInventTrans.joinMode(JoinMode::ExistsJoin); qbdsInventTrans.firstOnly(true); qbr = qbdsInventTrans.addRange(fieldNum(InventTrans, DatePhysical)); qbr.value(SysQuery::range(dBgn, dateMax())); qr = new QueryRun(query); С уважением , Римантас |
|
25.02.2010, 16:45 | #9 |
Участник
|
Цитата:
Сообщение от lev
просто немного не правильный ситаксис.
во первых QueryRun надо инициализировать после того как собрали Query... предполагаю что Ваш запрос должен выглядеть так (это пример): X++: Query query; QueryBuildDataSource qbdsInventSum, qbdsInventTrans; QueryBuildRange qbr; QueryRun qr; InventLocationId cInvLoc; TransDate dBgn; ; query = element.Query(); qbdsInventSum = query.dataSourceTable(tableNum(InventSum)); qbr = qbdsInventSum.addRange(fieldNum(InventSum, InventLocationId)); qbr.value(QueryValue(cInvLoc)); qbdsInventTrans = qbdsInventSum.addDataSource(tableNum(InventTrans)); qbdsInventTrans.addLink(fieldNum(InventSum, ItemId), fieldNum(InventTrans, ItemId)); qbdsInventTrans.addLink(fieldNum(InventSum, InventDimId), fieldNum(InventTrans, InventDimId)); qbdsInventTrans.joinMode(JoinMode::ExistsJoin); qbdsInventTrans.firstOnly(true); qbr = qbdsInventTrans.addRange(fieldNum(InventTrans, DatePhysical)); qbr.value(SysQuery::range(dBgn, dateMax())); qr = new QueryRun(query); InventSum = qr.get( tableNum( InventSum ) ); ... :-) |
|
25.02.2010, 16:57 | #10 |
Ищущий знания...
|
бывает
на здоровье
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|