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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.01.2006, 14:17   #1  
Delfins_imported is offline
Delfins_imported
Участник
 
147 / 10 (1) +
Регистрация: 24.03.2004
Почему при запросе field() из Range функция возвращает не тот ID, который в таблице..
Пример:
Код:
dictField = new DictField( tableNum(LedgerTable), qbds.range(iRange).field() );
Я пытаюсь вывести все значения datasource.range(x) в Query, но когда фильтр поставлен из формы запроса отчета, то ID полей таблицы не совподают, если создаются range() в manual-режиме

Код:
qbr = queryRun.query().dataSourceNo(1).addRange(fieldnum(LedgerTable,AccountPlType));
qbr.value( '!'+enum2str(LedgerAccountType::Heading) );
Как решить проблему? DictField как-то понимает всё-таки этот ID из range()


PPS: То что я пытюсь сделать, это сгрупировать все значения всех полей и потом выводить в отчёте..
Код:
	qbds = this.query().dataSourceTable(tableNum(LedgerTable));
	if ( qbds.rangeCount()!=0 )
	{
		for ( iRange=1; iRange<=qbds.rangeCount(); iRange++ )
		{
			oldValue = '';
			oldLabel = '';
			fieldId = strfmt( '%1_%2', qbds.range(iRange).table(), qbds.range(iRange).field() );
			if ( mapRanges.exists(fieldId) )
			{
				[oldLabel,oldValue] = mapRanges.lookup(fieldId);
				mapRanges.remove(fieldId);
			}

			if (!oldLabel)
			{
				dictField = new DictField( tableNum(LedgerTable), qbds.range(iRange).field() );
				oldLabel = dictField.label();
			}

			if ( oldValue ) oldValue += ', ';
			oldValue += qbds.range(irange).value();

			rangeData = [oldLabel,oldValue];
			mapRanges.insert( fieldId, rangeData );
		}
	}
 


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

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

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