1

jdどちらも同じ関数を評価しますが、Null 値をキャッチするために使用するIf IsNullと、d の値が正しく評価されません。これは何が原因ですか?

    Dim d As Integer
    Dim j As Integer

    j = DSum("Count", "qry_nihr_unique")
    If IsNull(d = DSum("Count", "qry_nihr_unique")) Then
        MsgBox "No records were found for the data criteria you entered"
        GoTo ESub
    Else
        Me.un_p.Value = d
    End If

    Debug.Print "j = " & j
    Debug.Print "d = " & d


    j = 58
    d = 0

回答後に更新されたコード

    Dim d
    d = DSum("Count", "qry_nihr_unique")
    If IsNull(d) Then
        MsgBox "No records were found for the data criteria you entered"
        GoTo ESub
    Else
        Me.un_p.Value = d
    End If

以下のHansUpの回答の後、これがこれを書く最も効率的な方法だと思います。

4

1 に答える 1

1

内で、コードは が式と等しいIsNull()かどうかをチェックします。これは等価テストであり、 には何も割り当てられません。したがって、 の値は変更されません --- ゼロとして初期化され、ゼロのままです。dDSum()dd

状況は、次のイミディエイト ウィンドウ セッションによく似ています。

? DSum("id", "tblFoo")
 134 
d = 0
? (d = DSum("id", "tblFoo"))
False
? d
 0
? IsNull(d = DSum("id", "tblFoo"))
False
? d
 0

次のステートメントは、DSum()結果をに代入しdます。2 つが等しいかどうかはテストしません。

d = DSum("id", "tblFoo")
? d
 134 
于 2013-01-15T10:39:22.950 に答える