3

我正在通过代码(C#)加载我使用 SSRS 完成的报告,但我需要检查报告是否为空!!!

我怎么能得到那个?!我使用的代码是:

if (!string.IsNullOrEmpty(RptInstance.FileName))
            {
                string ReportName = RptInstance.FileName.Replace(".rpt", "");
                reportViewer.ServerReport.ReportPath = string.Format("{0}{1}", Settings.Default.ReportPath, ReportName);
                reportViewer.ServerReport.SetParameters(paramList);
                reportViewer.ServerReport.Timeout = Timeout;

                string mimeType, encoding, extension, deviceInfo;
                string[] streamIds = null;
                Warning[] warnings = null;
                deviceInfo = "<DeviceInfo><SimplePageHeaders>True</SimplePageHeaders></DeviceInfo>";

                byte[] bytes = reportViewer.ServerReport.Render(RptInstance.PDF ? "PDF" : "Excel", deviceInfo, out mimeType, out encoding, out extension, out streamIds, out warnings);
                RptInstance.State = true;
                //SaveData(Report.FileName, bytes, string.Format(@"C:\temp\{0}.{1}", ReportName, isPdf ? "pdf" : "xlsx"));

                SaveData(string.Format("{0}_{1}.{2}", ReportName, Guid.NewGuid(), RptInstance.PDF ? "pdf" : "xlsx"), bytes, DirectoryName);
            }

提前致谢

4

2 回答 2

2

数据集是报表内部的。没有外部 API 可用于查找特定数据集针对给定报告参数返回的记录数。

您可以采取两种方法来解决问题:

1. 用一个LocalReport

在 C# 代码中创建您的数据集,检查它是否有行,然后将其作为数据源提供给 SSRS。

ReportDataSource ds = new ReportDataSource(dsName, data);
ReportGenerator gen = new ReportGenerator(data, dsName);
reportViewer.Reset();
reportViewer.LocalReport.DataSources.Add(ds);
reportViewer.LocalReport.DisplayName = displayName;
reportViewer.LocalReport.LoadReportDefinition(gen.GeneraReport());

请参阅:使用 Reporting Services 的动态报告

2. 以 CSV 格式下载您的报告。这将为您提供一组参数的每个 DataSource 的原始数据。在这里您可以检查返回的行数。

于 2012-06-30T03:55:56.367 回答
1

这是我的忍者的做法。

将每个控件的 Hidden 属性设置为在 DataSet 没有记录时隐藏控件的表达式:

=Rownumber("TransactionsByAccountAndEffDate") = 0

在报表中,我还插入了一个 TextBox 并设置了它的 Hidden 属性,以便让人们知道报表何时没有数据:

在此处输入图像描述

=Rownumber("TransactionsByAccountAndEffDate") > 0

然后当我生成没有数据的报告时,所有控件都将被隐藏,这使得文件的大小很小:

在此处输入图像描述

在我用代码创建报告后,我简单地检查文件大小,看看它是否很小:

var length = new System.IO.FileInfo(path).Length;
于 2015-09-02T02:14:41.963 回答