在水晶报表中传递多个值

本文关键字:水晶 报表 | 更新日期: 2023-09-27 17:50:41

我试图通过Crystal报告将c#生成的2个值传递给MS SQL存储过程

到目前为止我有这个代码

string username = Context.User.Identity.Name;
string date = DateTime.Now.ToShortDateString() ;
ReportDocument crystalReport = new ReportDocument();
crystalReport.Load(Server.MapPath(@"..'admin'CrystalReport1.rpt"));
crystalReport.SetParameterValue("@Username", username);
crystalReport.SetParameterValue("@Date", date);
crystalReport.SetDatabaseLogon("", "", @"dennislaptop-pc'SQLEXPRESS", "healthylifestyledb");
CrystalReportViewer1.ReportSource = crystalReport;

上面的代码是在水晶报告生成页面的问题是,当我试图传递@Date值到存储过程。存储过程工作得很好,但我在c#

中得到这个错误

无效索引。(Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

如何传递两个参数值?

在水晶报表中传递多个值

我使用了不同的方法。如果你创建了一个CrystalReport, c#将为该报告生成一个类(和。cs)文件。

然后您可以通过ReportClass report = new CrystalReport1();

创建报告

然后你可以添加参数:

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
ReportClass report = new CrystalReport1();
report.SetParameterValue("companies", "Microsoft");
//or use the overloaded value for an array as 2nd parameter

但是您需要通过c#创建报表(或者添加到c#中就足够了)来创建报表的类

参数是否来自同一'源'?由于某种原因,如果您试图写入Crystal传递给存储过程的参数,则需要在名称前面加上@,而如果它是手动添加到报告中的参数,则不需要@。如果"@Date"不能作为名称,请尝试使用"Date"。