Microsoft Access Club >初心者講座 >アンケート管理ソフト >このページ >次頁 - 前項  サイト内検索


Accessの入力フォームのコンボボックスについて : アンケート管理ソフト



できあがったフォームに息を吹き込みましょうか。この入力フォームはコンボボックスを多用しています。異常なくらい…。Akiraは、このサイトのいたるところで"コンボボックス"の重要性を説いています。「データ入力には、コンボだ!」てな具合で…。今回は、コンボボックスについて、ちょっと考察してみましょう。まただ、言わないで下さい。

毎度ながら、出来上がりのフォームはこのような感じですね。

 コンボボックスのプロパティについて

性別には、「男」と「女」しかありません。これは絶対の真理です。まあ、これほど確定しているものはないでしょう。そこで、このコンボボックスについては、「男と女」のいづれかから選択させることを基準に考えます。

また、コントロールソースは「性別」です。ここで"コントロールの機能"についてお話しますと、テーブル(クエリ)のどのフィールドにデータを入れるか、又はどのフィールドのデータを表示させるかだけの機能です。※どのテーブル(クエリ)かについては、フォームの「レコードソース」で既に設定済みです。

 データ欄

それでは、コンボボックスのプロパティを開けて下さい。

 値集合タイプ

データ欄に値集合タイププロパティ が見えますか。既定値では、テーブル/クエリとなっていますね。この「値集合タイプ」には、

  1. テーブル/クエリ
  2. 値リスト
  3. フィールドリスト

の3種類からお好きな形式を選択できます。これらは下記のように選択します。

  • テーブル/クエリ
    テーブルやクエリに格納されているデータを基にして表示させる場合に用います
  • 値リスト
    決まった値を常に表示させる場合に用います。
  • フィールドリスト
    テーブルやクエリのフィールド名を表示させる場合に用います。

例題のような、男か女か、のような決まった値を入力する場合は、「値リスト」を指定して下さい。「値リスト」では、「値集合ソース」に記述した文字列を表示させることができます。

具体的に言いますと、「値集合ソース」に 男性;女性 と記述します。これで、コンボボックスに表示されるデータは、男性、続いて女性が表示されます。

 入力チェック

次に大事なのは、「入力チェック」です。

このチェックを"はい"に設定しますと、管理者が「値集合ソース」に設定した項目のみ、コンボボックスに入力許可を与えることができます。

今回の 性別入力コンボボックス は、例えば 中性 などと入力されては困るので、ここには必ず "はい "を設定して下さい。
そして、万が一、 中性(笑い)を入力する方のために、「エラーメッセージ」欄にあなた独自の警告文を記述しておきましょうか。

 自動拡張

「自動拡張」も"はい"を設定して下さい。上記「入力チェック」を はい に設定したなら、必ず はい にすると覚えて下さい。 なお、「自動拡張」の詳細は、Accessヘルプをご覧下さい。

 既定値

「既定値」の設定には注意が必要です。自分が使う場合は問題ありませんが、不慣れな方がこのコンボボックスを使用する場合、表示データを変更する必要があるにも拘わらず、そのままにして他の オブジェクトへ移動する方も多いですから…。今回は 空白 にしましょう。

 連結列

「連結列」の既定値は 1 です。今回は既定値のままで問題ないですが、「値集合タイプ」に テーブル/クエリ を指定 した場合は、この連結列プロパティに注意が必要です。

例えば、下記のようなフィールドを持つテーブル(クエリ)を想像して下さい。「値集合ソース」に 売上テーブル を指定します。すると、コンボボックスでは、左から ID、日付、‥ と全てのフィールドが並びます。当然ですよね。売上テーブルのフィールド数は 4 ですから‥。

しかし、ここで考えて下さい。何か疑問点が湧きませんか。もし、「ハタ!」と思い浮かぶ方は、この「初心者講座」の上級者です。この先を飛ばしてもらって結構です。

ID

テーブル名 : 売上テーブル

日付
担当者
売上金額

「コンボボックス」は一覧に表示されている項目を選択して、テーブル(クエリ含む)の指定されたフィールドにデータを 格納(入れる) するために使います。
上記の例でいいますと、4つ(左から ID、日付、‥ )並んだ一覧リストのどの項目をテーブル(クエリ含む)に引き渡すか、決めてあげなければなりません。

これを決めるのが「連結列」の数値なんです。1とは左から1番目を指します。4は左から4番目です。この「連結列」は、後々重要な場面に遭遇しますのでチョット頭の片隅に置いておく方がいいかと思います。

 書式欄

では、プロパティを書式に切り替えて下さい。この書式欄では、コンボボックスの 体裁 を調整する機能が満載です。

 列とリスト行数

特に大事なものは、「列」と「リスト行数」です。下記のサンプル図をご覧下さい。列数を 2 、リスト行数を 8 に設定するとこのようになります。

 列幅

次に、「列幅」です。

列数が3で、それぞれの幅を 3cm、5cm、1.5cm と設定する場合は 3cm;5cm;1.5cm と記述して下さい。この数値を 0cm とすると、その列自体は存在しますが、コンボボックスには表示されなくなります。このような 0 設定技法は、敢えて行う場合が多々あります。

具体例は、「CDアルバム管理」のNo.8 「検索・抽出フォームの作成と解説_2」にありますので参考にして下さい。

また、この列幅の合計値がコンボボックスの幅を超えると、下部にスクロールバーが自動的に現われます。このスクロールバーを表示させたくない時は、「リスト幅」を「幅」と同じにすれば スクロールバーは表示されません。但し、データが隠れることが多いので「列幅」の調整を十分行って下さいね。

この 性別を入力するコンボボックス 以外にもいろいろと配置していますが、後は応用で行えます。ちょっと、皆さんに試練を与えましょう。サンプルファイルを分解して苦しんで 、そして試行錯誤して成長して下さい(笑い、失礼)。

 コンボボックス自動ポップアップ機能

最後に大事なプロシージャをご紹介します。

Private Sub 性別_GotFocus()

    If IsNull(Me.性別) = True Then
        Me.性別.Dropdown
    Else
        Exit Sub
    End If

End Sub
解説

このプロシージャは、Dropdownメソッドによって、コンボボックスにフォーカスが移ると同時にコンボボックスデータを表示させます(Me.性別.Dropdown)。

しかし、 このままであると、データ入力を行った後再度、このコンボボックスにフォーカスが移ると、またドロップダウンが起こります。よって、コンボボックスに何も入力していない時だけ、一覧表示したい場合 では、If 構文を用いて( If IsNull(Me.性別) = True Then)、条件分岐させるのが上級者のテクニックです。

このIF構文は、

  1. 性別のコンボボックス内が空欄であればリストをドロップダウンしなさい。
  2. 空欄でなければ処理を終了しなさい。

という命令文に仕上げています。

このようにコンボボックスに関することは沢山あります。いろいろと解説書などをご覧になってマスターして下さいね。
 

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

 


Accessの入力フォームのコンボボックスについて : アンケート管理ソフト


 

-Microsoft Access Club-