Показать сообщение отдельно
Старый 22.01.2004, 13:12   #1  
xshaman is offline
xshaman
Участник
 
36 / 11 (1) +
Регистрация: 17.12.2003
Адрес: Санкт-Петербург
QBDS проблема с тремя датасоурсами
Суть задачи
сделать запрос в рантайме
Select * FROM InventTrans JOIN * FROM InventDim ON InventTrans.InventDimID = InventDim.InventDimId JOIN * FROM InventTable ON InventTrans.ItemId = InventTable.ItemId

пишу код
PHP код:
void initQuery()
{
    
Query   query;
    
int i;
    
str s;
    
QueryBuildDataSource qbdsqbdsInventDimqbdsInventTableqbdsInventBatch;
    
QueryBuildRange      qbr;
    
QueryBuildLink       qbl;
;
    
query = new Query();
    
qbds  query.addDataSource(tablenum(InventTrans));
    
qbr   qbds.addRange(FieldNum(InventTransItemId));
    
qbr   qbds.addRange(FieldNum(InventTransStatusReceipt));
    
qbr.value(Int2str(StatusReceipt::Ordered));
    
qbr.status(RangeStatus::Hidden);
    
// первый подчиненный главному дс добавляется бенз проблем вне зависимости 
    // InventDim сюда сунуть или InventTable
    
qbdsInventTable qbds.addDataSource(tableNum(InventTable));
    
qbdsInventTable.joinMode(SQLBuilderJoinType::InnerJoin);
    
qbl qbdsInventTable.addLink(FieldNum(InventTransItemId), FieldNum(InventTableItemId));
    
// А вот когда добавляю второй qdbs берет и выкидывает предыдущий джойн
    
qbdsInventDim qbds.addDataSource(tableNum(InventDim));
    
qbl   qbdsInventDim.addLink(FieldNum(InventTransInventDimId), FieldNum(InventDimInventDimId));
    
qbr   qbdsInventDim.addRange(FieldNum(InventDimInventLocationId));



    
reportQuery = new sysqueryrun(query);

Вопрос, как это можно решить, и что я делаю неправильно? Axapta 3.0