Accessお手本データベースのホームへ戻る

フォームにレコードの並べ替え/絞り込み/背景色を付けるお手本

 

3-1-1フォームにレコードの並べ替え/絞り込み/背景色を付けるサンプルデータベース

 

ビジネス用のアプリケーションを作成するとき、一般にマスタファイルが必要になります。マスタファイルをメンテするフォームは、表形式のオートフォームウィザードを使用すると簡単に作成することができます。ここで紹介するサンプルデータベースは、図3-1-2に示すようなオートフォームウィザードで作成したフォームに、レコードの並べ替え/絞込みの機能を追加して使い勝手を良くしています。さらに、行毎に異なる背景色を表示して見易くしています。

 

3-1-2 オートフォームウィザードで作成したマスタファイルメンテ用のフォーム

 

サンプルデータベース(CH3-1.mdb)では、以下に示すノウハウを習得することができます。

 

◆ フォームに配置されたレコードのフィールドを昇順/降順に並べ替える方法

◆ フォームに配置されたレコードのフィールドに検索条件を設定して絞込みを行う方法

◆ 行毎に異なる背景色を表示して見易くする方法

 

次の手順で、Access に添付されているサンプルデータベース Northwind.mdb を基に商品マスタメンテ用のフォームを作成します。

 

1 Access を起動して作業フォルダに新規データベース CH3-1.mdb を作成します。

 

2      ファイルメニューから外部データの取り込みインポートをクリックします。インポートのダイアログが表示されたら、Accessのサンプルデータベース Northwind.mdb を選択してインポートボタンをクリックします。

 


3-1-3 インポートダイアログからNorthwind.mdbを選択


Northwind.mdbは、デフォルトではC:ドライブの”\Program Files\Microsoft Office\Office\Samples\Northwind.mdb” にインストールされます。)

 オブジェクトのインポートダイアログが表示されたら、テーブルタブをクリックして、商品テーブルをクリックします。最後にOKボタンをクリックしてインポートを完了させます。
 


3-1-4 Northwind.mdbから商品テーブルを取り込む

 

3 データベースウィンドウからクエリをクリックしたら、新規作成のボタンをクリックします。クエリの新規作成ダイアログが表示されたら、デザインビューを選択してOKボタンをクリックします。

 

4      テーブルの表示ダイアログから商品テーブルを選択して追加ボタンをクリックします。OKボタンをクリックしてダイアログを閉じます。

 

5 商品テーブルから商品コード商品名梱包単価単価をダブルクリックしてQEBフィールドに移動します。クエリをqry商品マスタ保守の名称で保存して閉じます。 



3-1-5 商品テーブルメンテ用のクエリを作成

6 データベースウィンドウからフォームをクリックしたら新規作成ボタンをクリックします。フォームの新規作成ダイアログが表示されたら、オートフォーム:表形式をクリックします。基になるテーブルまたはクエリのコンボボックスからqry商品マスタ保守を選択したらOKボタンをクリックします。


3-1-6 オートフォームウィザードで商品テーブルメンテ用のフォーム作成

 

7 フォームが表示されたら、frm商品マスタ保守の名称で保存します。

 

8 Access を終了させます。 

 


● データシート形式のフォームに表示されているレコードのフィールドを昇順/降順に並べ替えるには

 

1 Accessを起動してCH3-1.mdb を開きます。

 

2 frm商品マスタ保守をデザインモードで開いたら、フォームヘッダーに配置されているラベルを削除して替わりにコマンドボタンを配置します。

 


3-1-7 フォームヘッダーにコマンドボタンを配置

3 商品コードのコマンドボタンのプロパティを表示させたら、その他のタブをクリックしてタグプロパティに商品コードのフィールド名、商品コードを設定します。以下、同様の手順でコマンドボタン商品名、梱包単位そして単価のタグプロパティにフィールド名を設定します。

 

3-1-1 コマンドボタンのプロパティ

コントロールの種類

プロパティ

コマンドボタン1
(商品コード)

タグ

商品コード

クリック時

=SortbyField_FS([Form])

コマンドボタン2

(商品名)

タグ

商品名

クリック時

=SortbyField_FS([Form])

コマンドボタン3

(梱包単位)

タグ

梱包単位

クリック時

=SortbyField_FS([Form])

コマンドボタン4

(単価)

タグ

