1

即使我在代码中设置了参数,我仍然收到必须设置参数的错误。我已经运行探查器来查看传递给 SSRS 的内容,探查器指示参数 = null。然而,所有这些都是在代码中设置的。有人有想法么?代码如下:

string strReportPath;
      Microsoft.Reporting.WinForms.ReportParameter prmFranchiseOID;
      Microsoft.Reporting.WinForms.ReportParameter prmSchoolOID;
      Microsoft.Reporting.WinForms.ReportParameter prmRoomOID;
      Microsoft.Reporting.WinForms.ReportParameter prmOrderDate;
      Microsoft.Reporting.WinForms.ReportParameter prmLanguage;
      Microsoft.Reporting.WinForms.ReportParameter prmContrast;
      List<Microsoft.Reporting.WinForms.ReportParameter> prms = new List<ReportParameter>();
        byte[] pdf = null;

        try
        {
            prmFranchiseOID = new Microsoft.Reporting.WinForms.ReportParameter("FranchiseOID", "8D126AA2-2E5C-4B2B-8D19-167027F8C7D8");
            prmSchoolOID = new Microsoft.Reporting.WinForms.ReportParameter("SchoolOID", "96FEE335-0CB9-413A-9DDC-78F8C67770C4");
            prmRoomOID = new Microsoft.Reporting.WinForms.ReportParameter("RoomOID", "null");
            prmOrderDate = new Microsoft.Reporting.WinForms.ReportParameter("OrderDate", DateTime.Now.AddDays(1).Date.ToString());
            prmLanguage = new Microsoft.Reporting.WinForms.ReportParameter("Language", "en-CA");
            prmContrast = new Microsoft.Reporting.WinForms.ReportParameter("Contrast", "true");

            prms.Add(prmFranchiseOID);
            prms.Add(prmSchoolOID);
            prms.Add(prmRoomOID);
            prms.Add(prmOrderDate);
            prms.Add(prmLanguage);
            prms.Add(prmContrast);

            // Note: For Account Holder users, their specified report folder is "/LunchLady/User".
            strReportPath = "/LunchLady/Franchise/" + urlReportName;

            try
            {
                rvReport.ServerReport.ReportServerUrl = new System.Uri("https://testsql.thelunchlady.ca/ReportServer");
                rvReport.ServerReport.ReportPath = strReportPath;
                rvReport.ServerReport.SetParameters(prms);

                string ReportType = "PDF";

                pdf = rvReport.ServerReport.Render(ReportType);

谢谢

4

1 回答 1

0

在 ASP.NET 中对 SSRS 控件进行了广泛的编程之后,我发现可能与 WinForms 相关或不相关的一件事是每个 SSRS 参数实际上本身就是一个集合(由于参数能够是多选择)。

所以对我们有用的是集合(在你的情况下是prms)是类型

List<IEnumerable<ReportViewer.ReportParameter>> prms

此外,当使用 SetParameters 函数添加参数时,我们一次添加一个:

for (int i = 0; i < prms.Count; i++)
{
    rvReport.ServerReport.SetParameters(prms[i]);
}

同样,这在 ASP.NET 中对我们有用,您可以尝试一下。

于 2014-11-26T05:16:26.060 回答