无法传递报告参数值,并且始终显示参数提示窗口 [英] cannot pass report parameter values and always display parameter prompt window

查看:79
本文介绍了无法传递报告参数值,并且始终显示参数提示窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个水晶报表,该报表传递了两个日期参数.
公式是

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