从类型“DBNull”到“Decimal”类型的转换无效。 - Datagridview从DB加载数据时出现问题

时间:2012-10-06 17:22:26

标签: vb.net

我正在尝试将数据加载到visual basic中的datagridview中,但是会出现此错误。

从“DBNull”类型转换为“Decimal”类型无效。 - Datagridview从DB加载数据时出现问题

请在写评论时请记住我是一个完整的新手。

顺便说一句,我试图在一些值

之后添加.ToString
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    Dim i As Integer

    Me.TextBox1.Text = DataGridView1.Item(0, i).Value.ToString
    Me.TextBox8.Text = DataGridView1.Item(1, i).Value.ToString
    Me.TextBox9.Text = DataGridView1.Item(2, i).Value.ToString
    Me.TextBox11.Text = DataGridView1.Item(3, i).Value.ToString
    'valoren_code'
    Me.TextBox3.Text = DataGridView1.Item(4, i).Value.ToString
    Me.TextBox13.Text = DataGridView1.Item(5, i).Value.ToString
    Me.TextBox15.Text = DataGridView1.Item(6, i).Value.ToString
    Me.TextBox14.Text = DataGridView1.Item(7, i).Value.ToString
    Me.NumericUpDown6.Value = DataGridView1.Item(8, i).Value.ToString
    Me.DateTimePicker2.Text = DataGridView1.Item(9, i).Value.ToString
    Me.ComboBox1.SelectedItem = DataGridView1.Item(10, i).Value.ToString
    Me.ComboBox8.SelectedItem = DataGridView1.Item(11, i).Value.ToString
    Me.ComboBox2.SelectedItem = DataGridView1.Item(12, i).Value.ToString
    Me.ComboBox3.SelectedItem = DataGridView1.Item(13, i).Value.ToString
    Me.ComboBox4.SelectedItem = DataGridView1.Item(14, i).Value.ToString
    Me.ComboBox5.SelectedItem = DataGridView1.Item(15, i).Value.ToString
    Me.ComboBox6.SelectedItem = DataGridView1.Item(16, i).Value.ToString
    Me.ComboBox7.SelectedItem = DataGridView1.Item(17, i).Value.ToString
    Me.ListBox1.SelectedItem = DataGridView1.Item(18, i).Value.ToString
    Me.NumericUpDown8.Text = DataGridView1.Item(19, i).Value.ToString
    Me.NumericUpDown7.Text = DataGridView1.Item(20, i).Value.ToString
    Me.NumericUpDown5.Text = DataGridView1.Item(21, i).Value.ToString
    Me.NumericUpDown13.Text = DataGridView1.Item(22, i).Value.ToString
    Me.NumericUpDown14.Value = DataGridView1.Item(23, i).Value.ToString
    'mid_trade_clean_price_proximity
    Me.NumericUpDown15.Value = DataGridView1.Item(24, i).Value.ToString
    Me.NumericUpDown16.Value = DataGridView1.Item(25, i).Value
    Me.TextBox2.Text = DataGridView1.Item(26, i).Value.ToString
    Me.ListBox3.SelectedItem = DataGridView1.Item(27, i).Value.ToString
End Sub 

1 个答案:

答案 0 :(得分:3)

DBNull.Value表示数据库已返回特定行/列的NULL

这不是可以分配给Decimal的值,因此是错误。

现在,您可以在获得Nothing时使用DBNull.Value,但同样,这不是您可以分配给Decimal的内容,因为它是值类型(以及所有值类型)有一个值,不能分配Nohthing)。

使用可以为空的 Decimal - Decimal? 可以获取Nothing值。或者,测试返回的值以查看它是否为DBNull.Value,如果是,请不要分配给Decimal(默认为0.0,因此您需要确定什么是适用于您的应用程序的正确行为。)