none
クリスタルレポートに表示する内容をフォームから検索したい RRS feed

  • 質問

  • いつもお世話になっております。

    VB2008のクリスタルレポートの、データベースフィールドにMDBのテーブルを移して

    表示したい内容のフィールドをクリスタルレポートに、D&Dしてレポートを表示させたのですが

    合計ページ数が8万ページありまして、最初表示するのに3分くらいかかってしまいます

    フォーム1にTEXTBOXとボタンを配置してTEXTBOXに入力したIDのページだけを表示させたいのですが

    どのようにすれば宜しいのか教えて頂けるとありがたいです。

    よろしくお願いします

    2010年10月21日 7:22

回答

  • TextBoxに入力したIDで絞り込んだDataSetを作成し、それをクリスタルレポートで表示すれば良いです。レポートのSetDataSourceメソッドを使い、以下のようにします。

    レポートのインスタンス.SetDataSource(データーセット名)

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答の候補に設定 山本春海 2010年10月27日 8:37
    • 回答としてマーク 山本春海 2010年12月8日 6:23
    2010年10月21日 7:58
    モデレータ
  • DataTableを経由せずにレポートがデータベースに直接SQLを発行してデータを取得しているなら
    データベース サーバーへのレコード選択の負荷の移行

    を参考にするといいでしょう。

    手順は
    • フィールドエクスプローラーでパラメーターフィールドを右クリックで新規作成。
    • 適当な検索条件の名前をつけて値の型をIDの型にあわせて選択。
    • メニュー->レポート->選択エキスパート を選択
    • ドロップダウンから先ほどつけたパラメーターフィールド名を選択し、条件を"と等しい値"にします。

    ここまでやればレポートを表示するときに勝手に選択ダイアログが出るので、わざわざ選択用のTextboxを用意する手間はなくなります。

    ダイアログを表示させずに自前で選択する値を設定したい場合は、レポートのInitReportイベントやRefreshReportイベントなどでSetParameterValueでパラメーターフィールドに値を入れてやればダイアログが表示されずに検索してくれるようになります。

    CrystalReportViewerを表示させると最初に勝手に読み込みにいくために遅くなるのが問題なら、Navigateイベントでe.Handled=Trueにしてキャンセルしてしまうとかね。

    • 回答の候補に設定 山本春海 2010年10月27日 8:37
    • 回答としてマーク 山本春海 2010年12月8日 6:23
    2010年10月21日 10:07

すべての返信

  • TextBoxに入力したIDで絞り込んだDataSetを作成し、それをクリスタルレポートで表示すれば良いです。レポートのSetDataSourceメソッドを使い、以下のようにします。

    レポートのインスタンス.SetDataSource(データーセット名)

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答の候補に設定 山本春海 2010年10月27日 8:37
    • 回答としてマーク 山本春海 2010年12月8日 6:23
    2010年10月21日 7:58
    モデレータ
  • DataTableを経由せずにレポートがデータベースに直接SQLを発行してデータを取得しているなら
    データベース サーバーへのレコード選択の負荷の移行

    を参考にするといいでしょう。

    手順は
    • フィールドエクスプローラーでパラメーターフィールドを右クリックで新規作成。
    • 適当な検索条件の名前をつけて値の型をIDの型にあわせて選択。
    • メニュー->レポート->選択エキスパート を選択
    • ドロップダウンから先ほどつけたパラメーターフィールド名を選択し、条件を"と等しい値"にします。

    ここまでやればレポートを表示するときに勝手に選択ダイアログが出るので、わざわざ選択用のTextboxを用意する手間はなくなります。

    ダイアログを表示させずに自前で選択する値を設定したい場合は、レポートのInitReportイベントやRefreshReportイベントなどでSetParameterValueでパラメーターフィールドに値を入れてやればダイアログが表示されずに検索してくれるようになります。

    CrystalReportViewerを表示させると最初に勝手に読み込みにいくために遅くなるのが問題なら、Navigateイベントでe.Handled=Trueにしてキャンセルしてしまうとかね。

    • 回答の候補に設定 山本春海 2010年10月27日 8:37
    • 回答としてマーク 山本春海 2010年12月8日 6:23
    2010年10月21日 10:07