0

私が数年前に書いた Windows アプリケーションには、最近いくつかの変更が必要でした (最初は VS2005 で作成され、VS2008 を使用して変更され、現在は VS2012 プロジェクトとして更新/変更されています)。

アプリケーションには、2 つのサブレポートを含む Microsoft レポートが含まれています。サブレポート データは、ReportViewer1.LocalReport.SubreportProcessingイベント中に入力されるデータセットです。

メイン レポートに新しいフィールドが追加されましたが、サブレポートは変更されていません。レポートは開発用 PC では期待どおりに機能しますが、クライアント ラップトップにインストールすると、サブレポートは次のメッセージで失敗します。 Data retrieval failed for the sub-report, <report name>, located at <report...rdlc>. Please check the log files for more information

クライアント ラップトップでログ ファイルが生成されない

CTP 2012 Microsoft Report Viewer を手動でインストールしようとしましたが、インストールに失敗し、新しいバージョンが既に存在することが報告されました (SQL Server Express 2012 から、同時にインストールされた可能性があります)。

テストに使用したデータベースはライブ バックアップから復元されるため、データは同じです。サブレポートに を追加するサブレポート イベントには、ReportDataSource例外を発生させない try-catch ブロックが含まれています。

開発中に VS2012 でレポートを開くと、2012 形式に更新する必要があるかどうかを尋ねるダイアログが開きましたが、これはおそらく問題とは関係ありません。

誰かがこの問題に遭遇しましたか? クライアント ラップトップでログ ファイルの物理的な出力を強制する方法はありますか?

アップデート

コードにいくつかの MessagesBoxes を配置すると、サブレポートが処理されない理由がわかりましたが、その理由を調べる必要があります。

「LocalReport_SubreportProcessing」イベントは、レポートに対して 2 回 (各サブレポートに対して 1 回) 発生します。

追加のデータ ソースが必要なサブレポートを特定するために、'SubreportProcessingEventArgs.ReportPath' の値を確認します。私の開発システムでは、レポートの名前 (拡張子 .rdlc を除く) が含まれていますが、クライアント ラップトップでは値が空です。

レポートが出力にどのように組み込まれるかわかりません。メイン レポートは、ラップトップで OK を示しています (サブ レポートが表示されていないだけです)。

4

1 に答える 1

2

私はちょうど同じ問題に遭遇しました。あなたは私たちにそれをするために時々マイクロソフトを嫌いではありませんか?

SubreportProcessingEventArgs.DataSourceNames[0]とにかく、最善の解決策はチェックするのではなくチェックすることだと思いますSubreportProcessingEventArgs.ReportPath。これは(私がチェックした)サブレポートのデータソースの名前になります。

データソースに一意の名前を付けると、どのサブレポートがイベントを呼び出しているかを識別し、データソースを適切に設定できます。私は通常、データソースにとして{SubreportName}DataSet名前を付けているので、すべてのデータソース名にはサブレポート名が含まれています。幸運を。

于 2012-09-14T00:15:22.767 に答える