AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.06.2010, 09:34   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Создание запроса программно
Задача определить корреспонденцию балансовых с забалансовыми счетами.
В плане счетов ввела галки Балансовый/Забалансовый.
Идею условие с чем может корреспондировать на плане счетов не предлагать, по некоторым причинам не подходит.

Пишу код

X++:
    Query qryLTbl1;
    QueryRun qrunLTbl1;
    QueryBuildDataSource qbdsLTbl1;
    QueryBuildRange qbrOutBalance1;
    LedgerTable _LTbl1Q;

    QueryBuildDataSource qbdsLT1;
    QueryBuildRange qbrPeriod1;
    QueryBuildRange qbrPeriodType1;
    QueryBuildRange qbrType1;
    QueryBuildRange qbrAccountNum1;
    QueryBuildRange qbrD_C;
    QueryBuildRange qbrBalanceC1;
    LedgerTrans _LTQ1;

    QueryBuildDataSource qbdsLT2;
    LedgerTrans _LTQ2;
    QueryBuildRange qbrD_C2;

    QueryBuildDataSource qbdsLTbl2;
    QueryBuildRange qbrOutBalance2;
    LedgerTable _LTbl2Q;

    str 254 _periodLT;
    str 254 _periodCode;

   qryLTbl1  = new Query();
        qbdsLTbl1 = qryLTbl1.addDataSource(tablenum(LedgerTable),'lbdt2');
        qbrOutBalance1 =  qbdsLTbl1.addRange(fieldnum(LedgerTable,OutBalance));
        qbrOutBalance1.value(enum2str(NoYes::Yes));

        qbdsLT1 = qbdsLTbl1.addDataSource(tablenum(LedgerTrans),'lbdt20');
        qbdsLT1.fetchMode(JoinMode::INNERJOIN);
        qbdsLT1.relations(true);
        qbdsLT1.addLink(fieldnum(LedgerTrans, accountNum), fieldnum(LedgerTable, accountNum));
        qbrPeriod1 =  qbdsLT1.addRange(fieldnum(LedgerTrans,TransDate));
        _periodLT = Date2str(fromdate,12,2,2,2,2,2)+'..'+Date2str(todate,12,2,2,2,2,2);
        qbrPeriod1.value(_periodLT);
        qbrPeriodType1 =  qbdsLT1.addRange(fieldnum(LedgerTrans,PeriodCode));
        qbrPeriodType1.value(enum2str(PeriodCode::Regular));
        qbrD_C =  qbdsLT1.addRange(fieldnum(LedgerTrans,Crediting));
        qbrD_C.value(enum2str(NoYes::No));

        qbdsLT2 = qbdsLT1.addDataSource(tablenum(LedgerTrans),'lbdt21');
        qbdsLT2.fetchMode(JoinMode::INNERJOIN);
        qbdsLT2.relations(false);
        qbdsLT2.addLink(fieldnum(LedgerTrans, accountNum), fieldnum(LedgerTrans, accountNum));
        qbdsLT2.addLink(fieldnum(LedgerTrans, BondBatch_RU), fieldnum(LedgerTrans, BondBatch_RU));
        qbdsLT2.addLink(fieldnum(LedgerTrans, BondBatchTrans_RU), fieldnum(LedgerTrans, BondBatchTrans_RU));

        qbrD_C2 =  qbdsLT2.addRange(fieldnum(LedgerTrans,Crediting));
        qbrD_C2.value(enum2str(NoYes::Yes));
        qbdsLTbl2 = qbdsLT2.addDataSource(tablenum(LedgerTable),'lbdt211');
        qbrOutBalance2 =  qbdsLTbl2.addRange(fieldnum(LedgerTable,OutBalance));
        qbrOutBalance2.value(enum2str(NoYes::No));
        qbdsLTbl2.fetchMode(JoinMode::INNERJOIN);
        qbdsLTbl2.addLink(fieldnum(LedgerTrans, accountNum), fieldnum(LedgerTable, accountNum));

        qrunLTbl1 = new QueryRun(qryLTbl1);
        while (qrunLTbl1.next())
        {
        info ('11');
        }
Не работает.

Итоговый запрос выглядит так
SELECT * FROM LedgerTable

WHERE ((OutBalance = Да))

JOIN * FROM LedgerTrans WHERE LedgerTable.AccountNum = LedgerTrans.AccountNum AND LedgerTable.AccountNum = LedgerTrans.AccountNum
AND ((TransDate>=01.05.10 AND TransDate<=30.06.10)) AND ((PeriodCode = Обычный))
AND ((Crediting = Нет))


JOIN * FROM LedgerTrans WHERE LedgerTrans.AccountNum = LedgerTrans.AccountNum AND LedgerTrans.BondBatch_RU = LedgerTrans.BondBatch_RU
AND LedgerTrans.BondBatchTrans_RU = LedgerTrans.BondBatchTrans_RU
AND ((Crediting = Да))

JOIN * FROM LedgerTable
WHERE LedgerTrans.AccountNum = LedgerTable.AccountNum
AND ((OutBalance = Нет))
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Создание запроса куба с двумя одинаковыми таблицами. Gait DAX: Программирование 4 17.09.2008 14:19
Использование формы в качестве диалога vs создание диалога программно Lucky13 DAX: Программирование 3 30.05.2008 13:09
Теория: Создание отчета в виде Запроса Arahnid DAX: Программирование 6 14.11.2007 16:37
Создание нового запроса на основе старого matew DAX: Программирование 1 23.07.2007 13:52
создание закупки программно z_av DAX: Программирование 4 11.04.2003 12:46

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:20.