Передача параметров в запрос Sql
SysolyatinSN
Екатеринбург
Добрый день.
Столкнулся со следующей проблемой: Вытаскиваю компонент report, далее захожу в дизайнер. Добавляю источник данных, вставлю sql запрос (отчет по кассе). Отчет нужно формировать на определенный период, прочитав документацию нашел что выборку можно фильтровать с помощью добавления на форму поля даты. При такой реализации отчет формируется неправильно. Можно ли программно изменять sql запрос в отчете. Например добавив в запрос условие на дату?
Столкнулся со следующей проблемой: Вытаскиваю компонент report, далее захожу в дизайнер. Добавляю источник данных, вставлю sql запрос (отчет по кассе). Отчет нужно формировать на определенный период, прочитав документацию нашел что выборку можно фильтровать с помощью добавления на форму поля даты. При такой реализации отчет формируется неправильно. Можно ли программно изменять sql запрос в отчете. Например добавив в запрос условие на дату?
Комментарии
А что именно формируется неправильно?
Текст запроса программно изменить можно, вот так:
TableDataSource table = Report.GetDataSource("MyTable") as TableDataSource;
table.SelectCommand = "select * from ...";
Спасибо за ответ. Нашел в инструкции, прочитав внимательно.
AlexTZ у меня еще пару вопросиков:
Вопрос 1: Есть ли возможность у FastReport.Net сворачивать и разворачивать группировку отчета.
Вопрос 2: Например в отчете нужно вывести прейскурант услуг. Справочник хранится в иерархическом виде. Как такие данные можно организовать в FastReport.Net если не известно кол-во вложенности и опять же как реализовать возможность сварачивать и разворачивать группировки?
Заранее блогадарен вам.
2) Про отчеты с иерархией можно почитать тут:
http://fast-report.com/documentation/UserM...nthierarchy.htm
Также смотрите демо-отчет "General/Hierarchic List". Насчет сворачивания иерархии не уверен, что получится сделать в скрипте.
Примерно знаю как это сделать, сложность вызвало редактирование текста запроса. Например есть запрос
SELECT
PRODUCT.PRODUCT_ID,PRODUCT.DATE,PRODUCT.PRICE
FROM
PRODUCT
WHERE
PRODUCT.DATE>=ПараметрНачалоПериода AND PRODUCT.DATE<=ПараметрКонецПериода
http://fast-report.com/documentation/UserM...passvalueto.htm
Ну а в параметры отчета значение передавайте из программы.
Новые версии можно бесплатно получать в течение года. После этого надо продлять подписку (за 1/3 цены). Частота появления нового функционала пока довольно высокая.
на следующей странице добавляю эти параметры указываю тип DateTime, в Expression указываю параметр из отчета. При нажатии Далее выдает ошибку "Failed to convert parametr value from a Variant to DateTime" в чем я ошибся?
Создал форму вытащил PreviewControl, 2 DateTimePiker'а и кнопку. На клик кнопки прописал:
пишет ошибку при выполнении строки if (report_kassa.Prepare())
(TitlePeriodText): error CS0103: Имя 'DateTimePicker1' отсутствует в текущем контексте
(TitlePeriodText): error CS0103: Имя 'DateTimePicker2' отсутствует в текущем контексте
Делал по инструкции, не могу понять в чем проблема
report1.Show();
а вот работа с компонентом previewControl1 и как к нему цеплять сконфигурированный report1 в инструкции не нашел.
report_kassa.SetParameterValue("StartDate", StartDate.Value);
report_kassa.SetParameterValue("EndDate", EndDate.Value);
а на счет previewControl1
как мне его связать с отчетом?
report1.Preview = previewControl1;
Огромное спасибо.
не помогло, пишет ту же самую ошибку.
Пересмотрел все демо примеры, и не одного не нашел с использованием параметров. В инструкциях то же нет примера.
13.07.2010 00:00:00, а для SQL запроса нужно передать в формате 2010-07-13 00:00:00. С помощью выражения конвертирую, а как посмотреть что получилось в результате форматирования?
Когда в SQL запросе нужно задавать много параметров, например период,отделение,сотрудник, и.т.д. Если параметры все заполняются то прописать WHERE в запросе, проблем никаких не составляет, но вот когда какой нибудь параметр не укажут, то в запросе нужно убрать это условие, иначе произойдет ошибка.
В 1С я делал следующим образом: в условии проверял заполнено ли поле, если заполнено то формировал строку с условием и добавлял к запросу, иначе возвращал пустую строку. подскажите как бы поступили в такой ситуации.
Чтоб сделать проверку для периода пришлось вот так вот извратиться:
TableDataSource table = Report.GetDataSource("MyTable") as TableDataSource;
table.SelectCommand = "select * from ...";
Этот код можно выполнить в скрипте отчета (например, в обработчике события BeforePrint у бэнда - заголовка отчета), или в своей программе, перед запуском отчета.