ASP.Net 中的 Crystal Report 传递参数值并且没有有效的报表源

Posted

技术标签:

【中文标题】ASP.Net 中的 Crystal Report 传递参数值并且没有有效的报表源【英文标题】:Crystal Report in ASP.Net passing parameter values and no valid report source 【发布时间】:2012-09-05 04:56:37 【问题描述】:

在 ASP.Net 网页上显示 Crystal 报表时遇到问题。该网站只是一个内部网站,因此您会看到我已将文件路径编码到该网站中。我想我已经很接近让这个工作了,但我显然错过了一些东西。有人可以帮忙吗?

他是我的密码:

void BindReport()

    ReportDocument rd = new ReportDocument();

    //Report is saved on an external server which I have full access too
    rd.Load(@"\\MyServer\Reports\MyReport.rpt");
    rd.SetDatabaseLogon("UserName", "Password", "MyServer", "MyDatabase", true);
    //The Report has 2 parameter and links directly to a stored procedure on a SQL Server
    rd.SetParameterValue("@uspDateFrom", new DateTime(2012, 05, 01));
    rd.SetParameterValue("@uspDateTo", new DateTime(2012, 05, 31));
    CrystalReportViewer1.ReportSource = rd;
    CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
    CrystalReportViewer1.RefreshReport();


//I call my report on a button click
protected void buttonPreviewReport_Click(object sender, EventArgs e)

    BindReport();

当报告尝试运行时,我会弹出一个对话框,询问我的参数值,即使我已经传递了它们!?即使我在对话框提示中输入它们,我也会收到一条消息,指出没有可用的有效报告源。

有人有什么想法吗?

我正在使用 ASP.Net 4.0

提前致谢

【问题讨论】:

【参考方案1】:

我在使用 Crystal Report 时遇到过同样的问题。

  ParameterFields paramFields = new ParameterFields();

  ParameterField paramField = new ParameterField();

  ParameterDiscreteValue discreteVal = new ParameterDiscreteValue();

  paramField.ParameterFieldName = "@examid";// This is how you can send Parameter Value to the Crystal Report


 // Set the first discrete value and pass it to the parameter.
   discreteVal.Value = ddlAllExam.SelectedValue;//Value from DropDown

   paramField.CurrentValues.Add(discreteVal);

   paramFields.Add(paramField);

   CrystalReportViewer1.ParameterFieldInfo = paramFields;

   string datasource = System.Configuration.ConfigurationManager.AppSettings["Data Source"].ToString();

   string Database = System.Configuration.ConfigurationManager.AppSettings["Database"].ToString();

   string Userid = System.Configuration.ConfigurationManager.AppSettings["Userid"].ToString();

   string Password = System.Configuration.ConfigurationManager.AppSettings["Password"].ToString();

    ReportDocument report = new ReportDocument();

    report.Load(Server.MapPath("~/Reports/AllExamReport.rpt"));//Here you can give the Path of external Server

    report.SetDatabaseLogon(Userid, Password, datasource, Database);

    CrystalReportViewer1.ReportSource = report;

希望对你有帮助。!!!

【讨论】:

以上是关于ASP.Net 中的 Crystal Report 传递参数值并且没有有效的报表源的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET 中打开 Crystal Report 时出错

在 Crystal Report 和 ASP.NET C# 中使用子报表

加载Crystal Report时页面会刷新

水晶报表 Crystal Report 调用存储过程时出错 找不到表 ,解决方法。

Crystal Report:报表页脚中的条件基数

Crystal Report - 使用 ResultSet 的主报表中的子报表