我有一个柱DECISION
其可具有以下值的数据库表:'Y'
,'N'
,或(null)
。可以有多人通过更新应用程序在这个数据库表中的值。
我想确保它显示此信息DataGridView
保持最新的定期所有用户。
我有一个后台线程,其执行以下操作:
For Each new_row As DataRow In dsData.Tables("Progress").Rows
For Each cur_row As DataRow In dsData.Tables("List").Rows
If new_row("SEQ") = cur_row("SEQ") And new_row("DECISION") <> cur_row("DECISION") Then
cur_row("DECISION") = new_row("DECISION")
End If
Next
Next
基本上dsData.Tables("Progress")
填充了最新数据,然后相比,在DataGridView
列中的电流值,基于序列号SEQ
。
我希望发生的是,如果他们不同,cur_row
值更改为new_row
的。
然而,它属于过去,因为有时它会尝试比较字符串'N'
或'Y'
与(null)
不能完成。
什么是解决它的最好方法?
我想比较和更新任何(null)
,因为它是在这个系统真正的状态。
该TryCast
操作员可以帮助你在这里。您可以尝试投类型String
和含有DBNull.Value
将简单地返回Nothing
的字段。
Dim cur_val = TryCast(cur_row("DECISION"), String)
Dim new_val = TryCast(new_row("DECISION"), String)
If new_val IsNot Nothing AndAlso cur_val <> new_val Then
cur_row("DECISION") = new_val
End If