VB5.0でACCESSのデータを扱っています。
フォーム上に置いたテキストボックス「text1」「text2」「text3」が3つあり、「text1」にIDを入力するとACCESSからデータを取得して「text2」「text3」にデータを表示させ、text1の表示を消したら、text2もtext3も消すようにしたいのですが。
text1の表示を消すと下記コードの x = Text1.Text で「型が一致しません」のエラーが発生します。
text1.text ="" で、x= 0 なので型が一致しないのですが
""と0を同じ扱いにすることはできないのでしょうか??
また、他によい方法があれば教えてください。
ACCESSのデザインはこんな感じです。
テーブル:【顧客TBL】
--------------------------------------------
フィールド名 データ型 サイズ
--------------------------------------------
ID 数値型 (主キー)
氏名 テキスト型 20文字
住所 テキスト型 50文字
-----------------------------------------------
コードはこんな感じです。
’****************************************
Private Sub Text1_Change()
Dim mdb As DAO.Database
Dim mrs As DAO.Recordset
Dim SQL As String
Dim x As integer
x = Text1.Text ←ここでエラーが発生。
x=0 text1.text ="" なので型が一致しないのです
'データベースをオープン
Set mdb = OpenDatabase("顧客契約2.mdb")
'選択クエリーを取得
SQL = "select * from 顧客TBL where ID = '" & x & "' "
'条件に一致するレコードを取得
Set mrs = mdb.OpenRecordset(SQL, dbOpenDynaset)
Text2.Text = mrs.Fields("顧客氏名")
Text3.Text = mrs.Fields("住所")
If text1.text = 0 then
text2.text =""
text3.text =""
End If
'オブジェクトを閉じる
mrs.Close
mdb.Close
'オブジェクトを解放
Set mrs = Nothing
Set mdb = Nothing
End Sub
単純に、
-------------------------
If Text1.Text = "" Then
X = 0
Else
x = Text1.Text
End If
-------------------------
と、するとか・・・
#厳密には、「数値に変換可能か?」「Integerの範囲に納まるか」とかのチェックが必要なんでしょうけど・・・
大吉末吉様
度々ありがとうござあいます。
初歩的なことで申し訳ないです。
無事解決できました!
ありがとうございました!
解決したようですが、
x = Val(Text1.Text)
とすれば、1行で出来ます。
また、この場合は、テキストボックスに""以外にも、"ABC"等の文字が
入っていた場合も0になります。
LESIA様
ありがとうございます!
試してみたところできました!
ほんとに勉強になります(~~)
ちなみに、Val 関数による変換だとしても、
x = Val("1.23%")
のような変換を行えば、やはりエラーになりますので、
いずれにしても入力内容のチェックは必須です。>たけあさん
魔界の仮面弁士様
はい。ありがとうございます!!
ツイート | ![]() |