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 スニペットからわかるように、ここではそうではありません。
助言がありますか?