Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項  サイト内検索


フォーム詳細部分でのデータの並び替え:SampleFile021



帳票形式のフォーム では、一覧表示されるレコードを昇順、または降順に並び替えすることができます。最も簡単な方法は、クエリで並び替えを行いたいフィールドの[並び替え]欄で昇順、降順を指定する方法ですが、フォームを開いた後でもクリック操作で並び替え を簡単に行うことができます。今回は、これを実現するプロシージャを紹介します。

サンプルテーブル

サンプルで使用するテーブルレコードは以下のようなものを想定します。テーブル名は、tbl_sampleです。なお、商品AからDまで続くフィールドのデータ型は数値型です。

 
ID 会社名 商品A 商品B 商品C 商品D
1 akira商事 \522,361 \11,254 \5,569,541 \54,478
2 亜貴羅コーポレーション \69,553 \566,984 \112,569 \59,883
3 Accessクリエイター \0 \0 \55,694 \1,695,541
4 Office興産 \1,123,654 \8,894,569 \55,436 \59,883
5 入江悪徳不動産(有) \962,236 \741,695 \326,954 \4,456,954
6 篠原矯正器具販売 \22,632 \59,548 \112,569 \0
7 神田芸能派遣(有) \44,151 \2,156 \0 \0
8 池田劇場 \56,569 \54,000 \12,510 \112,860
9 財)佐野人生相談所 \26,600 \15,220 \11,540 \85,526
10 鞄。本マネキン \566,200 \175,562 \32,600 \451,184
11 (有)田中ものまね教室 \0 \0 \0 \522,620

サンプルフォームの作成

以下の手順に従って、tbl_sampleテーブルを元に帳票形式フォームをAccessウィザードを用いて作成します。

  1. フォームをデザインビューで開きます。
  2. フォームのレコードソースをクエリに変換します。
  3. クエリ内に商品A〜Dまでの合計値を表示する新規フィールドを作成します。
  4. このフィールド欄には、計: [商品A]+[商品B]+[商品C]+[商品D] と記述します。
  5. 今回はレコードを表示するだけなので、フォームプロパティにある追加の許可欄で いいえ を選択します。
  6. オートナンバーの文字を非表示にすることができます。

  1. 作成したフォームをデザインビューで開きます。

OrderBy / 並び替え プロパティ

プロシージャ内でレコードデータの並び替えを行うには、OrderBy メソッドを用います。並び替えの対象となるフィールド数は合計フィールドを含めると5フィールド数あるので、それぞれを選択できる仕様とします。

オプショングループの作成

フォームフッターにオプショングループを作成します。名前はoption_整列方法です。オプショングループの更新後処理イベントに以下のプロシージャを記述します。

Private Sub option_整列方法_AfterUpdate()

    If Me.cmd_切り替え = False Then

        Select Case ActiveControl 'アクティブなコントロール
        '以下、降順です。
            Case 1: OrderBy = "[計] DESC,[ID]"
            Case 2: OrderBy = "[商品A] DESC,[ID]"
            Case 3: OrderBy = "[商品B] DESC,[ID]"
            Case 4: OrderBy = "[商品C] DESC,[ID]"
            Case 5: OrderBy = "[商品D] DESC,[ID]"
            Case 6: OrderBy = "[商品E] DESC,[ID]"
            Case 7: OrderBy = "[商品F] DESC,[ID]"
            Case 8: OrderBy = "[商品G] DESC,[ID]"
        End Select

        OrderByOn = True '実行します。
  
    Else

        Select Case ActiveControl  'アクティブなコントロール
        '以下、昇順です。
            Case 1: OrderBy = "[計],[ID]"
            Case 2: OrderBy = "[商品A],[ID]"
            Case 3: OrderBy = "[商品B],[ID]"
            Case 4: OrderBy = "[商品C],[ID]"
            Case 5: OrderBy = "[商品D],[ID]"
            Case 6: OrderBy = "[商品E],[ID]"
            Case 7: OrderBy = "[商品F],[ID]"
            Case 8: OrderBy = "[商品G],[ID]"
        End Select

        OrderByOn = True '実行します。

    End If

End Sub
解説
  1. OrderByを用いた並び替えでは昇順が既定値になります。 よって、降順で並び替えるには対象となるフィールド名のすぐ後ろに DESC を記述します。
  2. [計] DESC,[ID] の意味は、[計]フィールドを降順、[ID]フィールドを昇順で並び替えることを意味します。

トグルボタンの見え隠れ

次に、応用としてトグルボタン(コマンドボタンではない)を利用してフォームフッターの表示、非表示を切り替える技をマスターしま す。以下の手順でトグルボタンを作成します。

  1. フォームの詳細エリアにトグルボタンを新規作成します。
  2. 名前はトグルAと命名します。
  3. トグルボタンを押し込むとフォームフッターが現れ、 また押し込んでいる状態のトグルボタンを再度クリックするとオプショングループを非表示にします。
  4. 「昇順」「降順」を切り替えるトグルボタンを新規作成します。
  5. トグルBと命名します。
トグルAの更新後処理イベントプロシージャ

このプロシージャは以下のとおりです。更新後処理イベントに記述します。

Private Sub トグルA_AfterUpdate()

    Select Case Me.トグルbotton
        Case True '押し込まれていなる状態であったら…
            Me.Section(2).Visible = True
        Case False '押し込まれていない状態であったら…
            Me.Section(2).Visible = False
    End Select

  Me.OrderBy = "" '並び替えをクリアします。

End Sub
解説
  1. Section(0) とは、フォームヘッダーを意味します。
  2. Section(1) とは、フォームの詳細部分を意味します。
  3. Section(2) とは、フォームフッターを意味します。
留意点
  • クリック時イベントではなく更新後処理イベントを利用します。
トグルBの更新後処理イベントプロシージャ

このプロシージャは以下のとおりです。更新後処理イベントに記述して下さい。

Private Sub トグルB_Click()

    Select Case ActiveControl  'アクティブなコントロール
        Case True
            '標題を変更します。
            Me.ActiveControl.Caption = "只今の設定は : 降順(&I)"
        Case False
            '標題を変更します。
            Me.ActiveControl.Caption = "只今の設定は : 昇順(&I)"
    End Select
  
    'オプショングループを初期化します。
    Me.option_整列方法 = False

End Su

フォームビューと動作確認

  1. フォームをフォームビューで開き動作確認を行います。

  1. オプションを表示トグルボタンをクリックします。

  1. 合計欄フィールドが昇順で並び替えられ、フォームフッターが現れます。

関連ページ

ページの先頭へ 前ページへ戻る

 


フォーム詳細部分でのデータの並び替え:SampleFile021


 

-Microsoft Access Club-