2013年4月5日金曜日

◆アプリケーションからの利用

この Step で作成するアプリケーション

Windows アプリケーション
image

ASP.NET アプリケーション
image

ReportViewer コントロールからのアクセス
ReportViewer コントロールからのアクセス

Windows フォームや Web フォームなどのアプリケーションから、レポートへアクセスするには、ReportViewer コントロールを利用します。
image

それでは、実際に SalesRepo レポートへアクセスする Windows アプリケーションを作成してみましょう。ここでは、Visual Studio 2010 を例に説明します。

  1. まずは、Visual Stduio 2010 を起動して、[ファイル]メニューから[新規作成]→[プロジェクト]をクリックします。
  2. [新しいプロジェクト]ダイアログが表示されたら、[インストールされたテンプレート]から今回は「Visual Basic」を選択して、「Windows フォーム アプリケーション」を選択します。
    image
    [名前]と[場所]へ任意のプロジェクト名と保存場所を入力して、[OK]ボタンをクリックします。
  3. 次に、ツールボックスの[レポート]カテゴリから、[ReportViewer]コントロールを Windows フォーム上へドラッグ&ドロップします。
    image
  4. 配置後、ReportViewer コントロールの右上に出ている「」をクリックします。
    image
    これにより、[ReportViewer タスク]スマート タグが表示されるので、[レポートの選択]で「サーバー レポート」を選択します。[レポート サーバーの URL]は、「http://localhost/reportserver」と設定されていることを確認し(必要に応じてサーバー名を変更し)、[レポート パス]へレポートのパス(今回は /SalesRepo)を入力します。
  5. 次に、ReportViewer コントロールの大きさを調整して、レポートを表示しやすくしてから、ツールバーの[デバッグ開始]ボタンをクリックします。
    image
  6. これにより、Windows アプリケーションが起動して、レポートが表示されることを確認できます。
    image
    任意の商品区分を選択して、[レポートの表示]ボタンをクリックすると、選択した商品区分のみが表示されることを確認できます。
    このように、ReportViewer コントロールを利用すると、アプリケーションから簡単にレポートへアクセスできるようになります。
ファイルへのエクスポート

次に、起動した Windows アプリケーションから、ファイルのエクスポートをしてみましょう。

  1. 次のように[エクスポート]ボタンをクリックして、今回は「Excel」をクリックします。
    image
  2. [名前を付けて保存]ダイアログが表示されたら、[ファイル名]へ任意の名前を入力して、[保存]ボタンをクリックします。
  3. 保存した Excel ファイルを開きます。
    image
    このように、Windows アプリケーションからでも、ファイルへのエクスポートを簡単に行うことができます。
エクスポート ボタンの非表示

ReportViewer コントロールでは、プロパティを設定して、レポート ツールバーをカスタマイズすることもできます。それではこれを試してみましょう。

  1. 配置した ReportViewer コントロールをクリックして、ReportViewer コントロールの[プロパティ]を表示します。
    image
    プロパティの一覧から、[ツール バー]セクションにある[ShowExportButton]を「False」へ設定します。これで、エクスポート ボタンを表示しないようにすることができます。
  2. [デバッグ開始]ボタンをクリックして、結果を確認してみましょう。
    image
    このように、ReportViewer コントロールの[ツールバー]セクションにあるプロパティを利用すれば、レポート ツールバーにあるボタンの表示/非表示を設定することができます。
パラメーターの指定
パラメーターの指定

ReportViewer コントロールで、パラメーターを指定するには、Microsoft.Reporting.Win Forms 名前空間の ReportParameter クラスを利用します。

  1. Windows フォームをダブル クリックして、Form_load イベント ハンドラーを生成し、次のようにコードを記述します。
    image
  2. [デバッグ開始]ボタンをクリックして、結果を確認します。
    image
    p1 パラメーター(商品区分コード)が 3の菓子類のデータが表示されることを確認できます。
    このように、ReportParameter オブジェクトを利用すると、プログラム内からレポートのパラメーターを指定することができます。

    Note: 複数選択可能なパラメーターがある場合
    「年」パラメーター(p2)のように、複数選択可能なパラメーターがある場合は、次のように配列として、値を代入する必要があります。
    image
    (C#)
    image

ASP.NET Web フォームからのアクセス

ASP.NET Web フォームからレポートへアクセスする場合にも、Windows フォームの場合と同じように ReportViewer コントロールを利用します(利用方法についても、Windows フォームの場合とまったく同じです)。

試してみたが、私の環境ではスクリプトエラーが発生し動作しなかった。(VS2012)
  JavaScriptのバージョンを選んだりするのかしらん?

その後、もう少し試してみました。
エラーが発生するのは、自習書99ページのカスケードパラメータを使った場合。
商品区分を選ぶと、その商品区分の商品だけがコンボボックスに表示されるパターン。
この時、商品コンボボックスを表示するとエラーとなる。
情けないことに、これ、IEのバグの様です。(IE9以降で発生)
他のブラウザ(FireFox,Chrome,Opera)では発生しません。
image

とりあえず以下のようなスクリプトを追加してエラー発生時に「getComputedStyle」関数を置き換えることで回避できるようです。

<script type="text/javascript">

    if (window.getComputedStyle != null) {

        var orginalGetComputedStyle = window.getComputedStyle;

        window.getComputedStyle = function (element, parm) {

            try {

                return orginalGetComputedStyle(element, null);

            }

            catch (err) {

                return orginalGetComputedStyle(

                    document.getElementsByTagName("body")[0], null);

            }

        }

    }

</script>

この様な不具合がIE9からそのままという事は、この機能もほとんど使われていないのでしょうね・・・。

  1. Visual Stduio 2010 を起動し、[ファイル]メニューから[新規作成]→[プロジェクト]をクリックします。
    image
  2. [新しいプロジェクト]ダイアログが表示されたら、[インストールされたテンプレート]から「Visual Basic」を選択して、「ASP.NET Web アプリケーション」を選択します。
    image
  3. 次に、[デザイン]タブをクリックしてデザイン画面を表示して、ツールボックスの[AJAX Extensions]カテゴリから、[ScriptManager]を Web フォーム上へドラッグ&ドロップします。
    image

    Note: Visual Studio 2010 では、ReportViewer が AJAX 対応のコントロール
    Visual Studio 2010 からは、ReportViewer コントロールが AJAX 対応のコントロールに変更されました。このため、ScriptManager コントロールの配置が必要になります。

  4. 次に、ツールボックスの[レポート]カテゴリから[ReportViewer]コントロールを Web フォーム上へドラッグ&ドロップします。
    image
  5. [ReportViewer タスク]スマート タグが表示されたら、[レポートの選択]で「サーバー レポート」を選択し、[レポート サーバーの URL]へは、「http://localhost/reportserver」と設定されていることを確認します。[レポート パス]へは、レポートのパス(今回は /SalesRepo)を入力します。
    image
  6. ツール バーの[デバッグ開始]ボタンをクリックして、実行します。
    image
    レポートが表示されたら、任意の商品区分名を選択して、[レポートの表示]ボタンをクリックし、選択した商品区分のデータが、正しく表示されることを確認します。
    このように、ASP.NET Web アプリケーションでも、Windows アプリケーションと同様に ReportViewer コントロールを利用して、簡単にレポートへアクセスすることができます。

0 件のコメント:

コメントを投稿