2017-10-20 10 views
-1

レコードセットの行をループして、現在の行のフィールド値に基づいて変数値を割り当てています。私は、この問題がこの問題を解決するには、次の行にヌルチェックでレコードセットのヌル値が検出されない

TurnoverPTD = rsPeriod.Fields(0) 

がわかったデバッグ、私は次のよう

にそれを変更するとエラーにヌル

無効な使用を取得しておきます

If rsPeriod.Fields(0) = Null Then 
    TurnoverPTD = 0 
Else 
    TurnoverPTD = rsPeriod.Fields(0) 
End If 

まだ、私はまだ同じエラーが発生しています。デバッグするときに、カーソルを一番上の行に重ねると、ツールチップにrsPeriod.Fields(0) = Nullと表示されますが、これがコード行のことを示しているかどうかはわかりません。

他にどのようにNullをチェックすることができますか、私の方法は機能していませんか?

答えて

3

VB.NETに存在mthod IsDBNullと同様の方法があります。

メソッドIsNullは、パラメータ(rsPeriod.Fields(0))を取り、ブール値を返します。

このメソッドは、Ifステートメントで以下のように使用できます。

If IsNull(rsPeriod.Fields(0)) Then 
    TurnoverPTD = 0 
Else 
    TurnoverPTD = rsPeriod.Fields(0) 
End If 

それは、コードのように、このいうよりIf x = Nullを使用することをお勧めします値がnullであるかどうIsNullをチェックしています。 =演算子を使用すると、値を比較しようとしますが、この方法で値をNullと比較することはできません。

したがって、RecordSetフィールドを比較すると、これが最良の方法です。

-1

変更は、それに:

If rsPeriod.Fields(0) Is Nothing Then 
    TurnoverPTD = 0 
Else 
    TurnoverPTD = rsPeriod.Fields(0) 
End If 
+0

'rsPeriod.Fields(0)Is Nothing'のツールチップがまだ残っていますが、このコードでも同じエラーが表示されていますので、値は必ずnullです。 – Harambe

0

私が使用したい:

If IsNull(rsPeriod.Fields(0).Value) Then 

は、デフォルトプロパティに依存しない、とTrue = Trueかどうかをテストする必要はありません。

関連する問題