Hola de nuevo!
Bueno mi nuevo caso es el siguiente:
Tengo una aplicación con un único formulario (Form1), dónde hay un DataGrid vinculado a un DataSet.
Inicializo el DataGrid con el DataSet vacío y voy entrando contenidos. Cada vez que salto de registro actualizo la BBDD con el nuevo registro.
El mismo problema me aparece en dos casos distintos:
1ro: Tengo una parte de código que controla cuando se pulsa la tecla ESC y pregunta a través de un msgbox tipo "yes/no" si se desean eliminar los datos entrados hasta el momento en la BBDD. Pues bién, si lo digo que SÍ, los borra, pero al volver a dar el control al formulario salta la excepción:
"Referencia a objeto no establecida como instancia de objeto" y me señala el "Public Class Form1". Esta es la parte de código:
Case keyData.Escape
Dim respuesta As DialogResult
respuesta = MsgBox("Está seguro que desea descartar los datos?",MsgBoxStyle.YesNo)
If respuesta = DialogResult.Yes
TrabajoAdapter.DeleteCommand.CommandText = "DELETE * FROM Trabajo1"
Data1.Trabajo1.Clear()
Try
ConectaBD()
TrabajoAdapter.DeleteCommand.ExecuteNonQuery()
DesconectaBD()
Catch ex As Exception
MessageBox.Show(ex.Message)
DesconectaBD()
End Try
Else
Repite=1
Grid1.CurrentCell= New DataGridCell(FilAct,0)
End If
2o: Una parte del código que controla si el registro introducido ya existe. Si es así, lo que hace es aumentar una unidad la referencia especificada y borra la línea nueva introducida. Al introducir una referencia repetida la primera vez, lo hace sin problemas, pero al repetir la operación tres veces en la misma casilla me salta, otra vez el error de "Referencia a objeto no establecida como instancia de objeto", señalándome, otra vez "Public Class Form1". Este es el código:
Private Sub Grid1_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Grid1.CurrentCellChanged
Select Case Grid1.CurrentCell.ColumnNumber
Case 0
If Repite = 1 Then Exit Sub
ArticAct = Grid1.Item(FilAct, 0)
Repite = 1
If Grid1.VisibleRowCount > 2 Then
For i = 0 To Grid1.VisibleRowCount - 2
If ArticAct = Grid1.Item(i, 0) And i <> FilAct Then
CdadAct = Grid1.Item(i, 2) + 1
PvpAct = Grid1.Item(i, 3)
DtoAct = Grid1.Item(i, 4)
Suma()
'función que obtiene el precio parcial: cantidadxprecio Actualiza()
'update o insert, segun el caso, de datos en BBDD Data1.Trabajo1.Rows(FilAct).Delete()
PonFoco(FilAct, 0)
'evita que el foco se desplace hacia abajo Exit Sub
End If
Next i
End If
Grid1.Item(FilAct, 0) = Nothing
BuscaArticulo()
Repite = 0
Alguna idea de lo que puede ocurrir? Por lo que parece debe venir del mismo sitio...
Saludos y...siento el palizón...