2014-04-19 38 views
1

水晶报表显示参数当加载报表时提示。加载水晶报表时显示参数提示

我加载报告准则是: -

TableLogOnInfo logOnInfo = new TableLogOnInfo(); 

       logOnInfo.ConnectionInfo.ServerName = System.Configuration.ConfigurationManager.AppSettings["ServerName"]; 
       logOnInfo.ConnectionInfo.DatabaseName = System.Configuration.ConfigurationManager.AppSettings["DBName"]; 
       logOnInfo.ConnectionInfo.IntegratedSecurity = false; 
       logOnInfo.ConnectionInfo.UserID = System.Configuration.ConfigurationManager.AppSettings["UID"]; 
       logOnInfo.ConnectionInfo.Password = System.Configuration.ConfigurationManager.AppSettings["PWD"]; 

       foreach (CrystalDecisions.CrystalReports.Engine.Table tbl in SchoolExpenseReport.ReportDocument.Database.Tables) 
        tbl.ApplyLogOnInfo(logOnInfo); 

       ParameterValues pvSchoolExpense = new ParameterValues(); 
       ParameterDiscreteValue pdvFomDate = new ParameterDiscreteValue(); 
       ParameterDiscreteValue pdvToDate = new ParameterDiscreteValue(); 

       pdvFomDate.Value = txtFromDate.Text; 
       pdvToDate.Value = txtToDate.Text; 

       SchoolExpenseReport.ReportDocument.DataDefinition.ParameterFields["FromDate"].CurrentValues.Clear(); 
       pvSchoolExpense.Add(pdvFomDate); 
       SchoolExpenseReport.ReportDocument.DataDefinition.ParameterFields["FromDate"].ApplyCurrentValues(pvSchoolExpense); 

       SchoolExpenseReport.ReportDocument.DataDefinition.ParameterFields["ToDate"].CurrentValues.Clear(); 
       pvSchoolExpense.Add(pdvToDate); 
       SchoolExpenseReport.ReportDocument.DataDefinition.ParameterFields["ToDate"].ApplyCurrentValues(pvSchoolExpense); 

       SchoolExpenseReportViewer.ReportSource = SchoolExpenseReport; 
       SchoolExpenseReportViewer.DataBind(); 
       SchoolExpenseReportViewer.RefreshReport(); 
       SchoolExpenseReport.Visible = true; 

显示参数提示如下 enter image description here

+0

哪里是一个问题吗? –

+0

我认为问题在于OP提供了参数值,但报告仍然在提示他们(它不应该这样做)。 –

回答

0

我不是太熟悉添加这样的参数。我通常使用.SetParameterValue()

当我将日期设置为参数值时,它们通常采用DateTime格式,但我看到您只是分配字符串值。

尝试修改此:

pdvFomDate.Value = txtFromDate.Text; 
pdvToDate.Value = txtToDate.Text; 

为了这个(改变,不管以何种格式字符串中的日期看起来像在TextBox):

pdvFomDate.Value = DateTime.ParseExact(txtFromDate.Text, "MM/dd/yyyy"); 
pdvToDate.Value = DateTime.ParseExact(txtToDate.Text, "MM/dd/yyyy"); 

FWIW,我会考虑使用日期选择器控件而不是文本框来接受来自用户的日期值。


如果还是不行,请尝试设置参数值的这种替代语法:

var fromDate = DateTime.ParseExact(txtFromDate.Text, "MM/dd/yyyy"); 

SchoolExpenseReport.ReportDocument.SetParameterValue("FromDate", fromDate); 
+0

我有另一个页面,只有下拉列表,但页面上发生的相同。 – user3355115