我有我想要显示的ReportViewer控件一个SSRS报告C#(WPF)应用程序。 本地报表文件嵌入了XML数据源。 从SQL Server商业智能开发套件运行时,该报告显示正确。 但是,当我与我的应用程序运行,我得到了以下错误:
A data source instance has not been supplied for the data source '...'.
因此,这里是我在做什么:
我已经定义了嵌入的XML数据,在本教程中解释从嵌入XML数据定义报表数据集 。 我有一个数据源叫做XmlDataSource_TopCustomers
并称为数据集XmlDataSet_TopCustomers
,使用该数据源。 我所提到的数据表和图表设置。 总体而言,RDL看起来像这样(只是必要的,当然):
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"> <Body> <ReportItems> <Tablix Name="Tablix1"> <DataSetName>XmlDataSet_TopCustomers</DataSetName> </Tablix> <Chart Name="Chart1"> <DataSetName>XmlDataSet_TopCustomers</DataSetName> </Chart> </ReportItems> </Body> <DataSources> <DataSource Name="XmlDataSource_TopCustomers"> <ConnectionProperties> <DataProvider>XML</DataProvider> <ConnectString /> </ConnectionProperties> <rd:SecurityType>None</rd:SecurityType> <rd:DataSourceID>47833b52-231f-4634-8af4-3c63272b02a7</rd:DataSourceID> </DataSource> </DataSources> <DataSets> <DataSet Name="XmlDataSet_TopCustomers"> <Query> <DataSourceName>XmlDataSource_TopCustomers</DataSourceName> <CommandText><Query> <ElementPath>Root /CustomerOrder {@CustomerNo, @CustomerName, @OrdersCount (Integer), @Total(Float), @AveragePerOrder(Float)}</ElementPath> <XmlData> <Root> <CustomerOrder CustomerNo="10001" CustomerName="Name 1" OrdersCount="2" Total="5.446740000000000e+003" AveragePerOrder="2.723370000000000e+003" /> <CustomerOrder CustomerNo="10894" CustomerName="Name 2" OrdersCount="5" Total="3.334750000000000e+003" AveragePerOrder="6.669500000000001e+002" /> <CustomerOrder CustomerNo="12980" CustomerName="Name 3" OrdersCount="2" Total="2.003290000000000e+003" AveragePerOrder="1.001645000000000e+003" /> </Root> </XmlData> </Query></CommandText> <rd:UseGenericDesigner>true</rd:UseGenericDesigner> </Query> <Fields>... </DataSets> <rd:ReportUnitType>Inch</rd:ReportUnitType> <rd:ReportID>02172db8-2a1d-4c35-9555-b37ee6193544</rd:ReportID> </Report>
此时一切从IDE正常工作。
在我的C#应用程序,我有一个的ReportViewer和下面的代码:
Viewer.LocalReport.ReportPath = @"<actualpath>\TopCustomers.rdl"; // actual path is OK
Viewer.RefreshReport();
然后我得到的
A data source instance has not been supplied for the data source 'XmlDataSet_TopCustomers'.
我见过有同样的问题其他人,但在大多数的情况下,问题是多个数据源,这是不是这里的情况,你可以从上面的RDL片段看到。
有什么建议?