none
SQLServer2005 Reporting Services 前回実行のパラメータを次回実行時デフォルト値で渡したい RRS feed

  • 質問

  • SQLServer2005 の ReportingServicesのレポートのプロンプトで、
    閲覧する各ユーザーが自分の担当する情報をレポート実行時デフォルトで実行できるよう
    パラメータの保存を行いたいと考えています。

    URLの末尾にパラメータの記述を付記することでパラメータの規定値を上書きできることは下記からわかりましたが、
    http://msdn.microsoft.com/ja-jp/library/ms155391.aspx
    一度開いたレポートで変更したパラメータはURLに反映されないため

    方法A
    1.ユーザーが設定したパラメータ値を取得するWebアプリケーションを作成
    2.取得したパラメータ値をユーザーマスタに登録
    3.次回実行時はマスタから取得したパラメータ値をURLの末尾に付加して実行

    方法B
    1.ユーザーが設定したパラメータ値を取得するWebアプリケーションを作成
    2.取得したパラメータ値をCookieに保存
    3.次回実行時はマスタから取得したパラメータ値をURLの末尾に付加して実行

    のいずれかの方法をとらなくてはならないのかと考えましたが、
    Webアプリケーションが完全初心者なので
    パラメータ値を取得する方法がわからず苦心しています。

    ご存じの方ご助言よろしくお願いします。

    2009年6月30日 4:52

回答

  • 別の方法ですがいかがでしょうか。

    (1)レポート実行時に主となるデータソースを SELECT ステートメントではなく
     ストアドプロシージャとして実装する
    (2)そのストアドプロシージャのパラメータとして、
     レポートのパラメータの他に"ユーザID"を加える(グローバル変数 User!UserID が使えるかも)
    (3)そのストアドプロシージャの中で、
      データ取得(SELECT)の前に ユーザマスタの更新(UPDATE or INSERT)を行う

    "ユーザID"に何を使っていて、どう渡すかが解決できれば
    比較的簡単な実装方法だと思われます。

    ※初期値設定も上位アプリ+URLアクセス構文ではなく、ユーザIDをストアドプロシージャに渡す方法でどうでしょうか。

    2009年6月30日 5:55

すべての返信

  • 別の方法ですがいかがでしょうか。

    (1)レポート実行時に主となるデータソースを SELECT ステートメントではなく
     ストアドプロシージャとして実装する
    (2)そのストアドプロシージャのパラメータとして、
     レポートのパラメータの他に"ユーザID"を加える(グローバル変数 User!UserID が使えるかも)
    (3)そのストアドプロシージャの中で、
      データ取得(SELECT)の前に ユーザマスタの更新(UPDATE or INSERT)を行う

    "ユーザID"に何を使っていて、どう渡すかが解決できれば
    比較的簡単な実装方法だと思われます。

    ※初期値設定も上位アプリ+URLアクセス構文ではなく、ユーザIDをストアドプロシージャに渡す方法でどうでしょうか。

    2009年6月30日 5:55
  • nagasakitさん

    ありがとうございました。
    ご提示していただきました方向で解決することができました。

    グローバル変数 User!UserID と Globals!ReportName を使用して
    レポートごと・ユーザーごとにプロンプトの初期値をDBに保存、
    初期値設定を保存された値から行うことで実装できました。
    2009年7月3日 0:44