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はありません。

問題を解決するために取ることができる2つのアプローチがあります:

1。使うLocalReport

C#コードでDataSetを作成し、行があるかどうかを確認してから、これをデータソースとして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());

参照:ReportingServicesを使用した動的レポート

2。レポートをCSVとしてダウンロードします。これにより、パラメータセットの各データソースの生データが得られます。ここで、返された行数を確認できます。

于 2012-06-30T03:55:56.367 に答える