1

我第一次尝试将水晶报告与 asp mvc 一起使用,但我在加载报告时遇到了一些问题:

ReportClass rptH = new ReportClass();
            rptH.FileName = Server.MapPath("Reports/TestReport.rpt");
            rptH.Load();

这是 rptH.FileName 的值

"rassdk://D:\\ProjectDir\\Pro\\Pro.WebUI\\Reports\\TestReport.rpt"

但是Load()我得到了例外:

加载报告失败。

报告没有任何数据源,它只是带有一些文本的空白报告。
也许这很重要。我将项目设置为在本地 IIS上运行(不在 VS 中)。



更新

我稍微更改了代码,现在我得到了一些其他错误(我还在inetpub/wwwroot中复制了项目)。这是错误:

值不能为空。参数名称:path2

现在的路径是:

"C:\\inetpub\\wwwroot\\MyProject\\Pro\\Pro.WebUI\\Reports\\TestReport.rpt"

新代码是:

ReportClass rptH = new ReportClass();
            var path = Server.MapPath("Reports/TestReport.rpt");

            rptH.Load(path);
4

3 回答 3

0

检查 rpt 文件是否定义了参数。如果有并且您不需要它们,则将其删除。如果您需要它们,请在代码中为它们提供值和描述。经验:

rep = new ReportDocument();
string reportPath = Server.MapPath("Reports/TestReport.rpt");
rep.Load(reportPath);
rep.SetParameterValue(0, "SomeValue");
crViewer.ReportSource = rep;
crViewer.ParameterFieldInfo[0].CurrentValues[0].Description = "ParameterName";
crViewer.DataBind();
于 2013-11-28T10:15:05.230 回答
0

我以前用 ASP.NET 做过水晶报表。不确定你是否能够做到这一点,但它对我来说很成功。

 ReportDocument rptDoc = new ReportDocument();
 rptDoc.Load(Server.MapPath("TestReport.rpt");

 Response.Buffer = False
 Response.ClearContent()
 Response.ClearHeaders()

 rptDoc.ExportToDisk(ExportFormatType.PortableDocFormat, "TestReport.rpt")
 rptDoc.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, True, "MyReport")
于 2013-01-15T19:05:19.637 回答
0

尝试这个

  ReportDocument rd = new ReportDocument();
  string FileName = Server.MapPath("~/Report") + "//YourReportName.rpt";
  rd.Load(FileName);
  rd.SetDataSource(dt);
于 2015-12-04T13:14:31.067 回答