2

VBAの条件演算子について混乱しています。それはおそらく奇妙な型キャストと関係がありますが、私は立ち往生していて助けが必要です-

query = "SELECT * FROM [records_table] " & _
    "WHERE [po_number] = " & Chr(39) & po_number & Chr(39) & ";"

Set rec_set = data_base.OpenRecordset(query)
MsgBox rec_set.Fields("po_ack")
If rec_set.Fields("po_ack") <> Null Then _
    po_ack = True
If rec_set.Fields("po_ack") = Null Then _
    po_ack = False

さて、これはtrueを返すはずですが、falseを返しますか?レコード設定値をmsgboxすると、「11/12/2012」が表示されますが、関数の戻り値をmsgboxすると、falseになりますか?

po_ackはDate値を格納し、この特定の値は「11/12/2012」です。それで、nullと照合すると、「11/12/2012」== nullと表示されるのはなぜですか?

助けてくれてありがとう!

4

2 に答える 2

3

Nullは、他のNullでさえも、何にも等しくなることはありません。

ヌルは、他のヌルでさえも、何にも等しくありません。

この関数を使用して、IsNull()何かがNullであるかどうかを確認します。

If IsNull(rec_set!po_ack) = False Then
    po_ack = True
Else
    po_ack = False
End If

このIsDate()関数がやりたいことに役立つかどうかを確認してください。イミディエイトウィンドウからコピーしたサンプル式を次に示します。

? IsDate(Null)
False
? IsDate(Now())
True
? IsDate("2012-11-12")
True
? IsDate("No way, dood")
False
于 2012-11-12T18:51:56.087 に答える
1

サー私はあなたが以下にリストされたリンクを見てみるべきだと思います。とVBの空白の値にNULLは大きな違いがあります。は不明なものであるため、、、または他のものとは等しくありません。論理が正しくないため、変数をnullと比較しないでください。これらのタイプを混同していないか確認してください。NothingNull1TRUE""

http://www.techrepublic.com/article/learn-the-differences-between-is-null-and-isnull-in-access/5034252

http://www.everythingaccess.com/tutorials.asp?ID=Common-Errors-with-Null

http://www.tek-tips.com/faqs.cfm?fid=3710

于 2012-11-12T18:53:50.920 に答える