• Viernes 15 de Noviembre de 2024, 07:57

Autor Tema:  Porqué Da Esta Excepción???????  (Leído 3820 veces)

Laforge

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Porqué Da Esta Excepción???????
« en: Miércoles 22 de Diciembre de 2004, 16:37 »
0
Hola de nuevo!

Bueno mi nuevo caso es el siguiente: :lightsabre:

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:
 :comp:
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... :whistling:

Saludos y...siento el palizón... :D
[size=109]Nunca esperes una mejor ocasión para beberte esa botella de vino.......nunca llega.[/size]

Laforge

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Porqué Da Esta Excepción???????
« Respuesta #1 en: Jueves 23 de Diciembre de 2004, 10:09 »
0
Hola otra vez.

Solucioné el segundo caso! :D   :smartass:

Lo hice quitando la instrucción marcada en rojo y modificando la posición de la instrucción marcada en amarillo hacia donde está la misma en azul (básicamente, situe el foco en la celda anterior antes de proceder a realizar las instrucciones INSERT/UPDATE)

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
PonFoco(FilAct, 0) 'evita que el foco se desplace hacia abajo
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


...pero todavía me falta solucionar el primer caso....venga anímense, alguna idea???
 :think:

Saludos
[size=109]Nunca esperes una mejor ocasión para beberte esa botella de vino.......nunca llega.[/size]

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Porqué Da Esta Excepción???????
« Respuesta #2 en: Jueves 23 de Diciembre de 2004, 16:09 »
0
bueno no estoy seguro pero parece que declaras esto:

 Dim respuesta As DialogResult

pero no lo has instanciaso, lo cual en vb.net debne ser algo como:

respuesta = new DialogResult

Espero que ese sea el problema.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Laforge

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Porqué Da Esta Excepción???????
« Respuesta #3 en: Jueves 23 de Diciembre de 2004, 16:41 »
0
Hola y gracias!

Lo estuve probando instanciando la variable "respuesta" i funcionó! :D  ...pero el "problema" es que depués volví a probar sin instanciar i .....funcionó!  :huh: Estuve revisando el código y ví que había algun cambio que hice de última hora, pero lo puse igualito, igualito (copy-paste) al que os envié y el único error que me da es de índice fuera de los límites de la matriz, el cual es fácilmente solucionable.

Bueno, lo dicho, gracias de todas formas JuanK!

Saludos y a seguir luchando  :lightsabre:


Saludos
[size=109]Nunca esperes una mejor ocasión para beberte esa botella de vino.......nunca llega.[/size]