Работа с Crystal Report NET

       

Отчет с использованием фильтра


Условие на выборку записей из базы данных можно задавать не только применением полей параметров.

Для этого можно использовать возможность указания условия выбора в файле отчета rpt или при помощи объекта CrystalReportViewer.

В данном примере реализуем обе возможности.

Создадим новый файл отчета crystal_inreport.rpt. В качестве источника данных укажем таблицу Customers базы NorthWind вашего сервера. Через Report Expert в качестве полей, используемых в отчете, укажем следующие поля: CompanyName, ContactName, Address, City, Region. Country.

Для указания условия выбора будем использовать диалог условия выбора записей отчета. Для этого щелкнем правой клавишей мыши на поле отчета и выберем Report -> Edit Selection Formula -> Records. Откроется окно Record Selection Formula Editor. В поле для ввода условия введите {Customers.Country}='Usa' . Для ввода условия можно воспользоваться деревом элементов Report Fields. Данное условие выбирает всех продавцов, проживающих в Америке и эквивалентно условию where в операторе select.

Для указания условия выбора записей при помощи объекта CrystalReportViewer создадим новый файл connect_outreport.rpt, подключим к нему базу NorthWind и укажем в качестве источника данных те же таблицы и поля.

Далее создадим новую страницу connect_filter.aspx, в которую добавим два объекта типа Button и один объект типа CrystalReportViewer.

Одному объекту типа Button дадим название btnInFilter и в качестве отклика на нажатие мыши введем следующий код

Private Sub btnInReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

btnInReport.Click

Dim log As New TableLogOnInfo Dim ci As New

ConnectionInfo crFilter.Visible = True

ci.ServerName = ConfigurationSettings.AppSettings("server") ci.DatabaseName = ConfigurationSettings.AppSettings("database") ci.UserID = ConfigurationSettings.AppSettings("user") ci.Password = ConfigurationSettings.AppSettings("password") log.ConnectionInfo = ci

Dim tbs As


Tables Dim tb As Engine. Table Dim rDoc As New ReportDocument

crFilter.SelectionFormula = "" rDoc.Load(Server.MapPath("reports\connect_inreport.rpt")) crFilter.ReportSource = rDoc tbs = rDoc.Database.Tables

tb = tbs(0) log = tb.LogOnInfo log.ConnectionInfo = ci tb.ApplyLogOnInfo(log)

crFilter.DataBind()

End Sub



Этот код загружает из базы записи всех заказчиков, проживающих в Америке. В принципе он ничем не отличается от обыкновенной процедуры загрузки отчета, которую мы применяли раньше.

Второму объекту Button дадим имя btnOutReport и в качестве отклика на нажатие мыши введем следующий код

Private Sub

btnOutReport_Click(ByVal sender As

System.Object, ByVal e As

System.EventArgs) Handles btnOutReport.Click

crFilter.Visible = True Dim log As New

TableLogOnInfo Dim ci As New

ConnectionInfo

ci.ServerName = ConfigurationSettings.AppSettings("server") ci.DatabaseName = ConfigurationSettings.AppSettings("database") ci.UserID = ConfigurationSettings.AppSettings("user") ci.Password = ConfigurationSettings.AppSettings("password")

log.ConnectionInfo = ci

Dim tbs As

Tables Dim tb As Engine.Table Dim rDoc As New ReportDocument rDoc.Load(Server.MapPath("reports\connect_outreport.rpt")) crFilter.ReportSource = rDoc crFilter.SelectionFormula = "{Customers.Country}='UK'"

tbs = rDoc.Database.Tables tb = tbs(0) log = tb.LogOnInfo log.ConnectionInfo = ci tb.ApplyLogOnInfo(log)

crFilter.DataBind()

End Sub

Данный код загружает всех заказчиков, проживающих в Великобритании. Условие на выбор задается оператором crFilter.SelectionFormula = "{Customers.Country}='UK'", которое эквивалентно указанию условия выбора в файле отчета.

Теперь при нажатии на кнопку btnInReport страница отображает заказчиков

Эти метода полезно использовать тогда, когда вам нужно задать условие на выбор записей из базы данных.


Содержание раздела