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, 12:32   #17  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от Gustav Посмотреть сообщение
Позвольте немножко "поштурмовать мозги" ....
тогда уж лучше через ODBC соединиться с тем же SQL Server, и сделать запрос через него, и не надо никакого файла
Старый 13.03.2007, 12:56   #18  
Yugene is offline
Yugene
Участник
 
46 / 11 (1) +
Регистрация: 02.12.2004
Адрес: Moscow
Цитата:
Сообщение от ice Посмотреть сообщение
тогда уж лучше
тогда уж лучше использовать while select - с ним такой проблемы нет
Старый 13.03.2007, 14:41   #19  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Цитата:
Сообщение от Yugene Посмотреть сообщение
тогда уж лучше использовать while select - с ним такой проблемы нет
А на форме как будете отображать такой запрос?
Старый 13.03.2007, 20:54   #20  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от ice Посмотреть сообщение
тогда уж лучше через ODBC соединиться с тем же SQL Server, и сделать запрос через него
Ага, и RLS идет лесом...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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, время: 03:55.