Пример использования переменных.

Обсуждение Stimulsoft Reports.WEB
Ответить
avorsa
Сообщения: 23
Зарегистрирован: 10 май 2012, 14:10
Откуда: Moscow

Пример использования переменных.

Сообщение avorsa »

Есть замечательное видео на сайте, про использование переменных.
Можете выложить тестовый проект для MVC?
Спасибо.
Andrew
Сообщения: 586
Зарегистрирован: 09 июн 2006, 12:22

Пример использования переменных.

Сообщение Andrew »

Здравствуйте,

Пожалуйста, посмотрите проекты, которые идут вместе с инсталляцией продукта.

Спасибо.
avorsa
Сообщения: 23
Зарегистрирован: 10 май 2012, 14:10
Откуда: Moscow

Пример использования переменных.

Сообщение avorsa »

Andrew писал(а):Здравствуйте,

Пожалуйста, посмотрите проекты, которые идут вместе с инсталляцией продукта.

Спасибо.
Смотрел.
Там есть пример MvcViewerFx (Razor).
Работа с параметрами (Country) идет в самом компоненте отчетов (ParametersSelectingCountry.cs).
У меня же стоит задача передавать параметры в SQL запрос из других частей сайта - менюшек выбора диапазона времени и т.д.

Когда-то такое решал для Webforms, а вот как это сделать для MVC все никак не соображу.
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Пример использования переменных.

Сообщение Vladimir »

Здравствуйте,

Вы можете использовать параметры точно так же, как это делается в видео, ссылку на которое вы привели. Параметры можно задавать в действии GetReportSnapshot:

Код: Выделить всё

public ActionResult GetReportSnapshot()
{
    ...
    report.Compile();
    report.CompiledReport.DataSources["MyData"].Parameters["@Date1"].ParameterValue = value;

    ...
    return StiMvcViewerFxHelper.GetReportSnapshotResult(report, this.Request);
}
Спасибо.
avorsa
Сообщения: 23
Зарегистрирован: 10 май 2012, 14:10
Откуда: Moscow

Пример использования переменных.

Сообщение avorsa »

Так и делал.
Оказывается, если в шаблоне значение параметра уже указано, то из кода контролера новый параметр не принимается.
Спасибо.
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Пример использования переменных.

Сообщение Aleksey »

Здравствуйте,

Как вариант, в данном случае, можно использовать следующий код:

Код: Выделить всё

...
report.DataSources["MyData"].Parameters["@Date1"].Value = value;
report.Compile();

...
Спасибо.
avorsa
Сообщения: 23
Зарегистрирован: 10 май 2012, 14:10
Откуда: Moscow

Re: Пример использования переменных.

Сообщение avorsa »

Крыша едет неспеша.
шаблон отчета, в нем 1 коннект под названием PowerCountConnect
есть там 7 запросов типа таких

Код: Выделить всё

declare @dtmondayincurrentweek int
declare @dt datetime
--select @dt = DATEADD(DAY, DATEDIFF(day,0, @date)/7*7,0)
--select @dt
select @dtmondayincurrentweek = replace(convert(varchar, DATEADD(DAY, DATEDIFF(day,0, @date)/7*7,0), 112),'-','')
--select @dtmondayincurrentweek
SELECT ihour as ihour, isnull (sum (value), 0) AS Value FROM [CountboxData].[dbo].[events] WHERE idate = @dtmondayincurrentweek
and (counter_id = '5' or counter_id = '9' or counter_id = '15' or counter_id = '23')
 group by ihour order by ihour
Параметр @date типа Date. При тестировании в редакторе передаю значения 14 ноября 2012 года двумя способами как "14.11.2012" так и "2012.11.14". Оба корректно преобразуются и выдают значения.

Код: Выделить всё

public ActionResult GetReportSnapshotComparisonOfThePeriods()
        {
            var date = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.000");
            if (Session["date"] != null) date = ((DateTime)Session["date"]).ToString("yyyy/MM/dd HH:mm:ss.000");
            var report = new StiReport();
            report.Load(Server.MapPath("~/Content/6_attendanceWeek.mrt"));
            report.Compile();
            report.CompiledReport.DataSources["mondaygroupbyhour"].Parameters["@date"].ParameterValue = "2012.11.14";
            //report.DataSources["mondaygroupbyhour"].Parameters["@date"].Value = "2012-14-11";
            //report.Compile();
            return StiMvcViewerFxHelper.GetReportSnapshotResult(report, Request);
        }
вот так пытаюсь передать дату в шаблон отчета и фиг. Затыкается когда прогресс бар начинает показывать компиляцию.
Что я делаю не так?
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Re: Пример использования переменных.

Сообщение Vladimir »

Здравствуйте, Александр

Попробуйте указанный ниже способ:

Код: Выделить всё

report.Load("F:\\ReportSql.mrt");
report.Compile();

DateTime date = DateTime.Parse("2011-01-01");
report["dp"] = date;
В качестве типа параметра dp в отчёте указан DateTime тип, SQL запрос выглядит так:

Код: Выделить всё

select * from Table_1 where datecol > @dp
Спасибо.
avorsa
Сообщения: 23
Зарегистрирован: 10 май 2012, 14:10
Откуда: Moscow

Re: Пример использования переменных.

Сообщение avorsa »

не получается
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Re: Пример использования переменных.

Сообщение Vladimir »

Здравствуйте, Александр

Тот код, что указан выше, был протестирован совместно с SQL Server 2008, всё работало корректно.
А если изначально в отчёте установить значения параметров по-умолчанию, то строится ли отчёт корректно? Строится ли он корректно в WinForms дизайнере? Если отчёт содержит большое количество страниц (более 500), то его построение на сервере может занять время, и в это время как раз отображается сообщение "Compiling Report".

Спасибо.
Ответить