ただいま、vb5.0・access2000で顧客・契約管理を作っています。
たとえば存在するID番号を テキストボックスに ID(1)を入力をしたらいろいろな情報(リスト)が出るとします。
これを存在しないID(11)を入力したらID(1)の情報(リスト)残ったままになります。
本当はこのID(11)番号は作られていないはずなので情報(リスト)はでません。
ただしID(1)ないしID(11)をすべて削除したら情報は消えます。
これはID(2)ー>ID(22)も同じ現象になります。
これを存在しないID番号を入力しても表示されないようにするにはどのようにすればよいのでしょうか
初心者なもので説明不足ですみません・・・・
存在しないIDを入力したときに、情報が表示されるコントロールを白紙にしたらいいんじゃないでしょうか?><
(><)さん早速のご指導ありがとうございます。
以下のように作成はしているのですが、これでは上記のようになるのです・・・
Private Sub txtid_Change()
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set ws = DBEngine.Workspaces(0)
Set db = OpenDatabase("C:\研修VB\新顧客契約.mdb")
' テーブル名を指定してレコードセットを作成,最終レコードのID+1を獲得
strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text
On Error Resume Next
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
Resume Next
If txtid = " " Then 'txtIDに値が入っていないとき
txtname.Text = " "
txtkana.Text = " "
txttokoro.Text = " "
txttel.Text = " "
End If
If strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text Then
txtname.Text = rs.Fields("顧客氏名")
txtkana.Text = rs.Fields("顧客かな")
txttokoro.Text = rs.Fields("住所")
txttel.Text = rs.Fields("電話番号")
End If
rs.Close
db.Close
End Sub
何かほかに追記か修正をしなくてはいけないのでしょうか?
よろしくお願いいたします。
If txtid = " " Then 'txtIDに値が入っていないとき
を
If txtid = "" Then 'txtIDに値が入っていないとき
じゃないの?
medakaさんご指導ありがとうございました。
修正をしましたが、変わりませんでした。
(><)さんが書かれている、「存在しないIDを入力したとき」はどうやって判定してますか。提示されたプログラムではそれが見られませんが。
後、On Error Resume Next を使うのもどうかと思います。(エラーが起きていても気づけない。)
>strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text
をしてるから
> If strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text Then
は必ずTureになると思うのですが、本当に必要ですか?
まずステップ実行して変数にどんなものが入っているのか確認されたらどうでしょう。
GODさんご指摘ありがとうございます。
>strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text
変更で
> If strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text Then
うまくいけました。
On Error Resume Nextも使ってたら、
エラーがわからないので極力的ひかえたいとおもいます。
ツイート | ![]() |