Показать сообщение отдельно
Старый 25.02.2010, 15:30   #6  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от lev Посмотреть сообщение
ещё немного подумал, и решил что совсем красиво будет так:
X++:
qbds1.addRange( fieldnum( InventTrans, DatePhysical ) ).value(SysQuery::range(dBgn, dateMax()));
Спасибо за советы . Попробывал такое собрать :

PHP код:
element.query();
qr = new QueryRun);

qbds1 query.dataSourceTabletableNumInventSum ) );
qrn4  qbds1.addRangefieldNuminventSumInventLocationId ) );
qrn4.valuecInvLoc );

qbds2 query.addDataSourcetableNumInventTrans ), "InventTrans" );
qbds2.joinModeJoinMode::ExistsJoin );
qbds2.firstOnlytrue );

qrn1 qbds2.addRangefieldNumInventTransItemId ) );
qrn1.valuestrFmt'inventTrans.ItemId == inventSum.ItemId' ) );

qrn2 qbds2.addRangefieldNumInventTransInventDimId ) );
qrn2.valuestrFmt'inventTrans.InventDimId == inventSum.InventDimId' ) );

qrn3 qbds2.addRangefieldNumInventTransDatePhysical ) );
qrn3.valueSysQuery::rangedBgndateMax() ) ); 
Ето возвращяет такие селекты :

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 ... ) - все работает ... Чего ещё нехватает ?