単価

クリック時

=SortbyField_FS([Form])

 


3-1-8 商品コードのタグプロパティにフィールド名を設定

4 コマンドボタン、商品コード、商品名、梱包単位、単価のクリック時のプロパティに=SortbyField_FS([Form])を設定します。

 


3-1-9 全てのコマンドボタンのクリック時のプロパティにSortbyField_FS()関数を呼び出すように設定する

5 フォームを保存して閉じます。

 

6 ファイルメニューから外部データの取り込みインポートをクリックしてCH3-1.mdbからモジュール basMyLib” を取り込みます。

 

7 フォームfrm商品マスタ保守を開いたら、コマンドボタンをクリックしてフィールド別に昇順/降順に並べ替えられるか確認します。コマンドボタンをクリックすると標題に上下の矢印が表示されます。上矢印(↑)は降順、下矢印(↓)は昇順を意味します。

 

3-1-10 商品マスタのレコードを単価の降順に並べ替えた例

 

 

SortbyField_FS()関数について

SortbyField_FS()関数には、引数としてフォームを指定します。コマンドボタンのクリック時のイベントから引数のフォームを指定するには =SortbyField_FS([Form]) のように[]で囲って指定します。

 

SortbyField_FS()関数の最初のFor Each...Nextループでは、コマンドボタンの標題に表示されている矢印を除去しています。For...Nextでフォームヘッダーのみ検索するには、frm.Section()の引数にacHeaderを指定します。コントロールのタイプを調べるには、ControlTypeプロパティを使用します。ControlTypeacCommandButtonならコマンドボタンです。

 

コマンドボタンの標題から矢印を除去するのに、Access 2000VBAで追加されたReplace()関数を使用しています。



For Each ctl2 In frm.Section(acHeader).Controls

    With ctl2

      If .ControlType = acCommandButton Then

        If ctl.Caption <> .Caption Then

          .Caption = Replace(.Caption, conUp, "", 1, 1, vbTextCompare)

          .Caption = Replace(.Caption, conDown, "", 1, 1, vbTextCompare)

        End If

      End If

    End With

Next ctl2


Tip

 

For Each …. Nextステートメンテでフォームヘッダー、詳細、フッターを参照するには

For Each ctl In Me.Controls

Debug.Print ctl.Name

Next ctl

のように記述します。

フォームの特定のセクションのみ検索するには、Me.Section()の引数にacHedaer, acDetail, acFooterを指定します。

 

For Each ctl In Me.Section(acHeader).Controls

    Debug.Print ctl.Name

Next ctl

 

For Each ctl In Me.Section(acDetail).Controls

    Debug.Print ctl.Name

Next ctl

 

For Each ctl In Me.Section(acFooter).Controls

    Debug.Print ctl.Name

Next ctl

 

 

フォームのOrderByプロパティに設定するフィールド名は、コマンドボタンのタグプロパティから取得しています。コマンドボタンの標題が上矢印(↑)のときは、降順のため"DESC"を付加しています。例えば、単価のコマンドボタンをクリックしたときは、OrderByプロパティには 単価 DESCが設定されます。

 

With frm

    .OrderBy = ctl.Tag & IIf(InStr(ctl.Caption, conUp) > 0, " DESC", "")

    .OrderByOn = True

    .Requery

End With

 

 

リスト3-1-1 SortbyField_FS()関数

Public Function SortbyField_FS(frm As Form)

'

' データシート用フォームのレコードのフィールドを昇順/降順に並べ替えます[1]

'

  Const conUp = ""    ' 降順に並べ替え

  Const conDown = ""  ' 昇順に並べ替え

 

  Dim ctl As Control

  Dim ctl2 As Control

 

  '

  ' コマンドボタンの標題に表示されている矢印を除去します

  '

  Set ctl = Application.Screen.ActiveControl

  For Each ctl2 In frm.Section(acHeader).Controls

    With ctl2

      If .ControlType = acCommandButton Then

        If ctl.Caption <> .Caption Then

          .Caption = Replace(.Caption, conUp, "", 1, 1, vbTextCompare)

          .Caption = Replace(.Caption, conDown, "", 1, 1, vbTextCompare)

        End If

      End If

    End With

  Next ctl2

  '

  ' Replace()関数で↑↓の矢印を逆方向の矢印(↓↑)に置換します

  '

  With ctl

    If InStr(.Caption, conUp) > 0 Then

      .Caption = Replace(.Caption, conUp, conDown, 1, 1, vbTextCompare)

    ElseIf InStr(.Caption, conDown) > 0 Then

      .Caption = Replace(.Caption, conDown, conUp, 1, 1, vbTextCompare)

    Else

      .Caption = .Caption & conUp

    End If

  End With

  '

  ' OrderByプロパティに並べ替えるフィールド名を設定します

  '

  With frm

    .OrderBy = ctl.Tag & IIf(InStr(ctl.Caption, conUp) > 0, " DESC", "")

    .OrderByOn = True

    .Requery

  End With

