如何忽略错误消息 "dbnull to string is not valid" 并且不将空单元格加载到我的 vb 表单

How to ignore eror message "dbnull to string is not valid" and dont load empty cells to my vb form

当我单击搜索按钮时发生转换错误 dbnull 到类型字符串无效

我认为我的数据库中某些单元格中没有数据。

有空单元格不是问题,如果有空单元格,我不想将它们加载到我的表单中。

这是我尝试过的 ButtonClickEvent :

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        
        con = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Dimuth De Zoysa\Documents\divimaga_DB.accdb")
        cmd = New OleDbCommand("SELECT * FROM MainE WHERE Job ='" + ComboBox1.Text + "'  ", con)

        con.Open()
        dr = cmd.ExecuteReader()

        While dr.Read
            jobid = dr("JobID")
            TextBox1.Text = dr("PROCEDURE")
            TextBox2.Text = dr("ReleventDocuments")
            TextBox3.Text = dr("ImportantPoints")
            TextBox4.Text = dr("officer")
        End While

        con.Close()
    End Sub

您可以使用以下内容,将您的列值包装到 CStr("" & dr("column")):

While dr.Read
    jobid = CStr("" & dr("JobID"))
    TextBox1.Text = CStr("" & dr("PROCEDURE"))
    TextBox2.Text = CStr("" & dr("ReleventDocuments"))
    TextBox3.Text = CStr("" & dr("ImportantPoints"))
    TextBox4.Text = CStr("" & dr("officer"))
End While

另一个解决方案,使用ToString()

While dr.Read
    jobid = dr("JobID").ToString()
    TextBox1.Text = dr("PROCEDURE").ToString()
    TextBox2.Text = dr("ReleventDocuments").ToString()
    TextBox3.Text = dr("ImportantPoints").ToString()
    TextBox4.Text = dr("officer").ToString()
End While

即使数据中没有空值,您的代码也不会用 Option Strict On 编译。这意味着它是错误的代码,因为 Option Strict 应该几乎总是 OnTextBoxText 属性 是类型 String,而您正在为这些属性分配 Object 引用。您应该已经转换或转换为 String 类型。如果你在每个字段值上调用 ToString 那么你用一块石头杀死了两只鸟,因为空字段将包含 DBNull.Value 并且在那个 returns 上调用 ToString 一个空的 String.

TextBox1.Text = dr("PROCEDURE").ToString()
TextBox2.Text = dr("ReleventDocuments").ToString()
TextBox3.Text = dr("ImportantPoints").ToString()
TextBox4.Text = dr("officer").ToString()