user1712552
user1712552

Reputation: 53

Conversion from type 'DBNull' to type 'Decimal' is not valid. - issue when Datagridview loads data from DB

I am trying to load data into datagridview in visual basic but getting this error.

Conversion from type 'DBNull' to type 'Decimal' is not valid. - Problem when Datagridview loads data from DB,

Please when writing a response bear in mind I am a complete newbie.

And by the way I have tried to add .ToString after a Value on some of the ,

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 

Upvotes: 0

Views: 7847

Answers (1)

Oded
Oded

Reputation: 498904

DBNull.Value means that the database has returned NULL for the specific row/column.

This is not a value that can be assigned to a Decimal, hence the error.

Now, you could use Nothing when you get DBNull.Value, but again, this is not something you can assign to a Decimal as it is a value type (and all value types have a value and cannot be assigned a Nohthing).

Use a nullable Decimal - Decimal? which can take a Nothing value. Alternatively, test the returned value to see if it is DBNull.Value and if it is, don't assign to your Decimal (which will default to 0.0, so you need to decide what is the correct behaviour for your application).

Upvotes: 3

Related Questions