End Function

 


データシート形式のフォームに表示されているレコードを絞り込むには

 

1      Access を起動して「レコードのフィールドを昇順/降順に並べ替えるには」で作成した CH1-1.mdb を開きます。

2      フォーム“frm商品マスタ保守をデザインモードで開いたら、フォームヘッダーのコマンドボタンの下にフィルタ条件を入力するテキストボックスを作成します。


3-1-11 フォームヘッダーにフィルタ条件を入力するテキストボックスを配置

3      商品コードのテキストボックスのプロパティを表示させたら、その他のタブをクリックしてタブプロパティに商品コードのフィールド名、商品コードを設定します。以下、同様の手順で商品名、梱包単位、単価のタグプロパティにフィールド名を設定します。

 
3-1-2 テキストボックスのプロパティ  

コントロールの種類

プロパティ

テキストボックス1

タグ

商品コード

テキストボックス2

タグ

商品名

テキストボックス3

タグ

梱包単位

テキストボックス4

タグ

単価



3-1-12 商品コードのタグプロパティにフィールド名を設定

4      フォームフッターにフィルタ実行/解除のコマンドボタンを作成します。


3-1-13 フォームフッターにフィルタ実行/解除のコマンドボタン作成

5      フィルタ実行のコマンドボタンのクリック時のイベントに、=Filter_FS([Form])を設定します。Filter_FS()関数の引数には、フォームを指定します。プロパティから関数を呼び出すときは、Filter_FS(Me)のようにMeは使用できません。替わりに[Form]を指定します。

 
3-1-3 コマンドボタンのプロパティ

コントロールの種類

プロパティ

コマンドボタン1
(フィルタ実行)

クリック時

=Filter_FS([Form])

コマンドボタン2

(フィルタ解除)

クリック時

=ReSet_FS([Form])



同様の手順で、フィルタ解除のコマンドボタンのクリック時のイベントに、=ReSet_FS([Form])を設定します。
Filter_FS()
ReSet_FS()関数は、basMyLibに含まれていますので取り込む必要はありません。


3-1-14 フィルタ実行コマンドのクリック時のプロパティに関数を設定

6      フォーム“frm商品マスタ保守を開いて、レコードの絞込みが正常に動作するか確認します。商品コードのフィルタ条件に”1”を入力したら、フィルタ実行ボタンをクリックします。商品名で絞り込みするときは、ワイルドカード(*:半角)指定で曖昧検索を行うことができます。例えば、商品名の先頭に果汁が含まれるアイテムを絞り込むときは、果汁*”のように指定します。商品名の任意の位置に含まれる文字列を検索するときは、文字列の前後にを付加します。例えば、商品名に”100”が含まれるアイテムを絞り込むときは、”*100*”のように指定します。


3-1-15 商品コードでレコードを絞り込んだ例


3-1-16 商品名でレコードを絞り込んだ例(ワイルドカード指定)

7      絞り込みの確認ができたらフォームを保存して、Access 2000を終了させます。

 


Filter_FS()関数について

Filter_FS()関数は、フォームヘッダーの全てのコントロールを検索してテキストボックスとコンボボックスを見つけます。テキストボックスまたはコンボボックスが見つかったら、タグプロパティに格納されているテーブルのフィールド名を基にフィールドの型を調べます。

 

フィールドがテキスト型、メモ型のときは、検索文字列の前後にクオテーション(‘)を付加します。また、ワイルドカード()指定のときは、”Like” を挿入します。

