Работа с Crystal Report NET

       

Параметризированный отчет с полями-параметрами


До этого мы занимались полями таблиц или запросов, добавленных в отчет, причем было невозможно задать какой-нибудь параметр для динамического изменения параметра запроса.

Для того, чтобы можно было динамически управлять условиями выборки записей в запросе отчета, в Crystal Report существуют несколько способов.

В данном примере мы будем использовать поля параметры отчета из панели Fields Explorer.

Мы будем использовать хранимую процедуру “Employee Sales by Country” базы NorthWind. Данная процедура выбирает список продаж сотрудника в заданном временном интервале.

Добавьте в проект файл отчета connect_parameters.rpt, добавьте в качестве источника данных хранимую процедуру базы “Employee Sales by Country” базы NorthWind. Ей необходимо передать в качестве параметров начало и конец интервала продаж. Для этого в панели Fields Explorer в разделе Parameter Fields добавьте два поля – BeginingDate и EndingDate типа DateTime.

Для того, чтобы хранимая процедура могла ими пользоваться, необходимо проинициализировать эти параметры соответствующими значениями.

Для этого добавим в проект страницу connect_parameter.aspx. Разместим на ней два объекта Calendar, один – Button, один CrystalReportViewer.

При их помощи мы будем устанавливать дату в параметрах отчета и генерировать отчет, соответствующий заданному интервалу.

В качестве отклика на нажатие кнопки введите следующий код

Private Sub

btnParameter_Click(ByVal sender As

System.Object, ByVal e As

System.EventArgs) Handles btnParameter.Click

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_parameters.rpt")) crParameter.ReportSource = rDoc

Dim pr As

ParameterField Dim dv As New

ParameterDiscreteValue

pr = crParameter.ParameterFieldInfo.Item("@Ending_Date") dv = New ParameterDiscreteValue dv.Value = cldEnd.SelectedDate.ToShortDateString.ToString(New

System.Globalization.CultureInfo("ru-ru")) pr.CurrentValues.Add(dv)

dv = New ParameterDiscreteValue dv.Value = cldBegin.SelectedDate.ToShortDateString.ToString(New

System.Globalization.CultureInfo("ru-ru")) pr = crParameter.ParameterFieldInfo.Item("@Beginning_Date") pr.CurrentValues.Add(dv)

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

crParameter.DataBind()

End Sub

В данном примере инициализируются параметры @Ending_Date и @Beginning_Date отчета, после чего отчет загружается для выполнения.



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