Principales respuestas
Porque no muestra el mensaje de try catch

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
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
- Editado JCourech jueves, 14 de enero de 2016 22:21
- Propuesto como respuesta Asier Villanueva viernes, 15 de enero de 2016 7:57
- Marcado como respuesta Karen MalagónModerator lunes, 18 de enero de 2016 20:44
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
- Editado JCourech jueves, 14 de enero de 2016 22:21
- Propuesto como respuesta Asier Villanueva viernes, 15 de enero de 2016 7:57
- Marcado como respuesta Karen MalagónModerator lunes, 18 de enero de 2016 20:44
-
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.
- Propuesto como respuesta Geovanny -Gio- Hernandez sábado, 16 de enero de 2016 18:04
- Votado como útil Karen MalagónModerator lunes, 18 de enero de 2016 20:44
-
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