Страница 1 из 1

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

Добавлено: 10 сен 2007, 06:42
Leshiy
Добрый день. Надо построить отчёт по записям в таблице, одно поле которой - дата. Как можно передать эту дату в репорт?

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

Добавлено: 10 сен 2007, 14:48
Edward
Переменную типа DateTime в скомпилированном отчете можно заполнить следующим образом:

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

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

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

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

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

Спасибо.

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

Добавлено: 11 сен 2007, 05:21
Leshiy
Есть таблица, которая лежит в датасете. По этому датасету будет строиться отчёт.

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

Перед построением отчёта пользователь выбирает дату, и отчёт должен строиться по тем записям таблицы, у которых поле DataTime совпадает с датой, которую ввёл пользователь.

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

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

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

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

Спасибо.

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

Добавлено: 11 сен 2007, 06:47
Leshiy
Спасибо!

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

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

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

Так вот, если я закрываю сгенерированый отчёт, меняю дату и снова генерирую отчёт - то переменная типа DateTime в репорте своё значение не меняет, а оставляет прежним.

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

Добавлено: 14 сен 2007, 08:24
Pavel
В данном случае перед присвоением переменной вы можете добавить строчку:

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

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

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

stiReport1["l_DateReport"] = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
Спасибо.

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

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

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

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

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

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

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

Добавлено: 20 сен 2007, 14:04
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"] 
возможно только в скомпилированном отчете.

Спасибо.