2012-10-08 46 views
0

我在ReportBuilder 3.0中構建了一個非常簡單的報表(.rdl)。它連接到我的數據庫,並從地址字段中獲取城市。SSRS報告查看器不檢測數據源?

SELECT TOP 10 City, COUNT(City) FROM [MYDB].[dbo].[ResidentialAddress] WHERE StateName = 'WA' OR StateName = 'Washington' GROUP BY City ORDER BY COUNT(City) DESC 

此工程ReportBuilder。我保存並關閉。然後我嘗試通過MicroSoft.Reporting.WebForms.ReportViewer在VS 2010中打開並查看報告。我可以在我的c#/ ASP.NET網站本地加載完全空白的RDL文件(僅限文本)。

  this.MyReportViewer.Reset(); 
      this.MyReportViewer.ProcessingMode = ProcessingMode.Local; 
      this.MyReportViewer.AsyncRendering = false; 
      this.MyReportViewer.LocalReport.LoadReportDefinition(new StreamReader("H:\\DataReportsViewer\\DataReportsViewer\\" + RDLFileList.SelectedValue)); 
      this.MyReportViewer.LocalReport.ReportPath = RDLFileList.SelectedValue;   
      this.MyReportViewer.ShowReportBody = true; 
      this.MyReportViewer.LocalReport.Refresh(); 

但是,只要我添加圖表,我得到這個錯誤:

A data source instance has not been supplied for the data source 'DataSet1'.

這是沒有道理給我,因爲當我打開了RDL文件,連接字符串和查詢在那裏,看起來應該是。

<DataSources> 
    <DataSource Name="DataSource1"> 
     <ConnectionProperties> 
     <DataProvider>SQL</DataProvider> 
     <ConnectString>Data Source=MYSERVER;Initial Catalog=Ad_Dev</ConnectString> 
     <IntegratedSecurity>true</IntegratedSecurity> 
     </ConnectionProperties> 
     <rd:SecurityType>Integrated</rd:SecurityType> 
     <rd:DataSourceID>350f6976-9402-43fd-b8f8-8f809f116f84</rd:DataSourceID> 
    </DataSource> 
    </DataSources> 
    <DataSets> 
    <DataSet Name="DataSet1"> 
     <Query> 
     <DataSourceName>DataSource1</DataSourceName> 
     <CommandText>SELECT TOP 10 ResidentialAddress.City,COUNT(ResidentialAddress.City) 
FROM ResidentialAddress 
WHERE StateName = 'WA' 
GROUP BY ResidentialAddress.City 
ORDER BY COUNT(ResidentialAddress.City)</CommandText> 
     <rd:UseGenericDesigner>true</rd:UseGenericDesigner> 
     </Query> 
     <Fields> 
     <Field Name="City"> 
      <DataField>City</DataField> 
      <rd:TypeName>System.String</rd:TypeName> 
     </Field> 
     <Field Name="ID"> 
      <DataField /> 
      <rd:TypeName>System.Int32</rd:TypeName> 
     </Field> 
     </Fields> 
    </DataSet> 
    </DataSets> 

所以,我試圖解決辦法在我的C#代碼:

  //Added line: TestDataSource runs same query and returns correctly loaded DataTable 
      ReportDataSource reportDataSource = new ReportDataSource("DataSet1", TestDataSource()); 
      this.MyReportViewer.LocalReport.DataSources.Add(reportDataSource); 

而運行,但沒有數據顯示出來。我贏不了! :(

是否有任何想法?SSRS和ASP.NET並不意味着彼此玩?我希望能夠製作本報告查看器的本地測試版本,但我已經做了很多黑客甚至可以讓空白報告在本地運行

回答

2

在本地處理模式下,數據集必須通過調用代碼來提供,即主機程序必須執行所有查詢並將該數據傳遞給報告查看器,下面是示例http://www.gotreportviewer.com/definedata/index.html On plus side ,任何數據都可以傳遞到報告查看器(http://www.gotreportviewer.com/objectdatasources/index.html

+0

嗯,基本上不可能只是打開一個文件並顯示報告,如果你建立的文件包含從db查詢的數據?Th那麼答案是等到我可以讓我的報告服務器起來,忘記本地模式? – Brandi

+0

本地模式下的Report Viewer用於嵌入應用程序中,該應用程序必須提供參數和數據集,但不需要報告服務器。如果您只是希望以比報表管理器更好的方式顯示報表,服務器模式就是答案。 – user1578107