PDA

View Full Version : آموزش: فیلتر گزارش با پارامتر ورودی (ارسال پارامتر به گزارش)



Masoome_das
چهارشنبه 13 مرداد 1389, 10:07 صبح
سلام
پس از سه روز سرچ راه حل مشکلم پیدا کردم دیدم این مشکل خیلی هاست پس گفتم به صورت عمومی بزارم
برای اینکه کریستال ریپورت بتونه پارامتری را از ورودی بگیره و بر اساس این پارامتر اطلاعات خروجی را فیلتر کنه باید
با ویزارد DataSource و پارامترهاش را مشخص می کنیم
سپس این کد رادر فرمی که می خواهیم گزارشمون را نمایش بده می نویسیم عین کد را کپی کنید


privateconststring PARAMETER_FIELD_NAME = "name";
privatevoid ConfigureCrystalReports()
{
//string reportPath = Application.StartupPath + "\\" + "CrystalReport1.rpt";
//crystalReportViewer1.ReportSource = reportPath;
ArrayList arrayList = newArrayList();
arrayList.Add("زهرا");
ParameterFields parameterFields = crystalReportViewer1.ParameterFieldInfo;
SetCurrentValuesForParameterField(parameterFields, arrayList);
defaultParameterValuesLis.DataSource = GetDefaultValuesFromParameterField(parameterFields );

}
privatevoid SetCurrentValuesForParameterField(ParameterFields parameterFields, ArrayList arrayList)
{
ParameterValues currentParameterValues = newParameterValues();
foreach (object submittedValue in arrayList)
{
ParameterDiscreteValue parameterDiscreteValue = newParameterDiscreteValue();
parameterDiscreteValue.Value = submittedValue.ToString();
currentParameterValues.Add(parameterDiscreteValue) ;
}
ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];
parameterField.CurrentValues = currentParameterValues;

}
privateArrayList GetDefaultValuesFromParameterField(ParameterFields parameterFields)
{
ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];
ParameterValues defaultParameterValues = parameterField.DefaultValues;
ArrayList arrayList = newArrayList();
foreach (ParameterValue parameterValue in defaultParameterValues)
{
if (!parameterValue.IsRange)
{
if (parameterValue.Kind == DiscreteOrRangeKind.DiscreteValue)
{
ParameterDiscreteValue parameterDiscreteValue = (ParameterDiscreteValue)parameterValue;
arrayList.Add(parameterDiscreteValue.Value.ToStrin g());
}
}
}
return arrayList;
}
privatevoid Form1_Load(object sender, EventArgs e)
{
ConfigureCrystalReports();

}


"privateconststring PARAMETER_FIELD_NAME = "name

"name" نام ستونی است که می خواهید بر اساس آن عمل فیلتر انجام شود
اطلاعات مربوط به مشتری با نام زهرا را نمایش می دهد .


البته در ابتدای فرم این کد را هم بنویسد.



using CrystalDecisions.Shared
using System.Collections

using CrystalDecisions.ReportSource
using CrystalDecisions.CrystalReports