2009年3月22日日曜日

Access のコンボボックスにおける Value と Text プロパティの違い

以下のように、前回と同じテーブルを使う。

090322-003

 

「人」テーブルの「性別id」は、前回最後に作ったクエリを元にルックアップの設定をしてある。

データの値だけちょっと変えておく。性別コードを二桁にした。

090322-001

 

ここで例えば、「人」テーブルを元に以下のようなコンボボックスを含むフォームを作成したとする。コンボボックスのコントロールソースは「性別id」。

090322-002

 

繰り返すが「性別id」は、クエリを元にルックアップの設定がしてある。

test ボタンを押すと VB のイミディエイトウィンドウにコンボボックスの値が出力されるようにした。コードは次の通り。

Private Sub btnTest_Click()
    ' Value プロパティ
    Debug.Print "性別id.Value: " & 性別id.Value
    
    ' Text プロパティ
    性別id.SetFocus
    Debug.Print "性別id.Text: " & 性別id.Text
End Sub

結果、次のような出力が得られた。

性別id.Value: 4
性別id.Text: 09

Text プロパティを取得する前にフォーカスを与えているのは、

コントロールの Text プロパティを取得または設定するには、コントロールにフォーカスを与えておく必要があります。フォーカスを与えないと、エラーが発生します。

(ヘルプの「Text プロパティ」より)

上記の結果を見ると、Text プロパティはコンボボックスに表示された値そのものを取得している。それに対して、Value プロパティは「データ > コントロールソース」である「性別id」の値が表示された。このような違いが生じたのは、コンボボックスの「データ > 集合ソース」にルックアップの設定で使っているクエリが設定されているためということか。