2016-05-03 10 views
3

値:私が得るは、私は次のクエリ使用してDataTableのにSQLからデータを引っ張っています

If dtSource(iRow)(3) <> dtTarget(i)(3) Then 
    'make moves 
End If 

Select * FROM [dbname].INFORMATION_SCHEMA.COLUMNS 

を私は次のコードを使用して2つのDataTableから値を比較しています次のエラーが発生しました:演算子 '<'は 'DBNull'タイプには定義されておらず、 'DBNull'と入力してください。

NULL値を持つINFORMATION_SCHEMA.COLUMNSのCOLUMN_DEFAULT列と比較すると例外がスローされます。

私は今、この権利を扱うてる方法は、それらを比較する前に任意のNULL値があるかどうか確認することです:

If IsDBNull(dtSource(iRow)(3)) OR IsDBNull(dtTarget(i)(3)) Then 
    If (IsDBNull(dtSource(iRow)(3)) And NOT IsDBNull(dtTarget(i)(3))) OR viceversa.. Then 
      'make moves 
    End If 
Else 
    If dtSource(iRow)(3) <> dtTarget(i)(3) Then 
     'make moves 
    End If 
End If 

私はこれを行うには良い方法がなければならないように感じるが、私は」これに固執しています。どんな助けもありがとう!

答えて

3

試してみてください。

If Not IsDBNull(dtSource(iRow)(3)) AndAlso Not IsDBNull(dtTarget(iRow)(3)) AndAlso dtSource(iRow)(3) <> dtTarget(i)(3) Then 
      'make moves 
     ElseIf IsDBNull(dtSource(iRow)(3)) Or IsDBNull(dtTarget(iRow)(3)) Then 
      'make moves 
     Else 
      'Failure 
     End If 
関連する問題