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

Access2003 コンボボックスで選択されたデータの、
他のレコードをテキストボックスに抽出したいです。

id,no1,no2=integer name=varchar
-----test table-----
id | no1 | no2 | name |
-----------------------
1 | 2 | 10 | abc |

例えばコンボボックスで『abc』を選択し、コマンドボタンをクリックすると
textbox1、textbox2、textbox3にそれぞれ
『idの1』、『no1の2』、『no2の10』という値を入れたいです。
phpのようにselect文で値をとって・・・ができないことにやっと気づき、Accessの場合どのような方法があるのか検討もついていません。
めちゃくちゃ簡単なコードでも参考URLでも良いのでどなたか教えていただけないでしょうか?

A 回答 (2件)

連結フォームを使う方法と非連結フォームを使う方法があります。



非連結フォームの場合を、簡単に書くと以下のような感じです。
どうでしょう?PHPと比べてもそんなに違和感ないですよね?

private sub コマンドボタン_click
 Dim cnn As Connection
 Dim rst As New Recordset
 Set cnn = CurrentProject.Connection
 Me.コンボボックス.SetFocus

 rst.Open "SELECT * FROM testtable WHERE name = '" & Me.コンボ0.Text & "';", cnn
 Me.textbox1.Value = rst!id
 Me.textbox2.Value = rst!no1
 Me.textbox3.Value = rst!no2
 rst.Close
exit sub
    • good
    • 0
この回答へのお礼

レスありがとうございます。
asfdさんのコードを参考にさせていただき、欲しいデータを抽出できました!
>Dim rst As New Recordset
ここの部分でnewの使い方が正しくない・・というエラーがでましたが、ADODBっていうのを使ってみたら表示されました!
本当にありがとうございます。Accessへの学ぶ意欲が減少していたのですが、これでまたやる気復活です。
ちなみにコードです。
Private Sub buttom2_Click()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
Me.combo1.SetFocus
rst.Open "select * from testdb where name='" & Me.combo1.Text & "';", cnn
Debug.Print rst!id
Me.tb1 = rst!id
Me.tb2 = rst!stms
Me.tb3 = rst!file
End Sub

お礼日時:2006/12/12 10:22

textbox1,2,3は非連結テキストボックスなんですか?


だたらDLookup関数で持ってくることは出来ますが

データベースなんですから、そんなことはあまりしないですね
>コンボボックスで『abc』を選択し、コマンドボタンをクリックすると
そのレコードをフォームなどで表示するというのが普通の方法ですよ
    • good
    • 0
この回答へのお礼

レスありがとうございます。
Accessに触ってまだ一ヶ月程度なもので、
連結、非連結についてよくわからず質問してしまいすいませんでした。
Dlookup関数・・・、これも要学びです。
CHRONOS_0さんのおっしゃるように、別画面にレコードを表示するのが通常とのことですので、今後そういった普通のことも踏まえていきます。ありがとうございました。

お礼日時:2006/12/12 10:26

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

関連するカテゴリからQ&Aを探す