передача параметров в репорт (для начинающих)

Обсуждение Stimulsoft Reports.NET
Ответить
Leshiy
Сообщения: 33
Зарегистрирован: 03 апр 2007, 06:19
Откуда: Украина, Киев

передача параметров в репорт (для начинающих)

Сообщение Leshiy »

Добрый день. Надо построить отчёт по записям в таблице, одно поле которой - дата. Как можно передать эту дату в репорт?
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

передача параметров в репорт (для начинающих)

Сообщение Edward »

Переменную типа DateTime в скомпилированном отчете можно заполнить следующим образом:

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

Report["MyDateVariable"] = DateTime.Now;
Но если у Вас есть таблица с данными, то зарегистрируйте её в словаре:

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

report.RegData(MyDataTable);
после чего Вы сможете построить отчет. Формат даты выбирается в текстовом компоненте (в контекстном меню Формат).

Если ответ не совсем в точку, уточните, пожалуйста, вопрос поподробнее.

Спасибо.
Leshiy
Сообщения: 33
Зарегистрирован: 03 апр 2007, 06:19
Откуда: Украина, Киев

передача параметров в репорт (для начинающих)

Сообщение Leshiy »

Есть таблица, которая лежит в датасете. По этому датасету будет строиться отчёт.

В таблице существует поле типа DateTime, которое соответствует дате внесения строки в таблицу.

Перед построением отчёта пользователь выбирает дату, и отчёт должен строиться по тем записям таблицы, у которых поле DataTime совпадает с датой, которую ввёл пользователь.
Pavel
Сообщения: 67
Зарегистрирован: 10 май 2007, 11:24

передача параметров в репорт (для начинающих)

Сообщение Pavel »

Для того чтобы отфильтровать записи таблицы вы можете использовать фильтры у датабэнда. Задайте новый фильтр(двойной клик по датабэнду - вкладка "Фильтры" - "Добавить фильтр"), тип поля: "Выражение", и введите условие, например: DataSourceName.Date == NeedfulDate, где NeedfulDate это переменная, которую вы должны определить в Словаре(Словарь - кнопка "Новый элемент" или правый клик - "Новая переменная"). Введите название переменной, тип и значение по умолчанию. После этого, датабэнд будет фильтроваться по значению этой переменной. Задать значение переменной можно из вашего приложения:

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

report.Dictionary.Variables["NeedfulDate"].Value = "09/11/2007"
. Можно также создать форму прямо в отчете и выставлять параметры при помощи встроенного DateTimePicker.

Спасибо.
Leshiy
Сообщения: 33
Зарегистрирован: 03 апр 2007, 06:19
Откуда: Украина, Киев

передача параметров в репорт (для начинающих)

Сообщение Leshiy »

Спасибо!
Leshiy
Сообщения: 33
Зарегистрирован: 03 апр 2007, 06:19
Откуда: Украина, Киев

передача параметров в репорт (для начинающих)

Сообщение Leshiy »

Ещё раз спасибо, всё получилось. Но появился новый вопрос: репорт у меня генерируется по событию кнопки:

stiReport1.RegData(dsContract_Op_loc);
stiReport1.Dictionary.Variables["l_DateReport"].Value = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
stiReport1.Show();

Так вот, если я закрываю сгенерированый отчёт, меняю дату и снова генерирую отчёт - то переменная типа DateTime в репорте своё значение не меняет, а оставляет прежним.
Pavel
Сообщения: 67
Зарегистрирован: 10 май 2007, 11:24

передача параметров в репорт (для начинающих)

Сообщение Pavel »

В данном случае перед присвоением переменной вы можете добавить строчку:

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

stiReport1.Compile();
Можно также обращаться к переменной напрямую:

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

stiReport1["l_DateReport"] = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
Спасибо.
Leshiy
Сообщения: 33
Зарегистрирован: 03 апр 2007, 06:19
Откуда: Украина, Киев

передача параметров в репорт (для начинающих)

Сообщение Leshiy »

Спасибо.
Pavel писал(а):В данном случае перед присвоением переменной вы можете добавить строчку:

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

stiReport1.Compile();
Перед компиляцией репорта, переменным уже надо иметь значения, а в даном случае присваиваем значения после компиляции. Правильно я понял?
Pavel писал(а): Можно также обращаться к переменной напрямую:

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

stiReport1["l_DateReport"] = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
Если ничего не менять кроме этой строки, то имеем ошибку: Field 'l_DateReport'not found
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

передача параметров в репорт (для начинающих)

Сообщение Edward »

Leshiy писал(а):Спасибо.
Pavel писал(а):В данном случае перед присвоением переменной вы можете добавить строчку:

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

stiReport1.Compile();
Перед компиляцией репорта, переменным уже надо иметь значения, а в даном случае присваиваем значения после компиляции. Правильно я понял?
Да, Вы правильно поняли. Значения проинициализированых переменных можно изменить только после компиляции.
Leshiy писал(а):
Pavel писал(а): Можно также обращаться к переменной напрямую:

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

stiReport1["l_DateReport"] = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
Если ничего не менять кроме этой строки, то имеем ошибку: Field 'l_DateReport'not found
Да, совершенно верно, обращение к переменной

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

stiReport1["l_DateReport"] 
возможно только в скомпилированном отчете.

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