ActiveReports for .NET 18.0J
カスタムコードを使用するレポートの作成
ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > ページレポート/RDLレポートのチュートリアル > カスタマイズ > カスタムコードを使用するレポートの作成

このチュートリアルでは、カスタムコードを使用して作成するレポートの作成方法を紹介します。

このトピックでは、以下のタスクを行います。

メモ:

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

デザイン時のレイアウト

実行時のレイアウト

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

  1. Visual Studioで新規プロジェクトを開きます。
  2. [プロジェクト]メニューから[新しい項目の追加]を選択します。
  3. [新しい項目の追加]ダイアログでActiveReports 18.0Jページレポート]を選択し、ファイル名を「CustomCode」に変更します。
  4. [追加]ボタンをクリックします。

詳細については、「クイックスタート」を参照してください。

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

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

データセットを追加する

  1. レポートエクスプローラ[データソース]ノードを右クリックして、[データセットの追加]のオプションを選択するか、[追加]ボタンから[データセット]を選択します。
  2. [データセット]ダイアログ[全般]のページを選択し、[名前]フィールドを「Districts」に変更します。この名前は[レポートエクスプローラ]で、[データソース]の子ノードとして表示されます。
  3. [データセット]ダイアログの[クエリ]フィールドに次のSQLクエリを入力します。
    SQLクエリ
    コードのコピー
    SELECT Store.StoreName, Address.City, Address.Region AS StateProvince, Address.Country, Districts.District
    FROM Address INNER JOIN (Districts INNER JOIN Store ON Districts.DistrictID = Store.DistrictID) ON Address.AddressID = Store.Address WHERE NOT Districts.DistrictID = 0 ORDER BY Districts.District
    
  4. クエリを検証するには、クエリボックスの横にある[データセットの検証]アイコンをクリックします。

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

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

  1. Visual Studioのツールボックスから、デザイナ面上に「TextBox」コントロールをドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。
    プロパティ名 プロパティの値
    Location 0in, 0in
    Size 6.5in, 0.5in
    TextAlign Center
    FontSize 14pt
    Value 地区別の商店
  2. ツールボックスから、デザイナ面上にTableデータ領域をドラッグし、[プロパティ]ウィンドウから、DataSetNameプロパティを「Districts」に設定します。
  3. Tableに以下のプロパティを設定します。
    プロパティ名 プロパティの値
    Location 0in, 0.5in
    FixedSize 6in, 7in
    メモ: ページレポートでは、FixedSizeプロパティを設定する必要があります。
  4. Table内をクリックし、Tableの上部に列ハンドルを表示します。[プロパティ]ウィンドウから、次の列に対してWidthプロパティを設定します。
    TableColumn1 3in
    TableColumn2 1.5in
    TableColumn3 1.5in
  5. Table内をクリックし、Tableの左に行ハンドルを表示します。いずれかの行ハンドルを右クリックして[グループの挿入]を選択します。
  6. [Table - グループ]ダイアログでは、[グループ化の条件]のオプションに、次の式を入力します。=Fields!District.Value」
  7. 同ダイアログで、[名前]「District」に設定し、[OK]をクリックしてダイアログを閉じます。新しいグループのヘッダとフッタが表示されます。
  8. レポートエクスプローラ[Districts]データセットからDistrict] フィールドをTableのグループヘッダの2番目の列にドラッグします。これにより自動的にグループヘッダ行に式が入力され、Tableヘッダ行に静的なラベルが表示されます。
  9. グループヘッダ行の1番目の列で、[District]フィールドの左のセルを選択し、[プロパティ]ウィンドウのValueプロパティを「地区」に設定します。
  10. グループヘッダ行の左にある行ハンドルをクリックし、行全体を選択して、[プロパティ]ウィンドウから以下のプロパティを設定します。
    プロパティ名 プロパティの値
    FontSize 12pt
    FontWeight Bold
    BackgroundColor MediumPurple
    Color White
  11. Tableの左にあるいずれかの行ハンドルを右クリックし、[テーブルのヘッダ]を選択して、テーブルのヘッダを削除します。
  12. Tableの左にあるいずれかの行ハンドルを右クリックし、[テーブルのフッタ]を選択して、テーブルのフッタを削除します。
  13. [レポートエクスプローラ]へと移動し、[Districts]データセットから以下のフィールドをテーブルの詳細行上にドラッグ&ドロップします。
    フィールド
    StoreName TableColumn1
    City TableColumn2
    StateProvince TableColumn3
  14. グループヘッダの3番目の列からState Provinceの静的なラベルを削除します。
  15. グループヘッダ行の行ハンドルを右クリックし、[下に行を挿入]を選択して各グループの静的なラベルを表示するために行を追加します。
  16. 追加した行で、Tableの列の静的なラベルを以下の値のように入力します。

    TableColumn1

    プロパティ名 プロパティの値
    Value 商店番号
    FontWeight Bold

    TableColumn2

    プロパティ名 プロパティの値
    Value 都市
    FontWeight Bold

    TableColumn3

    プロパティ名 プロパティの値
    Value =iif(Fields!Country.Value="USA", "州", "地方")
    FontWeight Bold
    メモ: 3番目の列では、国が米国である場合は「州」を表示しますが、そうではない場合は「地方」を表示します。

コードをレポートに埋め込んでフィールド式で参照する

このカスタムコードは、レポートにある各都市に対してYahoo!® Mapsへ移動するURLを作成します。

  1. レポートの[スクリプト]タブで、以下のコードを入力し、URLを作成します。
    Visual Basicコード
    コードのコピー
    Public Function MapLink(ByVal Country, ByVal City, ByVal StateProvince) As String 
            Dim Link As String 
            Dim _Country As String = Country.ToString() 
            Dim _City As String = City.ToString() 
            Dim _StateProvince As String = StateProvince.ToString() 
            
            Select Case _Country 
                    Case "USA" 
                      Link = "http://maps.yahoo.com/maps_result?addr=&csz=" & _City & "%2C+" & _StateProvince & "&country=us&new=1&name=&qty=" 
    Case "Canada" Link = "http://ca.maps.yahoo.com/maps_result?csz=" & _City & "%2C+" & _StateProvince & "&country=ca" Case Else Link = "" End Select Return Link End Function

    メモ: カスタムコードは、レポートでコードを再利用する場合、または、式で指定できないような非常に複雑なコードを使用する場合役に立ちます。カスタムコードは、Visual Basic.NETを基に記述されたインスタンスである必要があります。複数のメソッドを含むことができますが、クラスまたは他の.NET言語を使用する場合、カスタムアセンブリを作成してください。詳細については、「スクリプトの使用」を参照してください。

フィールド式に埋め込んだコードを参照する

  1. レポートの[デザイナ]タブでは、TableのDetailの行を選択するために2番目の列を(=Fields!City.Value 式を含む)選択します。[プロパティ]ウィンドウの下部にある[プロパティ設定ダイアログ]をクリックします。これはコントロールのダイアログを開くコマンドです。詳細については、「[プロパティ]ウィンドウ」を参照してください。
  2. 開かれる[Textbox - 全般]ダイアログで、[ナビゲーション]ページへ移動します。
  3. [URLに移動]の横にあるラジオボタンを選択し、コンボボックスに次の式を入力します。= Code.MapLink(Fields!Country.Value, Fields!City.Value, Fields!StateProvince.Value)
  4. [OK]をクリックしダイアログを閉じ、コードを使用してフィールド用のハイパーリンクを作成します。

レポートを表示する

または

関連トピック