用3个状态Y / N作为字符串或DBNull的比较值

问题描述 投票:0回答:1

我有一个柱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),因为它是在这个系统真正的状态。

vb.net operators dbnull
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.