none
Porque no muestra el mensaje de try catch RRS feed

  • Pregunta

  • Hola amigos buen dia tengo un programa, funciona pero no del todo, en mi codigo esta configurado para que elimine registros en mi base de datos, y lo configure para que si la caja de texto del campo clave esta vacia me mande un mensaje de error, de lo contrario si no esta vacia hara la operacion de eliminar, pero si el campo esta exitente en la base de datos y presiono eliminar me muestra un mensaje de eliminado exitosamente, pero si escribo una clave que no esta existente en la base de datos, porque me sigue mostrando el mensaje de eliminado exitodamente en vez de error al intentar eliminar, alguien me podria dar una solucion este es mi codigo:

     Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
            cn.ConnectionString = "Data Source = DESKTOP-D2E0PEI; Initial Catalog = Centro_de_informacion;Integrated Security = true"
            cn.Open()
            If (TextBox1.Text = "") Then
                MessageBox.Show("Ingrese la clave del registro que se dará de baja. ", "Mensage", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                Try
                    cmd.CommandText = "delete from Indice where Id_Clave = '" & TextBox1.Text.Trim & "'"
                    cmd.Connection = cn
                    cmd.ExecuteNonQuery()
                    cmd.CommandText = "delete from Registros where Id_ClaveR = '" & TextBox1.Text.Trim & "'"
                    cmd.Connection = cn
                    cmd.ExecuteNonQuery()
                    MsgBox("Eliminado exitosamente.")
                    LIMPIAR()
                Catch ex As Exception
                    MessageBox.Show("Error al intentar eliminar.", "Mensage", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End Try
            End If
            LIMPIAR()
    
            cn.Close()
        End Sub

    jueves, 14 de enero de 2016 17:43

Respuestas

  • Hola, cuando envias una clave que no existe, tu comando aun se sigue ejecutando exitosamente, aunque no haya borrado ninguna fila es un codigo que termina su ejecucion normalmente, intenta lo siguiente;

    Dim filasAfectadas as Integer = cmd.ExecuteNonQuery()

    Luego, antes de mandar el mansaje "Eliminado existosamente" comprueba el valor de la variable filasAfectadas y manda el mensaje correspondiente.

    Saludos


    jueves, 14 de enero de 2016 22:21

Todas las respuestas

  • Hola, cuando envias una clave que no existe, tu comando aun se sigue ejecutando exitosamente, aunque no haya borrado ninguna fila es un codigo que termina su ejecucion normalmente, intenta lo siguiente;

    Dim filasAfectadas as Integer = cmd.ExecuteNonQuery()

    Luego, antes de mandar el mansaje "Eliminado existosamente" comprueba el valor de la variable filasAfectadas y manda el mensaje correspondiente.

    Saludos


    jueves, 14 de enero de 2016 22:21
  • Hola, disculpa esa linea de codigo en que parte de mi codigo la pongo esque apenas estoy aprendiendo y se me dificula un poco, si fueran tan amable de explicarme por favor, gracias.
    viernes, 15 de enero de 2016 22:29
  • En lugar de ubicar esta linea:

    cmd.ExecuteNonquery();

    Debes poner el segmento que Jesus te indico, es decir

    Dim filasAfectadas as Integer = cmd.ExecuteNonQuery()

    lo que pasa es que se supone que si hay registros coincidentes con tu criterio de filtro entonces el Delete o cualquier instruccion DML de T-SQL te deberia de retornar el numero de filas afectadas y es por eso que le asignas dicho resultado a la variable para que tengas certeza de cuantas filas fueron eliminadas en la instruccion.



    "How many years can some people exist before they're allowed to be free" Bob Dylan Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

    sábado, 16 de enero de 2016 18:06