1

SQL Server Reporting Services と、V​​isual Studio に付属のレポート デザイナーを使用しています。とても大きなご報告を頂きました。実際には非常に大きいため、変更を加えたときに Visual Studio がハングしたり (一度に何時間も) ハングしたり、単にクラッシュしたりします。

この問題を解決するために私にできることはほとんどないので、レポートの下半分だけをサブレポートに移動することにしました。それで、私は 1 つの巨大で応答のないレポートから始めて、2 つの小さな管理しやすいレポートで終了しました。驚くべきことに、これは実際に機能します。

1 つの問題: サブレポートがメイン レポートと同じデータを使用しています。現在、データベースに再クエリを実行してデータセットを作成しています。データベースへの余分なラウンドトリップにより、レポートの生成に 2 倍の時間がかかります。生成に 45 分から 1 時間半まで。

データベースに再度アクセスすることを避け、代わりに両方のレポートで同じデータセットを使用したいと考えています。

レポートとサブレポートの間でデータセットを共有または渡すにはどうすればよいですか?

4

6 に答える 6

3

これが役立つと思います: http://www.gotreportviewer.com/subreports/index.html

サブレポートにデータを提供する - SubreportProcessing イベント サブレポートにデータを提供するには、SubreportProcessing イベントを処理する必要があります。このイベントは LocalReport オブジェクトにあることに注意してください。次のようにイベント ハンドラーを追加できます。

private void MainForm_Load(object sender, EventArgs e)
{
    this.reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(MySubreportEventHandler);
}

以下は、イベント ハンドラーの例です。この例では、LoadSalesData は DataTable を返すように定義されています。

void MySubreportEventHandler(object sender, SubreportProcessingEventArgs e)
{
    e.DataSources.Add(new ReportDataSource("Sales", LoadSalesData()));
}

レポートに複数のサブレポートがある場合は、SubreportProcessingEventArgs の ReportPath プロパティを調べて、対応するサブレポートのデータを指定できます。ここで説明したように、SubreportProcessingEventArgs の Parameters プロパティの値を調べて、サブレポート パラメーターに対応するデータのサブセットのみを返すこともできます。

于 2012-05-05T16:44:36.847 に答える
0

両方のリストが同じデータセットを使用するリスト内でリストを使用してから、内側のリストをフィルタリングして、外側のリストにリンクされたレコードのみを表示しようとしましたか?

実行時間に関して言えば、そもそも45分はとてつもなく長い時間のように思えます。実行計画の分析を行って、クエリまたはストアド プロシージャが意味のあるインデックスを使用していることを確認したと思いますか?

お役に立てれば、

明細書

于 2009-05-18T22:39:27.757 に答える
0

ダミーパラメーターを使用してそれを行うことができます:

私。メイン レポート 'MyData' にパラメーターを作成し、'internal' にチェックを入れます。

ii. 「MyData」のデフォルト値をデータセットに設定します

iii. 式を使用してサブレポート パラメーターを設定します。

=Parameters!MyData.Value

これが役に立てば幸いです、ダンカン

于 2009-07-03T17:06:28.567 に答える
0

テーブルを作成すると、詳細行のすべてのセルを結合して、サブレポートをコンテンツとして配置できます。次に、サブレポートのパラメーターを、サブレポートを実行するフィールドに設定します。

ジェイソン

于 2009-07-29T20:09:39.220 に答える