我在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並不意味着彼此玩?我希望能夠製作本報告查看器的本地測試版本,但我已經做了很多黑客甚至可以讓空白報告在本地運行
嗯,基本上不可能只是打開一個文件並顯示報告,如果你建立的文件包含從db查詢的數據?Th那麼答案是等到我可以讓我的報告服務器起來,忘記本地模式? – Brandi
本地模式下的Report Viewer用於嵌入應用程序中,該應用程序必須提供參數和數據集,但不需要報告服務器。如果您只是希望以比報表管理器更好的方式顯示報表,服務器模式就是答案。 – user1578107