Visual Basic.NET - datagridview nullreferenceexpection

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 19 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

datagridview nullreferenceexpection

Publicado por kyllo (1 intervención) el 16/08/2018 08:44:30
Buenos días, tengo un formulario que cuando lo abro, en el evento load, llamo a una funcion cargardatagriddetalle para cargar un datagridview desde una base de datos oracle, y una vez cargado le doy formato y mediante un bucle for compruebo línea por línea, si el contenido de la celda de la columna 2 está vacía o no, si no está vacía cambio el color de esa fila a verde. Esto, cuando abro el formulario por primera vez funciona sin problemas, pero si cierro el formulario (sin cerrar la aplicación) y vuelvo abrirlo, en el ir que comparo el contenido de la celda para comprobar si está vacío, me da el error nullreferenceexception, y no entiendo por que lo hace solo si abro el formulario por segunda vez, abro la primera y funciona, cierro el formulario y lo vuelvo abrir y me da ese error. Os dejo el load del formulario en cuestion y la función para cargar el datagridview, a ver si alguno sabe por que puede ser. ah el if la forma de compara la celda la hecho de todas las formas que se me ha ocurrido por si era eso, pero siempre me vuelve a dar el mismo error. Muchas gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Private Sub FrmRegistrarEquipos_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'CargarDataGridDetalle(DTGVNumSerie, SqlOrigen, "NUMSERIE ASC")
 
    If DTGVNumSerie.Rows.Count > 0 Then
        DTGVNumSerie.Columns.Item(0).HeaderText = "NUM. SERIE"
        DTGVNumSerie.Columns.Item(0).Width = 313
        DTGVNumSerie.Columns.Item(1).HeaderText = "CODDETALLERECEP"
        DTGVNumSerie.Columns.Item(1).Width = 5
        DTGVNumSerie.Columns.Item(2).HeaderText = "ETPATRONATO"
        DTGVNumSerie.Columns.Item(2).Width = 5
        DTGVNumSerie.Columns.Item(3).Visible = F
        HabilitarText(GrpBxDatos)
        BtnRegistrar.Enabled = F
        For i = 0 To DTGVNumSerie.Rows.Count - 1
            If DTGVNumSerie.CurrentRow.Cells(2).Value.ToString <> "" Then
                DTGVNumSerie.CurrentRow.DefaultCellStyle.BackColor = Color.LightGreen
                'DTGVNumSerie.CurrentRow.Cells(i).ReadOnly = T
                DTGVNumSerie.CurrentCell = DTGVNumSerie.Rows(i).Cells(0)
                DTGVNumSerie.Refresh()
            End If
        Next
    End If
End Sub
 
Public Function CargarDataGridDetalle(ByRef DataGrid As DataGridView, ByVal SQL As String, ByVal CampoOrden As String) As Boolean
    Dim cmd = New OracleCommand(SQL, con)
    Dim oda = New OracleDataAdapter(cmd)
    Dim ds = New DataSet
 
    Try
        oda.Fill(ds)
        If ds.Tables.Count > 0 Then
            ds.Tables(0).DefaultView.Sort = CampoOrden
            DataGrid.DataSource = ds.Tables(0).DefaultView
            If ds.Tables(0).Rows.Count > 0 Then
                DataGrid.Enabled = T
                DataGrid.Visible = T
                DataGrid.Tag = 1
                If DataGrid.Tag = 0 Then
                    DataGrid.ClearSelection()
                End If
                Return T
            Else
                DataGrid.Visible = F
                DataGrid.Enabled = F
                DataGrid.Tag = 0
                Return F
            End If
        Else
            Return F
        End If
    Catch ex As Exception
        MsgBox(ex.Message.ToString)
        Return F
    End Try
End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder