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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2010, 23:08   #1  
Blog bot is offline
Blog bot
Участник
 
25,640 / 848 (80) +++++++
Регистрация: 28.10.2006
emeadaxsupport: Visual Studio Dynamics AX report development how to associate X++ class with report dataSet
Источник: http://blogs.msdn.com/emeadaxsupport...t-dataset.aspx
==============

Some time ago I run into following question regarding reporting development in Visual Studio 2008

To add a query to AxQuery you pass in a Dictionary object, but our range needs to be equivalent to:

select * from InventTrans where DatePhysical < _paramDate && (DateFinancial == datenull() || DateFinancial > _paramDate)
The problem is on how to have the OR on DateFinancial field. Also how do you do a between range, you can only have one field in the dictionary which seems to only allow ..date or date..

To solve this problem I did following:
1. I've created class in AOD called InventTransReport with following method:\

public InventTrans returnData(str parmDate)
{
      InventTrans InvTr;
      date parm;
      ;
      parm = str2date(parmDate,123);
      select * from InvTr where (invTr.DateFinancial < parm) && (invTr.DateFinancial == str2date("",123) || invTr.DatePhysical > parm);
      return InvTr;
}

 

2. In Visual Studio I’ve created new project using Dynamics AX Reporting Project

3. I've created following dataMethod


[DataMethod(), AxSessionPermission(SecurityAction.Assert)]
public static DataTable ReportInventTrans(string paramDate)
{
      // Call AX to get the report data
      AxaptaWrapper ax = SessionManager.GetSession();
      AxaptaObjectWrapper axClass = ax.CreateAxaptaObject("InventTransReport");
      AxaptaRecordWrapper axRecord = ax.CreateAxaptaRecord(axClass.Call("returnData", paramDate));
      // Prepare the DataTable structure DataTable resTable = new DataTable();
      resTable.Locale = CultureInfo.InvariantCulture;
      resTable.Columns.Add("ItemID", typeof(String));
      resTable.Columns.Add("DatePhysical", typeof(DateTime));
      resTable.Columns.Add("DateFinancial", typeof(DateTime));
      while (axRecord.Found)
     {
          resTable.Rows.Add(axRecord.GetField("ItemID"), axRecord.GetField("DatePhysical"), axRecord.GetField("DateFinancial"));
          axRecord.Next();
     } 
     return resTable; 
     
}

4. I’ve added new DataSet to my Report and set up following properties:

Data Source Type: Business Logic

Query: ReportInventTrans

 

The report worked correctly



Источник: http://blogs.msdn.com/emeadaxsupport...t-dataset.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Теги
ax2009, dataset, как правильно, отчет

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Debugging Microsoft Dynamics AX 2009 SSRS reports with Microsoft Visual Studio 2008 Blog bot DAX Blogs 0 26.07.2009 15:07
axStart: Visual studio web development for Dynamics AX 2009 training Blog bot DAX Blogs 0 04.05.2009 14:05
axStart: Visual studio web development for Dynamics AX 2009 training Blog bot DAX Blogs 0 14.04.2009 21:05
axStart: Date methods in your Visual Studio Dynamics AX Report. Blog bot DAX Blogs 0 10.09.2008 23:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05

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

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

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