在水晶报表中传递多个值
本文关键字:水晶 报表 | 更新日期: 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"。