Показать сообщение отдельно
Старый 19.02.2009, 09:31   #13  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,340 / 3558 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от ZVV Посмотреть сообщение
Это вы меня "Логгером" назвали?
Извините, совсем плохим стал. Прошу великодушнейшего прощения.

Нашел тот запрос, в котором споткнулся в свое время с 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++;
    }
}
В этом режиме (по умолчанию, как я уже писал выше) fetchMode = QueryFetchMode::One2Many

В таблице CustTrans ваучеры уникальные - т.е. в двух записях всегда присутствуют разные ваучеры.
Итак, вариант 1 - как в джобе (fetchMode у всех QueryFetchMode::One2Many).
Название: fetchmodeOne2Many.JPG
Просмотров: 1531

Размер: 24.2 Кб
вариант 2 - включаем fetchMode One2One у датасорса №2
Название: fetchmodeOne2OneMany1.JPG
Просмотров: 1507

Размер: 24.5 Кб
вариант 3 - включаем fetchMode One2One у датасорса №3 и fetchMode One2Many у датасорса №2
Название: fetchmodeOne2OneMany2.JPG
Просмотров: 1537

Размер: 27.5 Кб
вариант 4 - включаем fetchMode One2One у датасорсов №2 и №3
Название: fetchmodeOne2One.JPG
Просмотров: 1500

Размер: 28.8 Кб
на датасорс №1 значение свойства fetchMode влияния не оказывает.

Из примера - видно - что строки выбираются всегда - а "шапки" (в моем примере они подчинены строкам) - в зависимости от параметра fetchMode
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 19.02.2009 в 10:12.
За это сообщение автора поблагодарили: ZVV (3).