数値型のときは、特に付加する情報はありません。日付型のときは、日付の前後に(#)を付加します。

フィルタ条件を作成したら、フォームのFilterプロパティに設定して再クエリを発行します。

フォームのFilterプロパティに設定されるフィルタ条件の例:

例1:商品コード = 1

例2:商品名 Like ‘果汁*’

例3:受注日 = #2000/04/01#


リスト3-1-2 Filter_FS()関数

Public Function Filter_FS(frm As Form, _

Optional varFocus As Variant) As Boolean

'

' フィールドをフィルタで絞込みします

'

  Dim rs As DAO.Recordset

  Dim ctl As Control

  Dim strFilter As String

 

  With frm

    Set rs = .RecordsetClone

    strFilter = ""

    '

    ' For Each...Nextのループではフォームヘッダーの全てのコントロールを検索します

    '

    For Each ctl In .Section(acHeader).Controls

      With ctl

        '

        ' テキストボックス、コンボボックスに対して処理を行います

        '

        Select Case .ControlType

          Case acTextBox, acComboBox

            If Len(Trim(Nz(.Value))) > 0 Then

              '

              ' タグプロパティに格納されているフィールド名のタイプを調べて

              ' 対応する処理を行います.

              ' テキスト、メモ型 => 検索文字列の前後にクオテーション(')を付加します

              ' 日付型 => 検索文字列の前後に(#)を付加します

              ' 数値型 => 特に付加する必要なし

              '

              Select Case rs(.Tag).Type

                Case dbText, dbMemo

                  If InStr(.Value, "*") > 0 Then

                    strFilter = strFilter & .Tag & " Like '" & .Value & "' AND "

                  Else

                    strFilter = strFilter & .Tag & "='" & .Value & "' AND "

                  End If

                Case dbInteger, dbLong, dbCurrency, dbDouble, dbSingle

                  strFilter = strFilter & .Tag & "=" & .Value & " AND "

                Case dbDate

                  strFilter = strFilter & .Tag & "=#" & .Value & "# AND "

              End Select

            End If

        End Select

      End With

    Next ctl

    rs.Close

    Set rs = Nothing

    '

    ' フィルタ条件を設定していないときは、エラーメッセージを表示して

    ' 引数で指定されたコントロールにフォーカスを移動します

    '

    If Len(strFilter) = 0 Then

      MsgBox "フィルタ条件を入力してください!", vbOKOnly

      If Not IsMissing(varFocus) Then     

        frm(varFocus).SetFocus

      End If

      Exit Function

    End If

    '

    ' Where句の最後の "AND" を除去します

    '

    strFilter = Left(strFilter, Len(strFilter) - 4)

    '

    ' フォームのFilterプロパティにWhere条件を設定して、再クエリします

    '

    .Filter = strFilter

    .FilterOn = True

    .Requery

    If Not IsMissing(varFocus) Then

      frm(varFocus).SetFocus

    End If

  End With

 

End Function

 

Note

Access では、DAO(Data Access Objects)の他にADO(ActiveX Data Objects)がサポートされました。デフォルトでADOが自動的に組み込まれます。DatabaseRecordsetなどのオブジェクトは、DAO/ADO双方のライブラリに存在しますので、これらのオブジェクトをライブラリ名を指定しないで定義するとADOのライブラリが使用されます。

  Dim db As Database 
デフォルトのADOのライブラリが参照される

  Dim rs As Recordset  デフォルトのADOのライブラリが参照される

 

DAOのライブラリを使用する場合は、オブジェクトを定義するときライブラリ名を指定します。

 

Dim db As DAO.Database  ‘ DAOのライブラリを使用するように定義

  Dim rs As DAO.Recordset  ‘ DAOのライブラリを使用するように定義

 

DAOのライブラリは、デフォルトでは組み込まれていませんのでVBE(Visula Basic Editor)ツールメニューから参照設定をクリックしてライブラリファイルのダイアログを表示させたら、リストボックスから Microsoft DAO 3.6 Object Library をチェックしてOKボタンをクリックします。

 
 

 

DAO/ADO双方のライブラリが組み込まれているときは、Database, Recordsetなどのオブジェクト定義するとき明示的にライブラリ名を指定するように心がけましょう。

 

Dim db As ADO.Database  ‘ ADOのライブラリを使用するように定義

  Dim rs As ADO.Recordset  ‘ ADOのライブラリを使用するように定義

