0

私はVS2008を使用してC#.NETアプリケーションを作成しています。いくつかのストアドプロシージャを含むデータベースを持つSQL Server 2005データベースサーバーがあります。ストアドプロシージャのデータをレポートに表示したい。VS2008レポートウィザードとストアドプロシージャを使用しているときに空のレポート

したがって、テストとして、「レポート - >レポートアプリケーション」プロジェクトタイプに基づいて、新しいVS2008 C#プロジェクトを作成しました。

私は、データベースに接続し、使用したいストアドプロシージャからデータセットを作成するウィザードを実行しました。レポートウィザードを作成して表形式のレポートを作成し、列のグループ化を気にしませんでした。

アプリケーションを実行すると、レポートビューアの上部に[レポート1]が表示されますが、それ以外は表示されません。 1ページしかありませんでした。

完全に新しいアプリケーションを作成しても、まったく同じ方法ですが、今回はデータベースからビューまたはテーブルを選択すると、データが入った複数ページのレポートが表示されます。

なぜ、レポートシステムはストアドプロシージャでは動作しませんが、テーブルやビューで正常に動作しますか?ストアドプロシージャはSQL Management Studioで実行すると機能し、パラメータは必要ありません。

答えて

2

ウィザードを使用せずにこれを修正しました。

  1. 新しいのWinFormsアプリを手動
  2. 、その後、ソリューションエクスプローラでのDataSetのXSDファイルをダブルクリックして、ソリューションエクスプローラ
  3. が手動で追加TableAdapterのでソリューションを右クリックしてDataSetを追加を作成します。空白領域を右クリックして "Add-Table Adapter ..."を選択すると「DB
  4. から
  5. 接続の選択 『を使用し、既存のストアドプロシージャは、』
  6. 必要なストアドプロシージャを割り当て、ウィザード
  7. を完了するには、手動で行って、その後、それをダブルクリックし
  8. ソリューションにレポートを追加します「データ - >データソースの表示」
  9. ドラッグに報告
  10. への必要なフィールドをメインフォーム
  11. 使用にMicrosoft.Reporting.WinForms.ReportViewerを入れてあなたは表形式のレポートを作成したい場合は、代わりに、手順8 & 9のReportViewerコントロールのスマートタスクのことで使用可能なレポートウィザードを使用することができます必要なレポート

を関連付けるポップアウトスマートタスクの三角形など

0

レポートデザイナーがストアドプロシージャによって返されたフィールドを特定できず、結果として空のレポートが生成されたVS 2003(Crystal Reports)およびSQL Server 2000を使用している間に問題が発生したことを覚えています。この場合、ストアド・プロシージャは、SPで定義された表変数から結果を選択したためです。

これが該当するかどうか確認しましたか?

私はすでに複雑すぎるかもしれませんが、理由ははるかに単純ですが、これはあなたの投稿を見たときすぐに思い浮かぶシナリオでした。

私の問題の解決策は、代わりに「ラッパー」SPの種類を作成して、すべての計算をテーブル値関数で実行することでした。その後、SPはこの機能(SELECT a、b、c FROM dbo.MyFunc(@ param))からデータを選択し、レポートデザイナがフィールドのリストを取得できるようにしました。設計者がパラメータ化されたSELECTクエリをサポートしていなかったため、SPが必要でした。この回避策は小規模なアプリケーションで実装されていましたが、このアプローチがパフォーマンスに大きな影響を与えるかどうか、またその方法がわからないことがあります。

+0

ウィザードはストアドプロシージャ内のフィールドを知っています。なぜなら、フィールドがレポートテンプレートに表示されるからです。 また、VS2008のサイドパネルでデータセットを展開すると、ライブデータが表示されます。 – Piku

関連する問題