Microsoft Access Club >Access裏技Tips >このページ >次頁 < 前項  サイト内検索


立ち上がるコンボボックス : Access裏技Tips



一覧表示されたデータから目的のデータを選択する場合、コンボボックスの右に出るものはいません。 ここでは、コンボボックスにフォーカスが移ると同時に一覧表示を自動的に行う技を紹介します。

コンボボックスで一覧表示を行う

  1. 売上げリストテーブル(tbl_sample)をもとに、売上げリスト帳票フォーム(frm_sample)を作成します。
  2. フォームフッターにコンボボックス(Con取引先)、テキストボックス(txtColumn)、コマンドボタン(Cmdコマンド)を作成します。
  3. コンボボックスのフォーカス取得時イベントを利用して、SendKeysステートメントで F4 キーボートアクションを送ります。また、コンボボックスで選択したデータ名を、Columnプロパティを用いてテキストボックスに表示します。
  4. コマンドボタンのクリック時イベントには、フォームを初期状態に戻すプロシージャを記述します。

売上げリストフォームの作成

売上げリストフォームを作成します。

  1. 売上げリストテーブルをもとに、売上げリストフォームを作成します。
  2. フォームフッタに、コンボボックス、テキストボックス、コマンドボタンをそれぞれ作成します。

  1. フォームのレコードソースにtbl_sampleテーブルをもとにしたクエリーを作成します。
  2. 取引先IDフィールドの抽出条件欄に、Like [Forms]![frm_sample]![Con取引先] & "*"を記述します。

今回のおすすめポイント

Like演算子

抽出条件式にLike演算子と*(アスタリスト)を用いると、抽出条件式の値がなければ全てのデータを返します。言い換えれば、抽出条件式を無効にすることができます。

コンボボックスのフォーカス取得時イベントプロシージャの作成

コンボボックスのフォーカス取得時イベントプロシージャを作成します。

Private Sub Con取引先_Enter()

    If IsNull(Me.Con取引先) Then ' --- A
    SendKeys "{f4}", False ' --- B
    End If
    
End Sub
解説
  1. IfステートメントとIsNull関数を用いて、コンボボックスで何も選択していなければ、以下の処理を実行します。
  2. SendKeysステートメントを用いてファンクションキーF4(コンボボックスの一覧表示機能)を実行します。

コンボボックスの更新後処理イベントプロシージャの作成

コンボボックスの更新後処理イベントプロシージャを作成します。

Private Sub Con取引先_AfterUpdate()

    DoCmd.ShowAllRecords ' --- A
    Me.txtColumn = Me.Con取引先.Column(1) ' --- B

End Sub
解説
  1. ShowAllRecordsメソッドを用いて、コンボボックスで選択したデータの抽出を行いフォームを再描写します。
  2. Columnプロパティを用いて、コンボボックスで選択されたデータ名をテキストボックスに表示します。

今回のおすすめポイント

Columnプロパティ

コンボボックス、リストボックスで選択されたデータを返します。注意点は、0から開始されるということです。例えば、コンボボックスの1列目はColumn(0)、コンボボックスの2列目はColumn(1)という具合に値が返されます。

コマンドボタンのクリック時イベントプロシージャの作成

コマンドボタンのクリック時イベントプロシージャを作成します。

Private Sub Cmdコマンド_Click()

    Me.Con取引先 = ""
    Me.txtColumn = ""
    DoCmd.ShowAllRecords

End Sub
解説
  1. コマンドボタンを押すと、コンボボックスに長さ0("")の文字列を代入します。
  2. テキストボックスに長さ0("")の文字列を代入します。
  3. フォームを再描写します。

動作確認

  1. デザインビューからフォームビューに切り替えます。

  1. コンボボックスからデータを選択します。

  1. 選択した取引先に限定したデータのみが表示されていることを確認します。
今回のおすすめポイント

Dropdownメソッド

Dropdownメソッドを用いても同様のアクションを行うことができます。

Private Sub Con取引先_Enter()
    If IsNull(Me.Con取引先) Then
         Me.Con取引先.Dropdown
    End If
End Sub

関連ページ

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

 


立ち上がるコンボボックス : Access裏技Tips


 

-Microsoft Access Club-

アメリカ合衆国やヨーロッパのデータセンターからcPanelレンタルサーバーをご提供します。お支払いは日本国内の銀行振込で...。1ヵ月契約からOKです。
アメリカ合衆国やヨーロッパからcPanelレンタルサーバー。
お支払いは日本国内の銀行振込。
最短契約期間は1ヵ月契約からOKです。