Dim db As DAO.Database  ‘ DAOのライブラリを使用するように定義

  Dim rs As DAO.Recordset  ‘ DAOのライブラリを使用するように定義

 

 

Tip

acTextBox, acComboBoxなどの組み込み定数は、オブジェクトブラウザで表示させることができます。


オブジェクトブラウザで組み込み定数を表示させる手順:
1 Access のデータベースウィンドウから任意のモジュールを選択して、デザインボタンをクリックします。

 

2 VBEVisual Basic Editor)が起動されたら、表示メニューからオブジェクトブラウザをクリックしてオブジェクトブラウザを起動します。

 

3 プロジェクト/ライブラリのコンボボックスからAccessをクリックします。次に、検索文字列のコンボボックスにAcControlTypeを入力します。

 

4 クラスのリストボックスにAcControlTypeが表示されて、右側のメンバのリストボックスに組み込み定数の一覧が表示されます。


   

 

 

 

ReSet_FS()関数について

ReSet_FS()関数は、For Each…Nextループで、コマンドボタンの標題に表示されている矢印(↑↓)を除去します。また、フィルタ条件を設定するテキストボックスの値をNullに初期化します。最後に、フォームのOrderByFilterプロパティをNullに初期化して再クエリを実行します。

 

リスト3-1-3 Filter_FS()関数

Public Function ReSet_FS(frm As Form, _

  Optional varFocus As Variant) As Boolean

'

' フィールドの並べ替えを解除します

'

  Const conUp = ""    ' 降順

  Const conDown = ""  ' 昇順

  Dim ctl As Control

 

  With frm

    '

    ' 1) テキストボックスとコンボボックスの値をNullに初期化します

    ' 2) コマンドボタンの標題の矢印(↑↓)を除去します

    '

    For Each ctl In .Section(acHeader).Controls

      With ctl

        Select Case .ControlType

          Case acTextBox, acComboBox

            .Value = vbNullString

          Case acCommandButton

            .Caption = Replace(.Caption, conUp, "", 1, 1, vbTextCompare)

            .Caption = Replace(.Caption, conDown, "", 1, 1, vbTextCompare)

        End Select

      End With

    Next ctl

    '

    ' フォームのOrderBy, FilterプロパティをNullに初期化します

    '

    .OrderBy = vbNullString

    .OrderByOn = False

    .Filter = vbNullString

    .FilterOn = False

    .Requery

    If Not IsMissing(varFocus) Then

       frm(varFocus).SetFocus

    End If

  End With

 

End Function

 

Note

Replace(expression, find, replace[, start[, count[, compare]]])関数で、引数のcompareオプションを指定しないと、Access 2000の不具合でReplace()関数が正常に動作しません。Replace()関数を使用するときは、必ず以下のいずれかの引数を指定してください。

 

vbBinaryCompare

vbTextCompare

vbDatabaseCompare

 

 

 

Tip

複数のプロパティを参照/設定するとき、With… End Withステートメントを使用すると処理速度を高速化することができます。目安として3個以上のプロパティを参照/設定するときは、With … End Withを使用すると効果があります。

 


● データシート形式のフォームに行毎に異なる背景色を付けるには

 

1       Access を起動して「フォームに表示されているレコードを絞り込むには」で作成した CH1-1.mdb を開きます。

2       フォーム“frm商品マスタ保守をデザインモードで開いたら、フォームの詳細セクションにテキストボックスを作成してコントロール名をtxtRecnoに書き換えます。


3-1-17 詳細セクションにテキストボックス(txtRecno)を作成

3       txtRecnoのプロパティを表示させたら、可視プロパティを“いいえ”に設定します。また、コントロールソースプロパティに=GetColor_FS([Form])を設定します。GetColor_FS()関数は、レコード番号を計算して偶数ならTrue、奇数ならFalseを返します。txtRecnoは、非可視ですから表示されませんので2-3ミリぐらいのサイズに縮小します。

 表3-1-4 テキストボックスのプロパティ

コントロールの種類

プロパティ

テキストボックス

名前

txtRecno

可視

いいえ

コントロールソース

=GetColor_FS([Form])



  
  図3-1-18 txtRecnoのコントロールソースプロパティに関数を設定


4       フォームフッターに背景色を表示するコマンドボタンを作成します。


3-1-19 フォームフッターに背景色を表示するコマンドボタンを作成

