2012-06-28 1 views
3

SSRS를 사용하여 코드 (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); 
      } 

감사

+0

보고서가 비어 있다는 것은 무엇을 의미합니까? 데이터 집합을 전달한 매개 변수에 레코드가 없다는 것을 의미합니까? – nunespascal

+0

@nunespascal 정확하게 내가 의미하는 바는 – jozef

답변

2

데이터 집합 보고서의 내부입니다. 특정 보고서 매개 변수에 대해 특정 데이터 집합에서 반환하는 레코드 수를 찾는 외부 API는 없습니다.

1 :

당신이 문제를 해결하기 위해 수행 할 수있는 두 가지 방법이 있습니다. LocalReport

DataSet을 C# 코드로 만들고 행이 있는지 확인한 다음 SSRS에 DataSource로 제공하십시오.

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()); 

은 참조 : Dynamic Reports with Reporting Services

2. 보고서를 CSV로 다운로드하십시오. 그러면 매개 변수 집합에 대한 각 DataSource의 원시 데이터가 제공됩니다. 여기서 반환 된 행 수를 확인할 수 있습니다.

+0

보고서를 CSV로 다운로드하여 두 번째 솔루션을 사용하는 것입니다. 각 데이터 소스의 원시 데이터를 어떻게 알 수 있습니까?, inorder로 행 수를 확인하십시오. 미리 감사드립니다. – jozef

+0

보고서를 CSV로 저장하고 각 데이터 소스에 대해 데이터를 기록합니다. CSV 파일에서 줄 수를 세는 것은 쉽습니다. – nunespascal

1

여기 내 닌자가하는 방법입니다. 보고서에

=Rownumber("TransactionsByAccountAndEffDate") = 0 

나는 또한 텍스트 상자를 삽입 할 때 보고서 사람들이 알 수 있도록 자사의 숨겨진 속성을 설정 : 데이터 집합은 레코드가 없을 때

설정 모든 컨트롤은 컨트롤이 숨겨 표현식에 속성을 숨김 나는 어떤이있는 보고서를 생성 할 때 다음

enter image description here

=Rownumber("TransactionsByAccountAndEffDate") > 0 

: 데이터가 없습니다 데이터는 모든 컨트롤이 숨겨 이것은 작은 파일 크기를하게됩니다

나는 간단한의 작은 있는지, 파일 크기를 확인 코드에서 보고서를 생성 한 후

enter image description here

:

var length = new System.IO.FileInfo(path).Length;