|
![]() |
#1 |
Участник
|
да не в том дело!
Все примеры работают с qbds = query.addDataSource(tablenum(RAssetTransferTable)); , а мне необходимо qbds = this.query().dataSourceTable(tablenum(RAssetTransferTable));! как только меняешь одно на другое сразу получаеш: Ошибка расширенного диапазона запроса: RAssetLocation.Location не является корректной парой datasource.field рядом с 60. ![]() |
|
![]() |
#2 |
Moderator
|
А в this.query() -то у вас что сидит перед добавлением в него чего-либо?
|
|
![]() |
#3 |
MCITP
|
![]()
Если нужно именно добавить к существующей квери, то вероятно надо
X++: qbds = this.query().addDataSource(tablenum(RAssetTransferTable)); Может вам лучше привести сюда весь код?
__________________
Zhirenkov Vitaly |
|
![]() |
#4 |
Moderator
|
А уберите-ка RAssetLocation, оставьте так:
X++: "((RAssetTransferTable.NewLocation==Location)||
(RAssetTransferTable.OldLocation==Location))" |
|
![]() |
#5 |
Участник
|
qbds = this.query().dataSourceTable(tablenum(RAssetTransferTable));
//SELECT * FROM RAssetTransferTable USING INDEX DateIdx qbds.addDataSource(tablenum(RAssetLocation)); //SELECT * FROM RAssetTransferTable USING INDEX DateIdx JOIN * FROM RAssetLocation qbds.addRange(fieldNum(RAssetTransferTable, recid)).value('(RAssetTransferTable.NewLocation==RAssetLocation.Location)'); //SELECT * FROM RAssetTransferTable USING INDEX DateIdx WHERE (((RAssetTransferTable.NewLocation==RAssetLocation.Location))) JOIN * FROM RAssetLocation Уже пробовал убрать RAssetLocation ошибка почти та же! dataSourceTable на addDataSource тоже безрезультатно! Последний раз редактировалось hated8; 16.01.2009 в 12:37. |
|
![]() |
#6 |
MCITP
|
![]()
а добавлять этот рэндж ко второму датасорсу пробовали?
X++: qbds.addDataSource(tablenum(RAssetLocation)).addRange(fieldNum(RAssetLocation, recid)).value(....
__________________
Zhirenkov Vitaly |
|
![]() |
#7 |
Участник
|
Картинка не изменилась!
![]() Те же ошибки! |
|
![]() |
#8 |
Участник
|
![]()
Возможно дело в названии ичточников данных, попробуйте использовать QueryBuildDataSource.name() при формировании связки.
Набросал тут упрощенную версию запроса по RAssetLocation: X++: static void jbRAssetLocationOR(Args _args) { RAssetLocation rAssetLocation ; RAssetTransferTable rAssetTransferTable ; QueryBuildDataSource qbdsRAssetLocation ; QueryBuildDataSource qbdsRAssetTransfer ; Range rangeRAsset ; RAssetLocationId rAssetLocationId ; Query query ; QueryRun queryRun ; ; rAssetLocationId = '1 01 01 11 00' ; info( 'From X++ Select:' ) ; while select rAssetLocation where rAssetLocation.Location == rAssetLocationId join rAssetTransferTable where rAssetTransferTable.NewLocation == rAssetLocation.Location || rAssetTransferTable.OldLocation == rAssetLocation.Location { info( rAssetTransferTable.JournalNum ) ; } query = new Query() ; qbdsRAssetLocation = query.addDataSource( tableNum( RAssetLocation ) ) ; qbdsRAssetTransfer = qbdsRAssetLocation.addDataSource( tableNum( RAssetTransferTable ) ) ; qbdsRAssetTransfer.relations( false ) ; rangeRAsset = strfmt( '((%1.%2 == %4.%5) || (%1.%3 == %4.%5))' , qbdsRAssetTransfer.name() , fieldStr( RAssetTransferTable, NewLocation ), fieldStr( RAssetTransferTable, OldLocation ), qbdsRAssetLocation.name() , fieldStr( RAssetTable, Location ) ) ; findOrCreateRange_W( qbdsRAssetLocation, fieldNum( RAssetLocation, Location ), SysQuery::value( rAssetLocationId ) ) ; findOrCreateRange_W( qbdsRAssetTransfer, fieldNum( RAssetTransferTable, RecId ), rangeRAsset ) ; info( 'From QueryRun:' ) ; info( qbdsRAssetLocation.toString() ) ; queryRun = new QueryRun( query ) ; while( queryRun.next() ) { rAssetTransferTable = queryRun.get( tableNum( RAssetTransferTable ) ) ; info( rAssetTransferTable.JournalNum ) ; } } |
|
|
За это сообщение автора поблагодарили: Gustav (7). |
![]() |
#9 |
Moderator
|
Цитата:
![]() X++: "((RAssetTransferTable_1.NewLocation==RAssetLocation_1.Location)||
(RAssetTransferTable_1.OldLocation==RAssetLocation_1.Location))" |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|