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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.05.2010, 13:29   #1  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
SSRS интервал дат
Можно ли как-то в параметрах SSRS отчета задавать диапазон дат, как в аксапте, например 01.05.2010..09.05.2010 ?
Старый 18.05.2010, 02:34   #2  
Ievgenii is offline
Ievgenii
Участник
Аватар для Ievgenii
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
111 / 113 (4) +++++
Регистрация: 21.09.2008
Адрес: Copenhagen, Denmark
Можно.

В стандартных SSRS отчетах в AX2009 насколько мне помнится как правило есть два параметра (fromDate, toDate), затем есть третий параметор (hidden) в котором сохраняеться и формируеться строка (from..to) и уже этот параметор используеться в квери.

Там вроде еще можно фильтр в отчет добавить и к ниму параметры привязать.
__________________
Thx,
Ievgenii Korovin| Dynamics Ax SCM| Microsoft Corp| http://blogs.msdn.com/DynamicsAxSCM/

Последний раз редактировалось sukhanchik; 18.05.2010 в 09:44. Причина: Орфографические ошибки
За это сообщение автора поблагодарили: greench (1).
Старый 18.05.2010, 09:08   #3  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Да именно вариант с наложением fromDate и toDate на фильтр я в данный момент использую, но он вызывает у меня сомнения в производительности. Нужно проверить запросы, которые идут к серверу.
Старый 18.05.2010, 12:27   #4  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Вариант с фильтром не интересен, т.к. в итоге получается что из базы выбираются все данные, а затем фильтруются. Производительность таких отчетов со временем будет очень сильно падать.

Можно ли использовать выражения в Value параметра? Или тыкнете носом в каком отчете реализован механизм формирования строки параметра из значений других параметров.
Старый 19.05.2010, 00:27   #5  
Ievgenii is offline
Ievgenii
Участник
Аватар для Ievgenii
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
111 / 113 (4) +++++
Регистрация: 21.09.2008
Адрес: Copenhagen, Denmark
Цитата:
Вариант с фильтром не интересен, т.к. в итоге получается что из базы выбираются все данные, а затем фильтруются. Производительность таких отчетов со временем будет очень сильно падать.
Согласен. К сожалению под рукой Ax2009 нет сейчас. Попробуйте (5 мин на тест)

1. Создаете DataMethod (BusinessLogic)

String AxDateTimeRange (DateTime From, DateTime To)
{
String axRangeStr = ...;// создаете корректно строку "From..To" или как вам надо
return axRangeStr;
}

2. Дальше ассоцируете data method к параметру отчета и прячете его. Для переменных метода - параметры сами появяться.

3. Должно работать

Цитата:
Можно ли использовать выражения в Value параметра?
Вроде нет иммено для этого случая, ибо вам нужно корректно строить строку использую C# string concatination patterns...
__________________
Thx,
Ievgenii Korovin| Dynamics Ax SCM| Microsoft Corp| http://blogs.msdn.com/DynamicsAxSCM/
Старый 23.05.2010, 22:56   #6  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Цитата:
Дальше ассоцируете data method к параметру отчета
А можно с этого места подробнее? Как подвязать метод к фильтру понятно, а как к параметру отчета?

Есть конечно несколько вариантов обхода проблемы с интервалом дат, но они несколько через "одно место". Писать кучу кода в элементарном отчете - немного ставит под сомнение использование SSRS.
Старый 04.02.2011, 18:06   #7  
Eloy is offline
Eloy
Участник
 
10 / 17 (1) ++
Регистрация: 28.07.2010
Чтобы можно было задавать в параметре отчёта SSRS диапазон дат (например, 01.02.2011..04.02.2011, 05.02.2011) как в AX нужно зайти в свойства параметра, который подхватился из Query и поменять тип с System.DateTime на System.String.
Старый 06.02.2011, 12:50   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
greench, что-то действительно сложно как-то всё у Вас

Во-первых, Вы какой SSRS-отчёт делаете, стандартный или с Dynamics AX extensions? (судя по тому, что используете дата-методы, второй, но всё же неплохо уточнить).

Во-вторых, как Вы достаёте данные для отчёта? Бизнес-логикой (через дата-метод) или с помощью Query? Решения достаточно простые в обоих случаях, но Вы всё же уточните, какой именно Вам нужен, ок?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 06.02.2011, 14:54   #9  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Ага! Я, кажется, догадался, что Вы пытаетесь сделать.

У Вас отчёт на основании Query из AX, так? В принципе, есть несколько вариантов, как в него добавить диапазон дат

1) Предложение Eloy. То есть, поменять тип параметра на System.String. В принципе, все критерии для Query в итоге именно в String и конвертируются. Недостаток этого варианта: пользователи не смогут пользоваться календарем для ввода дат.

2) Предложение Ievgenii (если честно, не уверен, что сработает). Создать дата-метод с параметрами fromDate и toDate. Вернуть из него DataTable со сформированным range. Подвязать к этому дата-методу Data source, который потом использовать как источник значений для параметра query. Думаю, что работать это не будет, так как даже если возможное значение у параметра всего одно, его всё равно кто-то должен выбрать, а параметр этот, насколько я понял, предлагается сделать Internal.

3) Раз уж всё равно связываемся с дата-методами, то напишите вот такой вот простой дата-метод и используйте его вместо Query в качестве источника данных для Вашего дата-сета (на примере Query LedgerTrans):
X++:
[DataMethod(), AxSessionPermission(SecurityAction.Assert)]
public static DataTable DataMethod(DateTime fromDate, DateTime toDate)
{
    Dictionary<string, object> rangeValues = new Dictionary<string, object>();

    rangeValues.Add(
        "LedgerTrans.TransDate",    
        // формат должен быть <tableName>[.<occurrence>].<rangeName>
        // (см. http://msdn.microsoft.com/en-us/library/cc641466.aspx)
        String.Format("{0}..{1}", fromDate.ToShortDateString(), toDate.ToShortDateString()));

    return AxQuery.ExecuteQuery("select * from LedgerTrans", rangeValues);
}
----
Исправил объявление rangeValues.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 06.02.2011, 15:04   #10  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Ещё один вариант - воспользоваться методом FIMCommonHelper.GetParameterDataTable из библиотеки SharedComponents.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Теги
ssrs, диапазон дат

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
paruvella: Displaying SSRS report in Ax-EP page Blog bot DAX Blogs 0 02.02.2010 21:05
emeadaxsupport: Error access SSRS reports - System.Web.Configuration.RegexWorker threw an exception Blog bot DAX Blogs 0 04.12.2009 02:05
emeadaxsupport: Debugging Microsoft Dynamics AX 2009 SSRS reports with Microsoft Visual Studio 2008 Blog bot DAX Blogs 0 26.07.2009 15:07
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
Vincent: Debugging business logic in AX 2009 SSRS reports Blog bot DAX Blogs 0 29.11.2008 09:05

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

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

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