プロが教える店舗&オフィスのセキュリティ対策術

Access初心者です。よろしくお願い致します。

コンボボックスとテキストボックスの連携がうまくいかずに苦戦しています。

Accessオブジェクト
<テーブル>
 T_住所録
  ∟ID、名前、住所、電話番号、アドレス
 T_住所確認テーブル
  ∟名前、住所

<クエリ>
 Q_ラベル_住所録
 Q_住所確認テーブル
 Q_入力_住所確認テーブル

<フォーム>
 F_入力_住所確認テーブル
  ∟コンボボックス(名前)、テキストボックス(住所)

とあり、

「Q_住所確認テーブル」では、

「T_住所録:名前」=「T_住所確認テーブル:名前」
「T_住所録:住所」=「T_住所確認テーブル:住所」

を、つなげてあります。

フォームの「F_入力_住所確認テーブル」では、コンボボックスをクリックすると名前が選択でき、選択するとその名前の人の住所がテキストボックスに表示されるようにしたいのですがうまくできません。

ネットや書籍などを見ていろいろ試したのですが、ことごとく失敗しています。

「Me」とかダメでした。

ExcelのVBAは経験があるのですが、Accessはデータベースを少々編集した程度なので知識は浅いです。

なのでとても初歩的な質問かもしれませんが、どなたかご教授いただけますと幸いです。

とても勝手ながら、すごく急いでいて、どうにかしたいともがいているのですがどうにもならず焦っています。どうぞよろしくお願い致します。

A 回答 (3件)

コンボボックスで名前の選択ができて、テキストボックスに名前が抽出できているのでしたら、、



コンボボックスのプロパティーで「すべて」タグ の列数 を2にして 名前と住所が表示できるようにしておきます。
そして おなじくプロパティーの
「データ」タブの連結列を 2にすると、2列目の 住所がテキストボックスに表示されます。
「データ:タブの連結列を 1にすると 1列目の 名前が表示されます。
    • good
    • 0

> サンプルコードは「Dim cn As New ADODB.Connection」のところでまずエラーになってしまいます。



エラーは判りますか? 
ユーザー定義型は定義されていません。 などのエラーでしたら、

icrosoft ActiveX Data Objects ** Library

が参照されているか確認ください。

Access2010の環境だと、6.1があると思います。

http://www.tsware.jp/tips/tips_334.htm

テスト環境で、Access2010はあるので動作試験してみましたが、サンプルコードはそのまま動作しましたので、これの参照がクリアできれば動作するかと思います。


IDと連携していない件ですが、コンボボックスに名前が出てくるのですから、それでテーブルを検索してこれると思います。

コンボ0.Column(n) ←これのnの値を0から増やしてみてください。
どこかで、値としてコンボボックスに表示されているそのものが出てくると思います。

もし、1で名前が出るようなら

sql = "SELECT [住所] FROM [T_住所録] WHERE [名前] = """ & コンボ0.Column(1) & """;"

として
rs.Open sql, cn, adOpenKeyset, adLockBatchOptimistic

へ流せば、結果が返ってきて、

テキスト2.Value = rs![住所]

で住所が表示されるかと思います。
    • good
    • 0

Accessのバージョンが書かれていないので、勝手に2000で回答させていただきますが…



方法として、コンボボックスをクリックした時のイベントに、VBAを仕込むのはどうでしょうか?

-----------------------------
Private Sub コンボ0_Click()

Dim sql As String
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Set cn = Application.CurrentProject.Connection

sql = "SELECT [住所] FROM [T_住所録] WHERE [ID] = " & コンボ0.Value & ";"
Debug.Print sql
rs.Open sql, cn, adOpenKeyset, adLockBatchOptimistic

If rs.EOF = True Then
テキスト2.Value = "住所データありません"
Else
テキスト2.Value = rs![住所]
End If

End Sub

-----------------------------

コンボボックスの名前、住所を表示したいテキストボックスの名前は、そちらの環境に合わせて変えてください。

流れとしては、
1.クリックしたコンボボックスから条件を拾い出して、問い合わせSQLを作成
2.T_住所録テーブルからその条件で住所のレコードを抽出
3.住所を表示したいテキストボックスにその値を格納

とすれば、希望の動作になるのではないでしょうか?

コンボボックスは名前とIDが連携している条件になっていますが、もし、現状のコンボボックスは名前だけで、IDと連携していないのでしたら

WHERE [名前] = """ & コンボ0.Value & """;"

とすれば、名前でも検索できるかと思います。

ハズしてたら申し訳ないです。
    • good
    • 0
この回答へのお礼

ありがとうございます。Accessのバージョンは「2010」です。ご提供いただいたサンプルコードは「Dim cn As New ADODB.Connection」のところでまずエラーになってしまいます。解決方法をご教授いただけますと幸いです。また、IDとは連携していません。

お礼日時:2014/04/17 15:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A