передача параметров в репорт (для начинающих)
передача параметров в репорт (для начинающих)
Добрый день. Надо построить отчёт по записям в таблице, одно поле которой - дата. Как можно передать эту дату в репорт?
передача параметров в репорт (для начинающих)
Переменную типа DateTime в скомпилированном отчете можно заполнить следующим образом:
Но если у Вас есть таблица с данными, то зарегистрируйте её в словаре:
после чего Вы сможете построить отчет. Формат даты выбирается в текстовом компоненте (в контекстном меню Формат).
Если ответ не совсем в точку, уточните, пожалуйста, вопрос поподробнее.
Спасибо.
Код: Выделить всё
Report["MyDateVariable"] = DateTime.Now;
Код: Выделить всё
report.RegData(MyDataTable);
Если ответ не совсем в точку, уточните, пожалуйста, вопрос поподробнее.
Спасибо.
передача параметров в репорт (для начинающих)
Есть таблица, которая лежит в датасете. По этому датасету будет строиться отчёт.
В таблице существует поле типа DateTime, которое соответствует дате внесения строки в таблицу.
Перед построением отчёта пользователь выбирает дату, и отчёт должен строиться по тем записям таблицы, у которых поле DataTime совпадает с датой, которую ввёл пользователь.
В таблице существует поле типа DateTime, которое соответствует дате внесения строки в таблицу.
Перед построением отчёта пользователь выбирает дату, и отчёт должен строиться по тем записям таблицы, у которых поле DataTime совпадает с датой, которую ввёл пользователь.
передача параметров в репорт (для начинающих)
Для того чтобы отфильтровать записи таблицы вы можете использовать фильтры у датабэнда. Задайте новый фильтр(двойной клик по датабэнду - вкладка "Фильтры" - "Добавить фильтр"), тип поля: "Выражение", и введите условие, например: DataSourceName.Date == NeedfulDate, где NeedfulDate это переменная, которую вы должны определить в Словаре(Словарь - кнопка "Новый элемент" или правый клик - "Новая переменная"). Введите название переменной, тип и значение по умолчанию. После этого, датабэнд будет фильтроваться по значению этой переменной. Задать значение переменной можно из вашего приложения: . Можно также создать форму прямо в отчете и выставлять параметры при помощи встроенного DateTimePicker.
Спасибо.
Код: Выделить всё
report.Dictionary.Variables["NeedfulDate"].Value = "09/11/2007"
Спасибо.
передача параметров в репорт (для начинающих)
Ещё раз спасибо, всё получилось. Но появился новый вопрос: репорт у меня генерируется по событию кнопки:
stiReport1.RegData(dsContract_Op_loc);
stiReport1.Dictionary.Variables["l_DateReport"].Value = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
stiReport1.Show();
Так вот, если я закрываю сгенерированый отчёт, меняю дату и снова генерирую отчёт - то переменная типа DateTime в репорте своё значение не меняет, а оставляет прежним.
stiReport1.RegData(dsContract_Op_loc);
stiReport1.Dictionary.Variables["l_DateReport"].Value = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
stiReport1.Show();
Так вот, если я закрываю сгенерированый отчёт, меняю дату и снова генерирую отчёт - то переменная типа DateTime в репорте своё значение не меняет, а оставляет прежним.
передача параметров в репорт (для начинающих)
В данном случае перед присвоением переменной вы можете добавить строчку:
Можно также обращаться к переменной напрямую:
Спасибо.
Код: Выделить всё
stiReport1.Compile();
Код: Выделить всё
stiReport1["l_DateReport"] = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
передача параметров в репорт (для начинающих)
Спасибо.
Перед компиляцией репорта, переменным уже надо иметь значения, а в даном случае присваиваем значения после компиляции. Правильно я понял?Pavel писал(а):В данном случае перед присвоением переменной вы можете добавить строчку:Код: Выделить всё
stiReport1.Compile();
Если ничего не менять кроме этой строки, то имеем ошибку: Field 'l_DateReport'not foundPavel писал(а): Можно также обращаться к переменной напрямую:Код: Выделить всё
stiReport1["l_DateReport"] = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
передача параметров в репорт (для начинающих)
Да, Вы правильно поняли. Значения проинициализированых переменных можно изменить только после компиляции.Leshiy писал(а):Спасибо.
Перед компиляцией репорта, переменным уже надо иметь значения, а в даном случае присваиваем значения после компиляции. Правильно я понял?Pavel писал(а):В данном случае перед присвоением переменной вы можете добавить строчку:Код: Выделить всё
stiReport1.Compile();
Да, совершенно верно, обращение к переменнойLeshiy писал(а):Если ничего не менять кроме этой строки, то имеем ошибку: Field 'l_DateReport'not foundPavel писал(а): Можно также обращаться к переменной напрямую:Код: Выделить всё
stiReport1["l_DateReport"] = dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
Код: Выделить всё
stiReport1["l_DateReport"]
Спасибо.