GrapeCity ActiveReports for .NET 16.0J
パラメータ付きのクエリの使用
ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > ページレポート/RDLレポートのチュートリアル > データ > パラメータ付きのクエリの使用

実行時にクエリの構成を変更するために、動的なクエリを使用することができます。このチュートリアルでは動的なクエリの作成方法を紹介します。

このチュートリアルでは、以下のタスクを行います。

メモ:

チュートリアルを完了すると、次のようなレポートが作成されます。

デザイン時のレイアウト

実行時のレイアウト

Visual StudioプロジェクトにActiveReportsを追加する

  1. Visual Studioで新規プロジェクトを開きます([ファイル]メニューから[新規作成][プロジェクト]を選択)。
  2. [新しいプロジェクト]ダイアログで[ActiveReports 16.0J ページレポート アプリケーション]を選択し、ファイル名を「DynamicQueries」に変更します。
  3. [OK]ボタンをクリックすると、ActiveReports 16 ページレポートアプリケーションが新規作成されます。デフォルトでページレポートがプロジェクトに追加されています。

プロジェクトの追加については、「クイックスタート」を参照してくだざい。

レポートをデータソースに接続する

  1. レポートエクスプローラ]で[データソース]ノードを右クリックして、[データソースの追加]オプションを選択するか、[追加](+)ボタンから[データソース]を選択します。
  2. [レポートデータソース]ダイアログ[全般]ページを選択し、名前を「ReportData」に変更します。
  3. このチュートリアルでは、Reelsデータベースに接続します。詳細については、「データソースとの接続」を参照してください。

データセットを追加する

  1. レポートエクスプローラ]で、追加したデータソースのノードを右クリックして、[データセットの追加]オプションを選択するか、[追加](+)ボタンから[データセット]を選択します。
  2. [データセット]ダイアログ[全般]ページを選択し、データセットの名前を「Products」に変更します。 この名前は[レポートエクスプローラ]で、追加したデータソースの子ノードとして表示されます。
  3. [データセット]ダイアログの[クエリ]フィールドに次のSQLクエリを入力します。
    SQLクエリ
    コードのコピー
    SELECT Movie.Title, Product.InStock, Product.StorePrice 
    FROM MediaType 
    INNER JOIN 
      (Movie INNER JOIN 
        (Product INNER JOIN MovieProduct 
          ON Product.ProductID = MovieProduct.ProductID) 
        ON Movie.MovieID = MovieProduct.MovieID) 
      ON MediaType.MediaID = MovieProduct.MediaType 
    WHERE (((MediaType.MediaID)=1))
    ORDER BY Movie.Title
    
  4. クエリボックスの横にある[データセットの検証]アイコンをクリックし、クエリを検証します。

  5. [OK]をクリックしてダイアログを閉じます。データセットとクエリのフィールドは、レポートエクスプローラにノードとして表示されます。

レポートのレイアウトを作成する

  1. Visual StudioのツールボックスからTableデータ領域をレポートのデザイン面上にドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。
    プロパティ名 プロパティの値
    Location 0in, 0.5in
    Size 5.5in, 0.75in
    FixedSize 6.5in, 7in
  2. レポートエクスプローラProductsデータセットから以下のフィールドをTableの詳細行にドラッグします。
    データフィールド 列名
    Title TableColumn1
    InStock TableColumn2
    StorePrice TableColumn3
    メモ: 詳細行に式が自動的に追加されると同時に、ヘッダ行に静的なラベルが表示されます。
  3. Tableの行の左にある行ハンドルをクリックし、ヘッダ行を選択して、[プロパティ]ウィンドウから以下のプロパティを設定します。
    プロパティ名 プロパティの値
    FontWeight Bold
    BackgroundColor DarkSeaGreen
    RepeatOnNewPage True
  4. 詳細行の[StorePrice]フィールドを選択して、[プロパティ]ウィンドウからFormatプロパティを「Currency」に設定します。

  5. Tableの列の上にある列ハンドルをクリックし、各列を選択して、[プロパティ]ウィンドウからWidthプロパティを以下のように設定します。
    Width
    1列 4.5in
    2列 1in
    3列 1in

