Показать сообщение отдельно
Старый 01.09.2015, 17:16   #1  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
SQL в QueryBuildDataSource
Доброго времени суток!

Пытаюсь разобраться с Query и QueryBuildDataSource в Х++.

Есть SQL запрос такого вида:
PHP код:
select ma.MAINACCOUNTID,DA.NAME
from MainAccount ma
inner join DimensionAttributeValueCombination DAVC on DAVC
.MainAccount MA.RecId
    inner join DimensionHierarchy DH on DH
.RecId=DAVC.AccountStructure
        inner join DimensionHierarchyLevel DHL on DHL
.DimensionHierarchy=DH.RecId
            inner join DimensionAttribute DA on DA
.RecId=DHL.DimensionAttribute
where ma
.MAINACCOUNTID='632.000'
and DA.NAME=N'поставщик' 
Я в принципе записал его на Х++ но не уверен что правильно, и у меня не выходит применить условия:
PHP код:
where ma.MAINACCOUNTID='632.000'
and DA.NAME=N'поставщик' 
если я добавляю строку addRange то код не выполняется.

Вот мой код
X++:
Query q;
    QueryBuildDataSource qbMA;
    QueryBuildDataSource qbDAVC;
    QueryBuildDataSource qbDH;
    QueryBuildDataSource qbDHL;
    QueryBuildDataSource qbDA;
    
    q = new Query();
    
    qbMA = q.addDataSource(tablenum(MainAccount));
    qbMA.relations(false);
    
    qbDAVC = qbMA.addDataSource(tablenum(DimensionAttributeValueCombination));
    qbDAVC.relations(false);
    qbDAVC.addLink(fieldNum(DimensionAttributeValueCombination,MainAccount),fieldNum(MainAccount,RecId));
    qbDAVC.joinMode(JoinMode::InnerJoin);
    
    qbDH = qbDAVC.addDataSource(tablenum(DimensionHierarchy));
    qbDH.relations(false);
    qbDH.addLink(fieldNum(DimensionHierarchy,RecId),fieldNum(DimensionAttributeValueCombination,AccountStructure));
    qbDH.joinMode(JoinMode::InnerJoin);
    
    qbDHL = qbDH.addDataSource(tablenum(DimensionHierarchyLevel));
    qbDHL.relations(false);
    qbDHL.addLink(fieldNum(DimensionHierarchyLevel,DimensionHierarchy),fieldNum(DimensionHierarchy,RecId));
    qbDHL.joinMode(JoinMode::InnerJoin);
    
    qbDA = qbDHL.addDataSource(tablenum(DimensionAttribute));
    qbDA.relations(false);
    qbDA.addLink(fieldNum(DimensionAttribute,RecId),fieldNum(DimensionHierarchyLevel,DimensionAttribute));
    qbDA.joinMode(JoinMode::InnerJoin);
Подскажите правильно ли я его записал, как применить условие, и как его выполнить и узнать результат (меня интересует факт наличия строк удовлетворяющих условия запроса а не сами строки)?