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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.04.2006, 16:57   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Я создала Отчет. В нем в датасоурс 2 таблички: таблица проводок ОС и справочник ОС. Связь между табличками осуществляется по полю номер ОС и модель учета.
Почему в коде выводится ошибка.
Error Сообщение (16:44:47)
Невозможно выбрать запись в 'Модель учета ОС' ('RAssetStandards') Инв. номер ОС: , .
База данных SQL обнаружила ошибку...........


Код:
	qbdsAT = qbds.addDataSource(tablenum(RAssetTrans));
	qbdsAT.fetchMode(JoinMode::INNERJOIN);
	qbdsAT.relations(true);

   qbdsAT.addLink(Fieldnum(RAssetTrans, accountNum),fieldnum(RAssetStandards, assetId));
   qbdsAT.addLink(Fieldnum(RAssetTrans, assetStandardId),fieldnum(RAssetStandards, assetStandardId)); 
Старый 14.04.2006, 18:37   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Безумный вариант: потому что вы не добавили в датасорс табличку RAssetStandards
__________________
полезное на axForum, github, vk, coub.
Старый 14.04.2006, 18:48   #3  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Код:
   //ЗАПРОС ПО ТАБЛИЦЕ МОДЕЛЕЙ УЧЕТА
	qbds = this.query().dataSourceTable(tablenum(RAssetStandards));
	qry = new Query();
	qbds=qry.addDataSource(tablenum(RAssetStandards),'lbdt2');

	//инв номер ОС
	qbr=qbds.addRange(fieldnum(RAssetStandards,AssetId));
	strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,AssetId)).value();
	qbr.value(strRangeValue);
	//срок жизни
	qbrLife=qbds.addRange(fieldnum(RAssetStandards,Lifetime));
	strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,Lifetime)).value();
	qbrLife.value(strRangeValue);
	//профиль разноски
	qbrProfile=qbds.addRange(fieldnum(RAssetStandards,PostingProfile));
	strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,PostingProfile)).value();
	qbrProfile.value(strRangeValue);
	//группа амортизации
	qbrGroup=qbds.addRange(fieldnum(RAssetStandards,AssetGroup));
	strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,AssetGroup)).value();
	qbrGroup.value(strRangeValue);
	//модель учета
	qbrStandard=qbds.addRange(fieldnum(RAssetStandards,assetStandardId));
	strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,assetStandardId)).value();
	qbrStandard.value(strRangeValue);
	excelDocument.InsertValue(ComExcelDocument_RU::numToNameCell(3,4),
							  strRangeValue);

	//ЗАПРОС ПО ТАБЛИЦЕ ПРОВОДОК ОС
	qbdsAT = qbds.addDataSource(tablenum(RAssetTrans));
	qbdsAT.fetchMode(JoinMode::INNERJOIN);
	qbdsAT.relations(true);
	qbdsAT.addLink(fieldnum(RAssetTrans, accountNum), fieldnum(RAssetStandards, assetId));
	qbdsAT.addSortField(fieldnum(RAssetTrans, Voucher));
Старый 14.04.2006, 19:49   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Ой, боже!
А этот запрос вы прямо руками кодируете?

Почему бы вам не создать объект Query в AOT,
а в коде написать простую строчку?
<div class='XPPtop'>X++</div><div class='XPP'>myQueryInReport = [color=:blue]new[/color] Query([color=:blue]querystr[/color](mySuperQueryInAOT))</div>


Я правильно понимаю, что основная задача вашего кода - создать запрос с теми условиями, которые ввел пользователь в отчете руками?

Почему бы вам не сделать просто?
myQuery = element.queryrun().query()
__________________
полезное на axForum, github, vk, coub.
Старый 20.04.2006, 15:33   #5  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
А мы легких путей не ищем. Спасибо за совет, продолжу самомучение.
 


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

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

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