5       背景色を表示するコマンドボタンのプロパティを表示させたら、クリック時のイベントに=SetColor_FS([Form])を設定します。SetColor_FS()関数は、フォームの詳細セクションに配置されているテキストボックス/コンボボックスに条件付き書式を設定します。条件付き書式のデフォルト時と条件1に異なる背景色を設定することにより、交互に異なる背景色が表示されるようにします。


3-1-20 背景色を表示するコマンドボタンのクリック時のイベントに関数を設定

6       フォームを開いたら、背景色のコマンドボタンをクリックして行毎に異なる背景色が表示されるか確認します。


3-1-21 行毎に異なる背景色を表示させた例

7       背景色が正常に表示されることが確認できたら、フォームを保存してAccessを終了させます。

 

Tip

フォームに配置されたコントロールが非可視の場合、デザインモードで開いたときに区別しやすいように背景色(例えば、緑色)を設定すると便利です。


GetColor_FS()関数について

GetColor_FS()関数は、フォームのRecordsetCloneプロパティを利用してカレントレコードのレコード番号を取得して、偶数ならTrue、奇数ならFalseを返します。rs.Bookmark = .Bookmarkでフォームのブックマークをクローンのブックマークに設定すると、フォームのカレントレコードと同じレコードに移動します。レコードセットのAbsolutePositionプロパティに+1加算した値がレコード番号になります。GetColor_FS()関数は、txtRecnoのソースコントロールに設定されていますので、txtRecnoの値はカレントレコードが偶数ならTrue、奇数ならFalseになります。txtRecnoは、条件付き書式の条件式で参照します。

 

リスト3-1-4 GetColor_FS()関数

Public Function GetColor_FS(frm As Form) As Boolean

'

' レコード番号を計算して偶数なら True 奇数なら False を返します

'

  Dim rs As DAO.Recordset

  Dim lngRecno As Long

 

  On Error Resume Next

  With frm

    Set rs = .RecordsetClone

    rs.Bookmark = .Bookmark

    If rs.EOF Or rs.BOF Then

      lngRecno = 0

    ElseIf Err.Number = 0 Then

      lngRecno = rs.AbsolutePosition + 1

    Else

      Err.Clear

      rs.MoveLast

      lngRecno = rs.AbsolutePosition + 2

    End If

  End With

  GetColor_FS = IIf(lngRecno Mod 2, False, True)

End Function

 


SetColor_FS()
関数について

SetColor_FS()関数は、フォームの詳細セクションに配置された全てのコントロールを検索して、テキストボックス/コンボボックスを見つけます。テキスト/コンボボックスが見つかったら、以前設定した条件付書式設定を削除して新たに条件付書式を設定します。条件付き書式では、デフォルト時と条件1の背景色を設定します。条件付き書式設定で、異なる背景色を設定することにより、偶数行には条件1で設定した背景色、奇数行にはデフォルト時で設定した背景色が表示されます。


 .FormatConditions.Delete

 .BackColor = conBackColor1   デフォルト時の背景色

 With .FormatConditions.Add(Type:=acExpression, Expression1:="[txtRecno]")

  .BackColor = conBackColor2 条件1の背景色

 End With



リスト3-1-5 SetColor_FS()関数

Public Function SetColor_FS(frm As Form)

'

' データシートの行に交互に背景色をつけます.

' この関数は GetColor_FS()とセットで使用します.

'

  Dim ctl As Control

  Const conBackColor1 = 15592924

  Const conBackColor2 = 13882281

 

  With frm

    '

    ' フォームの詳細セクションの全てのコントロールを検索して

    ' テキストボックスとコンボボックスを見つけます

    '

    For Each ctl In .Section(acDetail).Controls

      With ctl

        Select Case .ControlType

          '

          ' テキスト/コンボボックスが見つかったら条件付き書式設定を

          ' 削除して新規の条件付き書式を登録します.

          ' (既定と条件1の背景色を設定)

          '

          Case acTextBox, acComboBox

            .FormatConditions.Delete

            .BackColor = conBackColor1

            With .FormatConditions.Add( _

              Type:=acExpression, _

              Expression1:="[txtRecno]")

              .BackColor = conBackColor2

            End With

        End Select

      End With

    Next ctl

  End With

End Function

 



ダウンロード (CH3-1.lzh)
Accessお手本データベースのホームへ戻る