10秒目をつむったら…

Private Sub ComboBox1_Change()
Dim db As Database
Dim Tname As Recordset

Set db = OpenDatabase("c:\Sam1.mdb ", True)
Set Tname = db.OpenRecordset("Table1", dbOpenTable)
N = ComboBox1.ListIndex

Tname.Move N
TextBox1.Text = Tname.Fields(0).Value
TextBox2.Text = Tname.Fields(1).Value
TextBox3.Text = Tname.Fields(2).Value

Tname.Close
db.Close

Set Tname = Nothing
Set db = Nothing
End Sub
エクセルよりmdbファイルを開けて、ComboBoxのリストインデクッス番号
値とmdbのレコ-ド数値が合致することから、各フィ-ルドの値をTextBox
に返すプログラムを作りました。デ-タが各フィ-ルドに存在する時はう
まくいくのですが、空の時(Null値の時)は”Null値が不正です!!”とい
うエラ-がでて止まってしまいます。Null値はNull値として、TextBoxに
返したいのですが、どうすればよいでしょうか?

A 回答 (2件)

TextBox1を例にして、



(1)
 TextBox1.Text = "" & Tname.Fields(0).Value

(2)
 TextBox1.Text = IIf(IsNull(Tname.Fields(0).Value), "", Tname.Fields(0).Value)

(3)
 If Not IsNull(Tname.Fields(0).Value) Then
   TextBox1.Text = Tname.Fields(0).Value
 Else
   TextBox1.Text = ""
 End If

(4)On Error で対応

と色々あるようです。。。ご参考に。
    • good
    • 0
この回答へのお礼

ありがとうございます、試してみます。

お礼日時:2002/03/21 00:34

TextBoxのTextはあくまで文字列です。


文字列にNullという値は代入できないと思います。
文字列には""(ダブルクオーテーション)がつきます。
それで、Null値は、""(ヌルストリング)にすることが必要です。

If Tname.Fields(0).Value=Null Then
TextBox1.Text = ""
End If

例えば、こんなのです。
    • good
    • 0
この回答へのお礼

ありがとうございます、試してみます。

お礼日時:2002/03/21 00:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!