はじめまして、最近VBをやりはじめたのですが現在、accessで作成したデータベースをSQL文で条件を与えてVBのオブジェクトのtxt_KNoに番号を入力した時accessのk_noと一致したらFORMに作ったテキストボックスにデータを読み込みたいと思っているのですがWHERE句でどういう風に条件かいていいかわかりません。
ご教授お願いします。明日の朝またきますのでよろしくお願いします。
Dim mDb As Database
Dim mRs As Recordset
Dim strSQL As String
Private Sub Form_Load()
'データベースをオープン
Set mDb = _
OpenDatabase("accessのデータベース")
'選択クエリーを作成
strSQL = "SELECT * FROM kokyaku " & _
"WHERE k_no = 'K0003' " ←ここがわかりません
'条件に一致するレコードを取得
Set mRs = mDb.OpenRecordset(strSQL, dbOpenDynaset)
'取得したデータを表示
lbl_KName.Caption = mRs.Fields("k_name")
lbl_Post.Caption = mRs.Fields("post")
lbl_Address.Caption = mRs.Fields("address")
lbl_Tel.Caption = mRs.Fields("tel")
'オブジェクトを閉じる
mRs.Close
mDb.Close
'オブジェクトを解放
Set mRs = Nothing
Set mDb = Nothing
このようなソースです
> strSQL = "SELECT * FROM kokyaku " & _
> "WHERE k_no = 'K0003' " ←ここがわかりません
strSQL = "SELECT * FROM kokyaku " & _
"WHERE k_no = '" & txt_kNo.Text & "' "
で良いのでは?
とろさんありがとうございます。
変更してみたところ今度はカレントレコードがありませんといわれ
デバックしようとすると
lbl_KName.Caption = mRs.Fields("k_name")
のところが示されました。
いろいろ試してみます。
多分
mRs.Fields("k_name")は
mRs.Fields(0)だと思います。
mRs.Fields("k_name")の形でしたら
mRs("k_name")やmRs!k_nameとなるでしょう。
あんちゃんさんありがとうございます
う〜ん、まだ同じエラーでちゃいます。。。
基本的なところが間違っているかもしれませんね
上のソースも自分で試行錯誤して書いた物なので間違ってる
可能性大ですね。
カレントレコードがありません。というエラーなら、
条件に一致したレコードがないという事だと思いますが・・・
条件に一致したデータがあった場合のみ
ラベルに設定すれば良いと思います。
変更してエラーが出るようになったという事は、
>strSQL = "SELECT * FROM kokyaku WHERE k_no = 'K0003' "
と書いていた時にはエラーが出なかったんですよね?
>strSQL = "SELECT * FROM kokyaku WHERE k_no = '" & txt_kNo.Text & "' "
txt_kNo.Textに K0003 が入力されていますか?
修正前と修正後のSQLの編集結果が同じになっているか確認してみましょう。
あきさんレスありがとうございます。
K0003をソースに書いて実行した場合は実行した際にすでに
他の4つのラベルにaccessのデータベースのK0003の情報が
表示されてしまいます。その時はエラーはでていませんでした。
情報取得ボタンを付けて押したときにデータを取得するようにしたら
うまくいきました。いろいろありがとうございました。
あらたにわからないところがでてきたのでよろしくお願いします。
ツイート | ![]() |