パラメータリストにより使用される2番目のデータセットを作成する

  1. レポートエクスプローラ]で[データソース]ノードを右クリックして、[データセットの追加]のオプションを選択するか、[追加](+)ボタンから[データセット]を選択します。 
  2. [データセット]ダイアログ[全般]ページを選択し、データセットの名前を「MediaType」に変更します。
  3. [データセット]ダイアログの[クエリ]フィールドに次のSQLコマンドを入力します。
    SQLクエリ
    コードのコピー
    SELECT 0 AS MediaID, "All" AS Description
    FROM MediaType
    UNION SELECT MediaID, Description
    FROM MediaType
    ORDER BY Description
    
  4. クエリボックスの横にある[データセットの検証]アイコンをクリックし、クエリを検証します。
     
  5. [OK]をクリックしてダイアログを閉じます。データセットとクエリフィールドは、レポートエクスプローラにノードとして表示されます。

レポートにパラメータを追加する

  1. レポートエクスプローラ]で[パラメータ]ノードを選択します。
  2. ノードを右クリックし、[パラメータの追加]を選択して[レポート - パラメータ]ダイアログを開きます。
  3. ダイアログボックスが表示されたら、パラメータリストからパラメータを選択します。
  4. パラメータリストで、以下のようにプロパティを設定します。

    [全般]タブ:

    • 名前: MediaType
    • データタイプ: String
    • パラメータ入力ダイアログに表示する文字列: メディアの種類を選択してください。

    [使用できる値]タブでは[クエリから値を取得]を選択します。

    • データセット: MediaType
    • 値: MediaID
    • ラベル: Description
  5. [OK]をクリックしてダイアログを閉じ、コレクションにパラメータを追加します。このパラメータはレポートエクスプローラにパラメータのノードとして表示します。

動的なクエリを使用するためにProductsデータセットを変更する

  1. レポートエクスプローラ[Products]データセットを右クリックし、[編集]を選択します。
  2. 表示されるデータセットダイアログで[クエリ]ページを選択します。
  3. [クエリ]フィールドで、クエリを次の式に変更します。
    クエリ
    コードのコピー
    ="SELECT Movie.Title, Product.InStock, Product.StorePrice, MediaType.Description FROM MediaType INNER JOIN (Movie INNER JOIN (Product INNER JOIN MovieProduct ON Product.ProductID = MovieProduct.ProductID) ON Movie.MovieID = MovieProduct.MovieID) ON MediaType.MediaID = MovieProduct.MediaType" & IIf(Parameters!MediaType.Value = 0, ""," WHERE (MediaType = " & Parameters!MediaType.Value & ")") & " ORDER BY Movie.Title"
  4. [OK]をクリックしてダイアログを閉じます。

選択したパラメータのラベルを表示するためにヘッダを追加する

  1. Visual Studioのツールボックスからレポートのデザイン面上にTextBoxコントロールをドラッグします。RDLレポートの場合は、ページヘッダ上にTextBoxコントロールを配置することも可能です。
  2. 配置したTextBoxコントロールを選択し、[プロパティ]ウィンドウから以下のプロパティを設定します。
    プロパティ名 プロパティの値
    TextAlign Center
    FontSize 14pt
    Location 0in, 0in
    Size 6.5in, 0.25in
    Value =Parameters!MediaType.Label & " 映画の在庫"
    メモ: 式の中で[Value]の代わりに[Label]を使用することにより、パラメータ値の[MediaID]より分かりやすい[Description]フィールドを表示します。

レポートを表示する

または

注意: ページレポートでは、レポートをプレビューする前に、使用されるデータセットの名前を[ページ]ダイアログの[データセット名]に設定する必要があります。たとえばこのチュートリアルでは、データセット名として「Products」が設定されています。
関連トピック