我有一个数据库表,其中的列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)
,因为它是此系统中的真实状态。
答案 0 :(得分:0)
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