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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.11.2006, 11:50   #1  
Cornflower is offline
Cornflower
Участник
 
4 / 10 (1) +
Регистрация: 06.09.2005
Query из 7 таблиц
Добрый день.
Я написала метод для заполнения tmpтаблицы, но у меня почему-то не вытаскиваются данные из таблиц. Получается что когда подцеляю 5 каких-либо все данные есть, подцепляю еще 2, данные не вытаскиваются.... Причем они меняются, то из одной таблицы нет данных, то из других. Я как большой новичек разобраться в чем дело не могу. Приму замечания даже по-поводу правильности синтаксиса. Так как подсказать мне даже в этом некому. У меня 2 варианта, либо я неправильно делаю, либо действительно больше 5 таблиц в query использовать нельзя.
Вот мой код:
static server ERP_tmpMythOLAPPurch CreateTmpTable (TransDate StartDate,
TransDate EndDate,
wfStructStr _ItemKey,
wfStructStr _ItemGroupKey,
wfStructStr _LocationKey,
wfStructStr _ProjectKey,
wfStructStr _SbytNaprKey,
wfStructStr _AccountKey)
{
InventTrans _inventTrans;
InventTable _inventTable;
VendInvoiceTrans _vendInvoiceTrans;
PurchTable _purchTable;
VendPackingSlipTrans _vendPackingSlipTrans;
VendTable _vendTable;
InventDim _inventDim;

Query QTmpTable;
QueryRun QRunTmpTable;

QueryBuildDataSource qInventTrans;
QueryBuildDataSource qInventTable;
QueryBuildDataSource qPurchTable;
QueryBuildDataSource qVendTable;
QueryBuildDataSource qVendPackingSlipTrans;
QueryBuildDataSource qVendInvoiceTrans;
QueryBuildDataSource qInventDim;

QueryBuildRange _FinProjectRange;
QueryBuildRange _FinSbytNaprRange;
QueryBuildRange _AccountIDRange;
QueryBuildRange _ItemIDRange;
QueryBuildRange _ItemGroupIDRange;
QueryBuildRange _LocationIDRange;

ERP_tmpMythOLAPPurch _tmpMythOLAPPurch;
;
// Собираем все необходимые данные для нашего отчета

QTmpTable = new Query();

qInventTrans=QTmpTable.addDataSource(TableNum(InventTrans), "InventTrans");
qInventTrans.orderMode(OrderMode::GroupBy);
qInventTrans.addSortField(FieldNum(InventTrans, TransRefID));
qInventTrans.addSortField(FieldNum(InventTrans, InventTransID));
qInventTrans.addSortField(FieldNum(InventTrans, Direction));
qInventTrans.addSortField(FieldNum(InventTrans, DateExpected));
qInventTrans.addSortField(FieldNum(InventTrans, DatePhysical));
qInventTrans.addSortField(FieldNum(InventTrans, DateFinancial));
qInventTrans.addSortField(FieldNum(InventTrans, ItemID));
qInventTrans.addSortField(FieldNum(InventTrans, CurrencyCode));
qInventTrans.addSelectionField(FieldNum(InventTrans, TransRefID));
qInventTrans.addSelectionField(FieldNum(InventTrans, InventTransID));
qInventTrans.addSelectionField(FieldNum(InventTrans, Direction));
qInventTrans.addSelectionField(FieldNum(InventTrans, DateExpected));
qInventTrans.addSelectionField(FieldNum(InventTrans, DatePhysical));
qInventTrans.addSelectionField(FieldNum(InventTrans, DateFinancial));
qInventTrans.addSelectionField(FieldNum(InventTrans, ItemID));
qInventTrans.addSelectionField(FieldNum(InventTrans, CurrencyCode));
qInventTrans.addSelectionField(FieldNum(InventTrans, Qty), SelectionField::Sum);
qInventTrans.addSelectionField(FieldNum(InventTrans, CostAmountPosted), SelectionField::Sum);
qInventTrans.addSelectionField(FieldNum(InventTrans, CostAmountAdjustment), SelectionField::Sum);
qInventTrans.addRange(FieldNum(InventTrans,TransType)).value(QueryValue(InventTransType::Purch));
qInventTrans.addRange(FieldNum(InventTrans,DateFinancial)).value(Date2StrUsr(StartDate)+ ".." + Date2StrUsr(EndDate));
if (_ItemKey.empty()==False) qInventTrans.addRange(FieldNum(InventTrans, ItemId)).value(_ItemKey.get());

qInventTable=qInventTrans.addDataSource(TableNum(InventTable), "InventTable");
qInventTable.orderMode(OrderMode::GroupBy);
qInventTable.addSortField(FieldNum(InventTable, ItemName));
qInventTable.addSortField(FieldNum(InventTable, NameAlias));
qInventTable.addSortField(FieldNum(InventTable, ItemGroupId));
qInventTable.addSelectionField(FieldNum(InventTable, ItemName));
qInventTable.addSelectionField(FieldNum(InventTable, NameAlias));
qInventTable.addSelectionField(FieldNum(InventTable, ItemGroupId));
qInventTable.joinMode(JoinMode::InnerJoin);
qInventTable.fetchMode(0);
qInventTable.addLink(FieldNum(InventTrans, ItemID), FieldNum(InventTable, ItemID));
if (_ItemGroupKey.empty()==False) qInventTable.addRange(FieldNum(InventTable, ItemGroupId)).value(_ItemGroupKey.get());

qVendInvoiceTrans=qInventTrans.addDataSource(TableNum(VendInvoiceTrans), "VendInvoiceTrans");
qVendInvoiceTrans.orderMode(OrderMode::GroupBy);
qVendInvoiceTrans.addSortField(FieldNum(VendInvoiceTrans, InvoiceID));
qVendInvoiceTrans.addSortField(FieldNum(VendInvoiceTrans, RecID));
qVendInvoiceTrans.addSortField(FieldNum(VendInvoiceTrans, LineAmount));
qVendInvoiceTrans.addSortField(FieldNum(VendInvoiceTrans, TaxAmount));
qVendInvoiceTrans.addSortField(FieldNum(VendInvoiceTrans, Dimension));
qVendInvoiceTrans.addSelectionField(FieldNum(VendInvoiceTrans, InvoiceID));
qVendInvoiceTrans.addSelectionField(FieldNum(VendInvoiceTrans, RecID));
qVendInvoiceTrans.addSelectionField(FieldNum(VendInvoiceTrans, LineAmount));
qVendInvoiceTrans.addSelectionField(FieldNum(VendInvoiceTrans, TaxAmount));
qVendInvoiceTrans.addSelectionField(FieldNum(VendInvoiceTrans, Dimension));
qVendInvoiceTrans.joinMode(JoinMode::InnerJoin);
qVendInvoiceTrans.fetchMode(0);
qVendInvoiceTrans.addLink(FieldNum(InventTrans, InventTransID), FieldNum(VendInvoiceTrans, InventTransID));
if (_SbytNaprKey.empty()==False) qVendInvoiceTrans.addRange(FieldId2Ext(FieldNum(VendInvoiceTrans, Dimension),2)).value(_SbytNaprKey.get());
if (_ProjectKey.empty()==False) qVendInvoiceTrans.addRange(FieldId2Ext(FieldNum(VendInvoiceTrans, Dimension),3)).value(_ProjectKey.get());


qPurchTable=qInventTrans.addDataSource(TableNum(PurchTable), "PurchTable");
qPurchTable.orderMode(OrderMode::GroupBy);
qPurchTable.addSortField(FieldNum(PurchTable, OrderAccount));
qPurchTable.addSelectionField(FieldNum(PurchTable, OrderAccount));
qPurchTable.addSelectionField(FieldNum(PurchTable, ERP_Description));
qPurchTable.joinMode(JoinMode::InnerJoin);
qPurchTable.fetchMode(0);
qPurchTable.addLink(FieldNum( InventTrans, TransRefID), FieldNum(PurchTable, PurchID));
if (_AccountKey.empty()==False) qPurchTable.addRange(FieldNum(PurchTable, OrderAccount)).value(_AccountKey.get());

qVendPackingSlipTrans=qInventTrans.addDataSource(TableNum(VendPackingSlipTrans), "VendPackingSlipTrans");
qVendPackingSlipTrans.orderMode(OrderMode::GroupBy);
qVendPackingSlipTrans.addSortField(FieldNum(VendPackingSlipTrans, ReturnActionID));
qVendPackingSlipTrans.addSortField(FieldNum(VendPackingSlipTrans, Name));
qVendPackingSlipTrans.addSortField(FieldNum(VendPackingSlipTrans, PurchUnit));
qVendPackingSlipTrans.addSelectionField(FieldNum(VendPackingSlipTrans, ReturnActionId));
qVendPackingSlipTrans.addSelectionField(FieldNum(VendPackingSlipTrans, Name));
qVendPackingSlipTrans.addSelectionField(FieldNum(VendPackingSlipTrans, PurchUnit));
qVendPackingSlipTrans.joinMode(JoinMode::InnerJoin);
qVendPackingSlipTrans.fetchMode(0);
qVendPackingSlipTrans.addLink(FieldNum(InventTrans, InventTransID), FieldNum(VendPackingSlipTrans, InventTransID));

qVendTable=qPurchTable.addDataSource(TableNum(VendTable), "VendTable");
qVendTable.orderMode(OrderMode::GroupBy);
qVendTable.addSortField(FieldNum(VendTable, NameAlias));
qVendTable.addSelectionField(FieldNum(VendTable, NameAlias));
qVendTable.joinMode(JoinMode::InnerJoin);
qVendTable.fetchMode(0);
qVendTable.addLink(FieldNum(PurchTable, OrderAccount), FieldNum(VendTable, AccountNum));


qInventDim=qVendInvoiceTrans.addDataSource(TableNum(InventDim), "InventDim");
qInventDim.orderMode(OrderMode::GroupBy);
qInventDim.addSortField(FieldNum(InventDim, InventLocationID));
qInventDim.addSortField(FieldNum(InventDim, ERP_Project));
qInventDim.addSortField(FieldNum(InventDim, ERP_JrPerson));
qInventDim.addSortField(FieldNum(InventDim, InventBatchId));
qInventDim.addSelectionField(FieldNum(InventDim, InventLocationID));
qInventDim.addSelectionField(FieldNum(InventDim, ERP_Project));
qInventDim.addSelectionField(FieldNum(InventDim, ERP_JrPerson));
qInventDim.addSelectionField(FieldNum(InventDim, InventBatchId));
qInventDim.joinMode(JoinMode::InnerJoin);
qInventDim.fetchMode(0);
qInventDim.addLink(FieldNum(VendInvoiceTrans, InventDimID), FieldNum(InventDim, InventDimID));
if (_LocationKey.empty()==False) qInventDim.addRange(FieldNum(InventDim, InventLocationId)).value(_LocationKey.get());


QRunTmpTable=new QueryRun(QTmpTable) ;

while (QRunTmpTable.next())
{
_inventTrans =QRunTmpTable.get(TableNum(InventTrans));
_inventTable =QRunTmpTable.get(TableNum(InventTable));
_vendInvoiceTrans =QRunTmpTable.get(TableNum(VendInvoiceTrans));
_purchTable =QRunTmpTable.get(TableNum(PurchTable));
_vendPackingSlipTrans =QRunTmpTable.get(TableNum(VendPackingSlipTrans));
_vendTable =QRunTmpTable.get(TableNum(VendTable));
_inventDim =QRunTmpTable.get(TableNum(InventDim));

_tmpMythOLAPPurch.clear();

_tmpMythOLAPPurch.DateExpected=_inventTrans.DateExpected;
_tmpMythOLAPPurch.DateFinancial=_inventTrans.DateFinancial;
_tmpMythOLAPPurch.DatePhysical=_inventTrans.DatePhysical;
_tmpMythOLAPPurch.Dimension=_vendInvoiceTrans.Dimension;
_tmpMythOLAPPurch.Direction=_inventTrans.Direction;
_tmpMythOLAPPurch.TotalAmount=_vendInvoiceTrans.LineAmount+_vendInvoiceTrans.TaxAmount;
_tmpMythOLAPPurch.RecId1=_vendInvoiceTrans.RecId;
_tmpMythOLAPPurch.CostAmountAdjustment=_inventTrans.CostAmountAdjustment;
_tmpMythOLAPPurch.CostAmountPosted=_inventTrans.CostAmountPosted;
_tmpMythOLAPPurch.CurrencyCode=_inventTrans.currencyCode;
_tmpMythOLAPPurch.InvoiceId=_vendInvoiceTrans.InvoiceId;
_tmpMythOLAPPurch.ItemId=_inventTrans.ItemId;
_tmpMythOLAPPurch.Qty =_inventTrans.Qty;
_tmpMythOLAPPurch.TransRefId=_inventTrans.TransRefId;
_tmpMythOLAPPurch.ItemGroupId=_inventTable.ItemGroupId;
_tmpMythOLAPPurch.ItemName=_inventTable.itemName;
_tmpMythOLAPPurch.NameAlias=_inventTable.NameAlias;
_tmpMythOLAPPurch.ERP_JrPerson=_inventDim.ERP_JrPerson;
_tmpMythOLAPPurch.ERP_Project=_inventDim.ERP_Project;
_tmpMythOLAPPurch.inventBatchId=_inventDim.inventBatchId;
_tmpMythOLAPPurch.InventLocationId=_inventDim.InventLocationId;
_tmpMythOLAPPurch.ERP_Description=_purchTable.ERP_Description;
_tmpMythOLAPPurch.OrderAccount=_purchTable.OrderAccount;
_tmpMythOLAPPurch.ReturnActionId=_vendPackingSlipTrans.ReturnActionId;
_tmpMythOLAPPurch.Name=_vendPackingSlipTrans.Name;
_tmpMythOLAPPurch.PurchUnit=_vendPackingSlipTrans.PurchUnit;
_tmpMythOLAPPurch.VendNameAlias=_vendTable.NameAlias;
_tmpMythOLAPPurch.InventTransId=_inventTrans.InventTransId;

_tmpMythOLAPPurch.write();
}
return _tmpMythOLAPPurch;
}
Старый 14.11.2006, 12:05   #2  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Странно, почему связка для извлечения аналитики производится по VendInvoiceTrans, а не по изначальному InventTrans?
Старый 14.11.2006, 12:10   #3  
Zan is offline
Zan
Участник
 
