ID番号が存在しなくこれを表示しないようにするには

解決


エビス  2006-06-23 21:04:41  No: 132015

ただいま、vb5.0・access2000で顧客・契約管理を作っています。

たとえば存在するID番号を  テキストボックスに  ID(1)を入力をしたらいろいろな情報(リスト)が出るとします。
これを存在しないID(11)を入力したらID(1)の情報(リスト)残ったままになります。
本当はこのID(11)番号は作られていないはずなので情報(リスト)はでません。
ただしID(1)ないしID(11)をすべて削除したら情報は消えます。
これはID(2)ー>ID(22)も同じ現象になります。

これを存在しないID番号を入力しても表示されないようにするにはどのようにすればよいのでしょうか
初心者なもので説明不足ですみません・・・・


(><)  2006-06-23 21:32:41  No: 132016

存在しないIDを入力したときに、情報が表示されるコントロールを白紙にしたらいいんじゃないでしょうか?><


エビス  2006-06-23 21:57:40  No: 132017

(><)さん早速のご指導ありがとうございます。

以下のように作成はしているのですが、これでは上記のようになるのです・・・

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

何かほかに追記か修正をしなくてはいけないのでしょうか?
よろしくお願いいたします。


medaka  2006-06-23 22:47:18  No: 132018

If txtid = "  " Then              'txtIDに値が入っていないとき

 If txtid = "" Then              'txtIDに値が入っていないとき
じゃないの?


エビス  2006-06-23 22:58:22  No: 132019

medakaさんご指導ありがとうございました。

修正をしましたが、変わりませんでした。


GOD  2006-06-23 23:07:35  No: 132020

(><)さんが書かれている、「存在しないIDを入力したとき」はどうやって判定してますか。提示されたプログラムではそれが見られませんが。
後、On Error Resume Next を使うのもどうかと思います。(エラーが起きていても気づけない。)

>strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text
をしてるから
> If strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text Then
は必ずTureになると思うのですが、本当に必要ですか?
まずステップ実行して変数にどんなものが入っているのか確認されたらどうでしょう。


エビス  2006-06-23 23:30:34  No: 132021

GODさんご指摘ありがとうございます。
>strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text
変更で
> If strSQL = "Select * from 顧客TBL where 顧客ID=" + txtid.Text Then
うまくいけました。

On Error Resume Nextも使ってたら、
エラーがわからないので極力的ひかえたいとおもいます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加