こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access2003・フォーム・データ抽出コードについて

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でも良いのでどなたか教えていただけないでしょうか?

投稿日時 - 2006-12-11 19:54:01

QNo.2594801

すぐに回答ほしいです

質問者が選んだベストアンサー

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

非連結フォームの場合を、簡単に書くと以下のような感じです。
どうでしょう?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

投稿日時 - 2006-12-11 20:44:57

お礼

レスありがとうございます。
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:20

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

textbox1,2,3は非連結テキストボックスなんですか?
だたらDLookup関数で持ってくることは出来ますが

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

投稿日時 - 2006-12-11 20:32:46

お礼

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

投稿日時 - 2006-12-12 10:26:08

あなたにオススメの質問