无法传递报告参数值,并且始终显示参数提示窗口 [英] cannot pass report parameter values and always display parameter prompt window
问题描述
我创建了一个水晶报表,该报表传递了两个日期参数.
公式是
I created a crystal report which pass two date parameters.
formula is
{GetNoOfDays.PlugOnDate} >= {?StartDate} and {GetNoOfDays.Date} <= {?EndDate}
而且我认为我正确传递了参数.但是,当我从日期选择器中选择两个日期并按加载"按钮时,将显示默认参数提示窗口.我找不到哪一个是错的.
代码如下...
and I think I passed parameters correctly. but when I select two dates from datepickers and press load button, the default parameter prompt window is shown. I cant find which one is wrong.
code as below...
public partial class WindowReport1 : Window
{
ParameterFields paraFields = new ParameterFields();
ParameterField paraField1 = new ParameterField();
ParameterDiscreteValue paraDescritValue1;
ParameterField paraField2 = new ParameterField();
ParameterDiscreteValue paraDescritValue2;
public WindowReport1()
{
InitializeComponent();
crystalReportsViewer1.Owner = this;
}
private void btnLoad_Click(object sender, RoutedEventArgs e)
{
paraField1.Name = "StartDate";
paraField1.CurrentValues.Clear();
paraDescritValue1 = new ParameterDiscreteValue();
paraDescritValue1.Value = datePicker1.SelectedDate;
paraField1.CurrentValues.Add(paraDescritValue1);
paraFields.Add(paraField1);
paraField2.Name = "EndDate";
paraField2.CurrentValues.Clear();
paraDescritValue2 = new ParameterDiscreteValue();
paraDescritValue2.Value = datePicker2.SelectedDate;
paraField2.CurrentValues.Add(paraDescritValue1);
paraFields.Add(paraField1);
crystalReportsViewer1.ViewerCore.ParameterFieldInfo = paraFields;
ReportDocument report = new ReportDocument();
report.Load("../../CrystalReport1.rpt");
using (comocoLTSDataContext dc = new comocoLTSDataContext())
{
report.SetDataSource(from c in dc.VNoOfDays
select new { c.VesselRef, c.ContainerNo, c.PlugOnDate, c.PlugOnTime, c.Date, c.Time, });
}
crystalReportsViewer1.ViewerCore.ReportSource = report;
//crystalReportsViewer1.ViewerCore.RefreshReport();
}}}
紧急情况下,任何人都可以提供快速解决方案.....
添加了代码块[/编辑]
can anyone give quick solution as it is urgent, please.....
Code block added[/Edit]
推荐答案
我在代码中看到一个错误,
请检查下面的更新代码,
Hi,
I can see one mistake in the code,
Please check updated code below,
paraFields.Add(paraField1);
插入上述代码后,您需要使用
对其进行更新
Inseted of above code you need to update it with
paraFields.Add(paraField2);
添加第二个参数时,基本上是多次添加第一个参数.
希望您能解决您的问题.
When you are adding your second parameter you are basically adding first parameter multiple times.
Hope you resolve your issue.
尊敬的朋友们,
终于我找到了解决方案.我们必须在绑定数据后将参数值设置到报表中".否则,我们会提示您输入数据.
所以我找到了非常简单的代码来做到这一点.
//首先绑定数据....
ReportDocument报告=新的ReportDocument();
report.Load("../../CrystalReport1.rpt");
使用(comocoLTSDataContext dc = new comocoLTSDataContext())
{
report.SetDataSource(来自dc.VNoOfDays中的c
选择新的{c.VesselRef,c.ContainerNo,c.PlugOnDate,c.PlugOnTime,c.Date,c.Time,});
}
//然后设置参数值....
report.SetParameterValue("StartDate",datePicker1.SelectedDate);
report.SetParameterValue("EndDate",datePicker2.SelectedDate);
crystalReportsViewer1.ViewerCore.ParameterFieldInfo = paraFields;
crystalReportsViewer1.ViewerCore.ReportSource =报告;
谢谢大家.....
Dear friends,
finally I found the solution. we have to "set the parameter value into the report after binding data". Otherwise we will get a prompt to enter data.
so I found very simple code to do that.
// First bind data....
ReportDocument report = new ReportDocument();
report.Load("../../CrystalReport1.rpt");
using (comocoLTSDataContext dc = new comocoLTSDataContext())
{
report.SetDataSource(from c in dc.VNoOfDays
select new { c.VesselRef, c.ContainerNo, c.PlugOnDate, c.PlugOnTime, c.Date, c.Time, });
}
//then set parameter values....
report.SetParameterValue("StartDate", datePicker1.SelectedDate);
report.SetParameterValue("EndDate", datePicker2.SelectedDate);
crystalReportsViewer1.ViewerCore.ParameterFieldInfo = paraFields;
crystalReportsViewer1.ViewerCore.ReportSource = report;
thank you all.....
这篇关于无法传递报告参数值,并且始终显示参数提示窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!