104 / 25 (1) +++
Регистрация: 22.07.2004
Адрес: I live in Moscow
Попробуйте создать похожее квери в AOT.

Далее создать какой-нибудь джобик для тестировани.

Query q = new Query(querystr("Название квери из АОТА"));
QueryRun qr = new QueryRun(q);

while (qr.next)
{
inventTrans = qr.get(tablenum(InventTrans));
info(inventTrans.itemId);
}

И еще совет.
Вместо ....AddLink()..
Используйте ...relations(true)
Старый 14.11.2006, 12:17   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
7 магическое число
так что ищите пути уменьшения количества таблиц
Старый 14.11.2006, 12:43   #5  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Создайте из первых 5-ти таблиц veiw, и используйте его как базу при создании основного запроса. Хотя, если у вас несколько компаний, отнеситесь к этому предложению осторожно, как бы не создать доп. эффектов.

С уважением, itfs.
Старый 14.11.2006, 12:59   #6  
Zan is offline
Zan
Участник
 
104 / 25 (1) +++
Регистрация: 22.07.2004
Адрес: I live in Moscow
to Warm

Разъясните на счет магичности числа 7
Принципиально нельзя создать квери из семи и более таблиц?

Я просто пока такого еще не пробывал.
Но видимо придется проэксперементировать.
Старый 14.11.2006, 15:31   #7  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
НА всякий случай - если мало-ли решением будут вьюхи - учитие что при работе с виртуальными компаниями их использовать нельзя.
Старый 14.11.2006, 16:46   #8  
Cornflower is offline
Cornflower
Участник
 
