web-dev-qa-db-ja.com

MS Access 2007のコンボボックスの値に基づいてテキストボックスの値を入力するにはどうすればよいですか?

ルックアップタイプのコンボボックスがあります。つまり、テーブルから列としてソースを選択し、選択した値を別のテーブルに格納しています。私が検索しているテーブルには別の列があり、この列の値をテキストボックスに表示する必要があります。コンボボックスの値を変更するたびに、対応する値をテキストボックスに表示する必要があります。これどうやってするの?これまでに行ったことは、コンボボックスの値に基づいて適切な列を選択するSelectクエリを作成することです。これを行うためのより適切な方法はありますか?私を助けてください!

6
CodingInCircles

コンボボックスのソースを2つのフィールドに作成します。 _SELECT id, name FROM Customers_
それに応じて、コンボの列数プロパティを2に設定してください。
次に、バインドされていないテキストボックスソースを=MyCombo.Column(1)に等しくします(メモリから、この列はゼロベースです)。
それだけです。コードは不要です。

13
Patrick Honorez

コンボボックスのイベントを使用する方が良いです。 onChangeなので、選択が行われると、イベントによってテキストボックスの値が設定されます。

me!txtTextBox1 = me!cboComboBox1.column(1)

そうすれば、いつでも機能します。

OnClickなどでボタンを使用することもできますが、選択はあなた次第です(前の投稿で述べたように、行ソースに基づいて列番号を変更し、0を最初にします。

4
Mart

質問と回答を読んだ後、私は以下を試しました、そしてそれは(これまでのところ)うまくいくようです:

コンボボックス選択の複数の列を表示するために、私は以下に頼りました:

コンボボックスの上にテキストボックスを配置し、他のフィールドをサンプリングしてサイズを変更し、コンボボックスのテキストフレームをカバーするようにします。新しいテキストボックスの右側に、コンボボックスの一部ではないことを示すために、意図的に小さなスペースを残しました。

テキストボックスのコントロールソースに、次の式を入力します。

=[DefaultAcct].[Column](1) & "  " & [DefaultAcct].[Column](2)

次に、コンボボックスの「onchange」イベントで、フォーカスをテキストボックスに設定します。

Private Sub DefaultAcct_Change()
    txtConcatenate1.SetFocus   
End Sub
0
pajames