12.01.2009, 13:05 | #1 |
Участник
|
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun.
Источник: http://ozka-lemming.blogspot.com/200...-queryrun.html
============== Однажды, отлаживая нетривиальный код, наткнулся на subj. Не зная про эту «фичу», я долго удивлялся почему запрос возвращает такой странный набор данных!?! Ниже приведен простенький Job-ик, который демонстрирует существование этой возможности в DAX. В иерархии запроса временная таблица должна быть первым источником данных. X++: static void JoinTmpTablesOnQuery(Args _args) { LedgerTrans ledgerTrans; LedgerTable ledgerTableTmp; int i; int transCnt = 20; Query query = new Query(); QueryBuildDataSource qbdsTable = query.addDataSource(tableNum(LedgerTable)); QueryBuildDataSource qbds2Trans = qbdsTable.addDataSource(tableNum(LedgerTrans)); QueryRun queryRun; ; qbds2Trans.relations(true); ledgerTableTmp.setTmp(); ledgerTableTmp.data(LedgerTable::find("02.010")); ledgerTableTmp.insert(); ledgerTableTmp.data(LedgerTable::find("01.030")); ledgerTableTmp.insert(); queryRun = new QueryRun(query); queryRun.setCursor(ledgerTableTmp, 1); i = 0; while (queryRun.next()) { ledgerTableTmp = queryRun.getNo(1); ledgerTrans = queryRun.getNo(2); info(strfmt("AccountNum %1 , AmountCur %2 , (tmpRecId %3 , regRecId %4)", ledgerTableTmp.AccountNum, ledgerTrans.AmountCur, ledgerTableTmp.RecId, ledgerTrans.RecId)); i++; if (transCnt && i == transCnt) break; } } Источник: http://ozka-lemming.blogspot.com/200...-queryrun.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|