Во-первых, я только начинаю изучать отчетность, все эти версии Crystal Report сбивают меня с толку. Во всяком случае, я использовал встроенные Crystal Reports в VS2008.
Я следую этому учебнику . У меня проблема с фильтрацией. Мне нужно применить два поля параметров к моему отчету - чтобы отсортировать его по типу или статусу пользователя. У меня они есть в поле cmb и рядом с ним текстовое поле для ввода текста и фильтрации отчета по нажатию кнопки.
- Когда я применил код фильтра к моей системе (после нажатия кнопки). Исходный код для загрузки всего отчета без фильтров не работал (при загрузке формы). Он показывает всплывающее окно с просьбой ввести значения параметров.
- Фильтр работал отлично .. пока я не добавил другое поле параметра и не попытался дублировать эффект. Я прошел через тот же процесс. Добавьте поле параметра, щелкните правой кнопкой мыши> Отчет> Формула выбора> Выбор записи, а затем добавьте еще одну строку. Это не сработало.
В моем редакторе формул выбора записей это выглядит следующим образом.
{UserType.UserType} = {?UserType}
{UserStatus.UserStatus} = {?UserStatus}
Полагаю, я не знаю, как присвоить его полю параметра. И я не знаю, как использовать редактор формул выбора записей.
Я хочу, чтобы в поле Параметр UserType был указан этот параметр {UserType.UserType} = {? UserType}
и в поле Параметр UserStatus должно быть {UserStatus.UserStatus} = {? UserStatus}
Мне нужна помощь, я не знаю, как правильно сформулировать свой вопрос для Google. Это мой код для нажатия кнопки. Я знаю, что код просто повторяется. Если вам известен более простой способ сделать это, пожалуйста, сообщите.
private void ShowReport_Btn_Click(object sender, EventArgs e)
{
//IF SELECTED
if (Filter_cmb.SelectedItem.ToString() == "UserType")
{
ReportDocument cryRpt = new ReportDocument();
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
cryRpt.Load("D:\\MY_THESIS\\WORKING FILES\\WindowsFormsApplication2\\WindowsFormsApplication2\\Reports\\Crystal Reports\\UsersReport.rpt");
crConnectionInfo.ServerName = "RITZEL-PC\\SQLEXPRESS";
crConnectionInfo.UserID = "NNIT-Admin";
crConnectionInfo.Password = "password";
crConnectionInfo.DatabaseName = "NNIT DB";
Tables CrTables = cryRpt.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
ParameterFieldDefinitions crParameterFieldDefinitions;
ParameterFieldDefinition crParameterFieldDefinition;
ParameterValues crParameterValues = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();
crParameterDiscreteValue.Value = textBox1.Text;
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["UserType"];
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterValues.Clear();
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}
else if (Filter_cmb.SelectedItem.ToString() == "UserStatus")
{
ReportDocument cryRpt = new ReportDocument();
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
cryRpt.Load("D:\\MY_THESIS\\WORKING FILES\\WindowsFormsApplication2\\WindowsFormsApplication2\\Reports\\Crystal Reports\\UsersReport.rpt");
crConnectionInfo.ServerName = "RITZEL-PC\\SQLEXPRESS";
crConnectionInfo.UserID = "NNIT-Admin";
crConnectionInfo.Password = "password";
crConnectionInfo.DatabaseName = "NNIT DB";
Tables CrTables = cryRpt.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
ParameterFieldDefinitions crParameterFieldDefinitions;
ParameterFieldDefinition crParameterFieldDefinition;
ParameterValues crParameterValues = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();
crParameterDiscreteValue.Value = textBox1.Text;
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["UserStatus"];
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterValues.Clear();
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}