![]() |
#13 |
Administrator
|
Извините, совсем плохим стал. Прошу великодушнейшего прощения.
Нашел тот запрос, в котором споткнулся в свое время с fetchMode. DAX 4.0 SP2 EE. Исходный запрос упростил для отображения работы именно fetchMode. Нюанс, с которым столкнулся вчера: сие не отрабатывает, если датасорса 2. Т.е. важно, чтобы датасорсов было больше двух. Итак: X++: static void vsuh_testFetchMode(Args _args) { CustTrans custTrans; CustTable custTable; Currency currency; Query query; QueryBuildDataSource qbds1, qbds2, qbds3; QueryRun qr; Counter cnt; ; query = new Query(); qbds1 = query.addDataSource(tablenum(CustTrans)); qbds2 = qbds1.addDataSource(tablenum(CustTable)); // qbds2.fetchMode(QueryFetchMode::One2One); qbds2.relations(true); qbds3 = qbds1.addDataSource(tablenum(Currency)); // qbds3.fetchMode(QueryFetchMode::One2One); qbds3.relations(true); qr = new QueryRun(query); while (qr.next() && cnt < 10) { custTrans = qr.getNo(1); custTable = qr.getNo(2); currency = qr.getNo(3); info(strfmt("%1-%2-%3!", custTrans.Voucher, custTable.AccountNum, currency.CurrencyCode)); cnt++; } } В таблице CustTrans ваучеры уникальные - т.е. в двух записях всегда присутствуют разные ваучеры. Итак, вариант 1 - как в джобе (fetchMode у всех QueryFetchMode::One2Many). вариант 2 - включаем fetchMode One2One у датасорса №2 вариант 3 - включаем fetchMode One2One у датасорса №3 и fetchMode One2Many у датасорса №2 вариант 4 - включаем fetchMode One2One у датасорсов №2 и №3 на датасорс №1 значение свойства fetchMode влияния не оказывает. Из примера - видно - что строки выбираются всегда - а "шапки" (в моем примере они подчинены строкам) - в зависимости от параметра fetchMode
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 19.02.2009 в 10:12. |
|
|
За это сообщение автора поблагодарили: ZVV (3). |
Теги |
query, queryrun, выборка, запрос (query) |
|
|