4 / 10 (1) +
Регистрация: 06.09.2005
В том то и дело, у меня раньше была вьюшка, но компаний несколько, так что этот вариант отпал. :-(
Старый 14.11.2006, 16:52   #9  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Ну есть еще вариант - не очкрасивый - ограничиться пятью, а остальные подгребать подзапросами..
Старый 14.11.2006, 22:50   #10  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
может в этом дело
Запрос в МБС
"
При разборе сложных запросов Query и преобразования их в SQL команды парсер запросов выдает неправильные результаты, обрезая некоторые DataSource из результирующей команды

Например имеет запрос со структорой (полный xpo запроса в приложенном файле)

InventTable
|_ InventTableModule1
- |_ Unit1
|_ InventTableModule2
- |_ Unit2

Все связи по innerJoin или existsJoin (значения не имеет)
В результате на сервер БД посылается запрос

SELECT A.ITEMGROUPID,A.ITEMID,A.ITEMNAME,A.ITEMTYPE,A.PURCHMODEL,A.HEIGHT,A.WIDTH,A.SALESMODEL,
A.COSTGROUPID,A.REQGROUPID,A.PRIMARYVENDORID,A.NETWEIGHT,A.DEPTH,A.UNITVOLUME,A.BOMUNITID,A.DENSITY,
A.DEL_SCRAPTYPEID,A.DIMENSION,A.DIMENSION2_,A.DIMENSION3_,A.DIMENSION4_,A.DIMENSION5_,A.COSTMODEL,
A.USEALTITEMID,A.ALTITEMID,A.INTRACODE,A.BOMMANUALCONSUMP,A.BOMMANUALRECEIPT,
A.STOPEXPLODE,A.DEL_COVPERINVENTLOCATION,A.PHANTOM,A.INTRAUNIT,A.BOMLEVEL,A.BATCHNUMGROUPID,
A.AUTOREPORTFINISHED,A.ORIGCOUNTRYID,A.STATISTICSFACTOR,A.ALTCONFIGID,A.STANDARDCONFIGID,
A.DEL_CONFIGACTIVE,A.PRODPOOLID,A.PROPERTYID,A.ABCTIEUP,A.ABCREVENUE,A.ABCVALUE,A.ABCCONTRIBUTIONMARGIN,
A.COMMISSIONGROUPID,A.DEL_BARCODE,A.DEL_BARCODETYPE,A.CONFIGURABLE,A.SALESPERCENTMARKUP,
A.SALESCONTRIBUTIONRATIO,A.SALESPRICEMODELBASIC,A.MINAVERAGESETTLE,A.NAMEALIAS,A.PRODGROUPID,
A.PROJCATEGORYID,A.GROSSDEPTH,A.GROSSWIDTH,A.GROSSHEIGHT,A.STANDARDPALLETQUANTITY,A.QTYPERLAYER,
A.SORTCODE,A.CONFIGSIMILAR,A.SERIALNUMGROUPID,A.DIMGROUPID,A.MODELGROUPID,A.ITEMBUYERGROUPID,
A.TAXPACKAGINGQTY,A.DEL_TEMPLATE,A.WMSPALLETTYPEID,A.ORIGSTATEID,A.STOPEXPLODEPRICE,A.WMSPICKINGQTYTIME,
A.TARAWEIGHT,A.PACKAGINGGROUPID,A.SCRAPVAR,A.SCRAPCONST,A.ITEMDIMCOMBINATIONAUTOCREATE,
A.ITEMDIMCOSTPRICE,A.ITEMIDCOMPANY,A.PBAITEMCONFIGURABLE,A.PBAINVENTITEMGROUPID,
A.GROSSWEIGHT_RU,A.PACKING_RU,A.ASSETGROUPID_RU,A.ASSETID_RU,A.RECID,
B.ITEMID,B.MODULETYPE,B.UNITID,B.PRICE,B.PRICEUNIT,B.MARKUP,B.LINEDISC,B.MULTILINEDISC,B.ENDDISC,
B.QUANTITY,B.LOWESTQTY,B.HIGHESTQTY,B.TAXITEMGROUPID,B.BLOCKED,B.DELIVERYTIME,B.INVENTLOCATIONID,
B.MANDATORYINVENTLOCATION,B.STANDARDQTY,B.MARKUPGROUPID,B.PRICEDATE,B.PRICEQTY,B.ALLOCATEMARKUP,
B.OVERDELIVERYPCT,B.UNDERDELIVERYPCT,B.SUPPITEMGROUPID,B.CALENDARDAYS,B.INTERCOMPANYBLOCKED,
B.PRICESECCUR_RU,B.MARKUPSECCUR_RU,B.RECID,C.UNITID,C.TXT,C.UNITDECIMALS,C.UNITSYSTEM,C.CODEOKEI_RU,C.RECID
FROM INVENTTABLE A(NOLOCK) ,INVENTTABLEMODULE B(NOLOCK) ,UNIT C(NOLOCK)
WHERE (A.DATAAREAID=?)
AND ((B.DATAAREAID=?)
AND ((B.MODULETYPE=?)
AND (A.ITEMID=B.ITEMID)))
AND ((C.DATAAREAID=?)
AND (B.UNITID=C.UNITID))
ORDER BY A.DATAAREAID,A.ITEMID OPTION(FAST 9)

из которого вырезаны InventTableModule_2 и Unit_2
Исправление ошибки особенно важно, так как запросы создаются не только разработчиками, но и непосредственно пользователями (например, при построении фильтра на форме).
--------------------------------------------------------------------------
2/22/2005 9:01:00 AM PST -- Sergey Gerasimov
Добрый день, Роман,

Ваш запрос 'Ошибка парсера заросов при разборе сложных запросов' принят в обработку.

С уважением
Сенргей Герасимов.
--------------------------------------------------------------------------
3/9/2005 3:26:00 AM PST -- Sergey Gerasimov
"
... далее следует переписка длиною в год

Последний раз редактировалось db; 14.11.2006 в 22:55.
Старый 14.11.2006, 23:16   #11  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
создать квери с 7ю таблицами можно, но работать он не будет
(буду рад ошибиться, но практические случаи мне не известны)
ошибка парсера, похожая на какие-то внутренние ограничения на длину текста результирующего запроса
Старый 15.11.2006, 09:27   #12  
Daiver is offline
Daiver
Участник
Самостоятельные клиенты AX
 
177 / 44 (2) +++
Регистрация: 19.07.2005
Адрес: Москва
А известно когда решат проблемму? Чем закончилась переписка?

Я заметил следующее: у нас есть таблица t1 к ней мы можем подцеплять хоть 10 таблиц но на первом уровне вложения, то есть соединять непосредственно с t1. Но как только мы добавим еще один уровень вложения (соединяем с таблицой которая уже подцеплена к t1) то все датасурсы которые ниже у таблицы t1 ("ниже" имеется вииду если представить джойны в виде дерева) остаются пустыми.
Старый 15.11.2006, 09:54   #13  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от Daiver Посмотреть сообщение
А известно когда решат проблемму? Чем закончилась переписка?

Я заметил следующее: у нас есть таблица t1 к ней мы можем подцеплять хоть 10 таблиц но на первом уровне вложения, то есть соединять непосредственно с t1. Но как только мы добавим еще один уровень вложения (соединяем с таблицой которая уже подцеплена к t1) то все датасурсы которые ниже у таблицы t1 ("ниже" имеется вииду если представить джойны в виде дерева) остаются пустыми.
правильно заметили

ну а по срокам
"8124246 Ошибка парсера заросов при разборе сложных запрос - Обозначено как кандидат для 4.0;"
Старый 15.11.2006, 11:55   #14  
Zan is offline
Zan
Участник
 
104 / 25 (1) +++
Регистрация: 22.07.2004
Адрес: I live in Moscow
сообщение от Daiver
Цитата:
..... есть таблица t1 к ней мы можем подцеплять хоть 10 таблиц ......
сообщение от Warm
Цитата:
....создать квери с 7ю таблицами можно, но работать он не будет...
Не получится десять таблиц, не работает ....
Вчера специально проверял.
То, что датасурсы в запрос не попадают, это факт.
Но вот седьмой датасурс приводит Аксапту в полное замешательство.

Последний раз редактировалось Zan; 15.11.2006 в 11:57.
Старый 12.03.2007, 17:48   #15  
Yugene is offline
Yugene
Участник
 
46 / 11 (1) +
Регистрация: 02.12.2004
Адрес: Moscow
Натолкнулся на такую же проблему. Если в query есть несколько разветвлений глубже второго уровня, то таблицы дальше (ниже в АОТ) первого разветвления не выбираются. Т.е. если я к одной табличке попривязываю не только 7, но даже 10 подчиненных, то все будет Ок. А вот как только одна из подчиненных получит свою подчиненную - дальше нее таблицы перестанут выбираться.

На Ax 4.0 те же яйца.
Старый 12.03.2007, 19:03   #16  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Позвольте немножко "поштурмовать мозги" (ногами просьба не пинать - релаксирую-фантазирую).

А если как вариант попробовать такой путь преодоления?:
- нужные данные из 7-10 таблиц экспортнуть в файл Excel соответственно на 7-10 листов (xls-файл придется сохранить),
- потом связать эти листы в ADO запросом на нормальном SQL (пример запроса к одному листу здесь),
- результат этого запроса импортнуть обратно в Аксапту (класс импорта - в теме по той же ссылке),
- по окончании процесса xls-файл уничтожаем.

Т.е. получается нечто, похожее на использование 7-10 "временных таблиц", создаваемых "на лету".

Ну, или вывести 10 таблиц, например, двумя Query по 5 таблиц на 2 листа Excel. Потом связать эти 2 листа в ADO и также импортнуть обратно.
Старый 13.03.2007, 05:05   #17  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
Цитата:
Сообщение от Yugene Посмотреть сообщение
На Ax 4.0 те же яйца.
Я в шоке
Стоит уже делать ставки в каком десятилетии исправят.
__________________
С уважением, Вячеслав.
Старый 13.03.2007, 11:59   #18  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
А почему "золотые партнеры" бездействуют? Неужели нельзя поставить эту ошибку в очередь на исправление?
Старый 13.03.2007, 12:32   #19  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от Gustav Посмотреть сообщение
Позвольте немножко "поштурмовать мозги" ....
тогда уж лучше через ODBC соединиться с тем же SQL Server, и сделать запрос через него, и не надо никакого файла
Старый 13.03.2007, 12:56   #20  
Yugene is offline
Yugene
Участник
 
46 / 11 (1) +
Регистрация: 02.12.2004
Адрес: Moscow
Цитата:
Сообщение от ice Посмотреть сообщение
тогда уж лучше
тогда уж лучше использовать while select - с ним такой проблемы нет
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
palleagermark: Sample union query from AX 2009 Blog bot DAX Blogs 0 11.07.2008 20:05
Dynamics AX Geek: Using query() Blog bot DAX Blogs 0 28.10.2006 16:40
Установка условия ИЛИ (OR) в Query Zeratul DAX: Программирование 3 22.06.2006 14:28
Проблема с составлением Query axaLearner DAX: Программирование 10 01.12.2005 15:00

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

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

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