ReportViewer コントロールに SSRS レポートを表示する C# (WPF) アプリケーションがあります。ローカル レポート ファイルには、XML データソースが埋め込まれています。SQL Server Business Intelligence Development Studio から実行すると、レポートが正しく表示されます。しかし、アプリを実行すると、次のエラーが発生します。
A data source instance has not been supplied for the data source '...'.
だからここに私がやっていることがあります:
このチュートリアル埋め込み XML データからのレポート データセットの定義で説明されているように、埋め込み XML データを定義しました。というデータ ソースとXmlDataSource_TopCustomers
というデータ セットがありXmlDataSet_TopCustomers
、そのデータ ソースを使用しています。表とグラフでデータセットを参照しました。全体として、RDL は次のようになります (もちろん、必要不可欠なものだけです)。
<レポート xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"> <本体> <レポート項目> <Tablix Name="Tablix1"> <DataSetName>XmlDataSet_TopCustomers</DataSetName> </タブリックス> <チャート名="チャート1"> <DataSetName>XmlDataSet_TopCustomers</DataSetName> </チャート> </ReportItems> </本文> <データソース> <DataSource Name="XmlDataSource_TopCustomers"> <接続プロパティ> <データプロバイダー>XML</データプロバイダー> <接続文字列 /> </接続プロパティ> <rd:SecurityType>なし</rd:SecurityType> <rd:DataSourceID>47833b52-231f-4634-8af4-3c63272b02a7</rd:DataSourceID> </データソース> </データソース> <データセット> <DataSet Name="XmlDataSet_TopCustomers"> <クエリ> <DataSourceName>XmlDataSource_TopCustomers</DataSourceName> <コマンドテキスト><クエリ> <ElementPath>ルート /CustomerOrder {@CustomerNo, @CustomerName, @OrdersCount (Integer), @Total(Float), @AveragePerOrder(Float)}</ElementPath> <Xmlデータ> <ルート> <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" /> </ルート> </Xmlデータ> </クエリ></コマンドテキスト> <rd:UseGenericDesigner>true</rd:UseGenericDesigner> </クエリ> <フィールド>... </データセット> <rd:ReportUnitType>インチ</rd:ReportUnitType> <rd:ReportID>02172db8-2a1d-4c35-9555-b37ee6193544</rd:ReportID> </レポート>
この時点で、すべてが 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 スニペットからわかるように、ここではそうではありません。
助言がありますか?