elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  No me detecta los errores en el try
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No me detecta los errores en el try  (Leído 1,417 veces)
nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
No me detecta los errores en el try
« en: 12 Mayo 2015, 20:15 pm »

Hola como están.

Mi consulta es la siguiente

Cuando envió datos a la BD no me detecta los errores el try explico cuando no tiene código de pedido ni de proveedor si me marca los errores como la llave de ese valor ya existe  o que no estoy mandando la llave primaria eso es con los valores int.

Ahora cuando no ingreso por ejemplo la dirección debería marcarme que el campo no puede quedar nulo porque así lo declare en la BD pero no me aparece la excepción es decir lo manda vacío.

Aca una imagen  Donde los campos como direccion telefono ... deberia de capturarme una excepcion por que los declare como not null pero no se que pasa. Como pueden ver en el registro 1 y 2

 
De esta forma mando los datos a la BD
Código
  1. Dim con = New SqlConnection(conexion)
  2.        Try
  3. con.Open()
  4.  
  5.            Dim comando1 As New SqlCommand("Insert into Pedido(codigoDelPedido, codigoProveedor, direccionDeEntrega," & _
  6.                                           "telefono, tipoDePedido, prioridad, formaDePago, fechaDelPedido, horaDelPediddo," & _
  7.                                           "fechaDeEntrega, horaDeEntrega, total, observaciones)" & _
  8.                                           "values (@codigoDelPedido, @codigoProveedor, @direccionDeEntrega," & _
  9.                                           "@telefono, @tipoDePedido, @prioridad, @formaDePago, @fechaDelPedido, @horaDelPediddo," & _
  10.                                           "@fechaDeEntrega, @horaDeEntrega, @total, @observaciones)", con)
  11.  
  12.            'Datos de la tabla proveedores
  13.            comando1.Parameters.Add("@codigoDelPedido", SqlDbType.Int).Value = txtCodPedido.Text
  14.            comando1.Parameters.Add("@codigoProveedor", SqlDbType.Int).Value = txtCodProv.Text
  15.            comando1.Parameters.Add("@direccionDeEntrega", SqlDbType.VarChar, 100).Value = txtDircPed.Text
  16.            comando1.Parameters.Add("@telefono", SqlDbType.VarChar, 11).Value = mskTelPed.Text
  17.            comando1.Parameters.Add("@tipoDePedido", SqlDbType.VarChar, 15).Value = cmbTipoPedi.Text
  18.            comando1.Parameters.Add("@prioridad", SqlDbType.VarChar, 15).Value = cmbPrioriPedi.Text
  19.            comando1.Parameters.Add("@formaDePago", SqlDbType.VarChar, 20).Value = cmbFormPagoPedi.Text
  20.            comando1.Parameters.Add("@fechaDelPedido", SqlDbType.Date).Value = dtpFechaPedido.Value
  21.            comando1.Parameters.Add("@horaDelPediddo", SqlDbType.DateTime).Value = tpHoraPedido.Value
  22.            comando1.Parameters.Add("@fechaDeEntrega", SqlDbType.Date).Value = dtpFechaEntregaPedido.Value
  23.            comando1.Parameters.Add("@horaDeEntrega", SqlDbType.DateTime).Value = tpHoraPedido.Value
  24.            comando1.Parameters.Add("@total", SqlDbType.Decimal).Value = txtTotalPedido.Text
  25.            comando1.Parameters.Add("@observaciones", SqlDbType.VarChar, 100).Value = txtObservacionesPedidos.Text
  26. 'Ejecuta la instruccion comando1
  27.            comando1.ExecuteNonQuery()
  28.            'Cierra la conexion
  29.            con.Close()
  30.  
  31.            'Mensaje datos guardados con exito
  32.            RadMessageBox.Show(Me, "Los datos se registraron correctamente", "Mensaje",
  33.                                   MessageBoxButtons.OK, RadMessageIcon.Info)
  34.  
  35.        Catch ex As Exception : RadMessageBox.Show(ex.Message) 'captura el error original del sistema
  36.            'RadMessageBox.Show("Verifique sus datos o que el codigo no exista")
  37.        End Try

Esta es mi tabla en la BD
Código
  1. CREATE TABLE Pedido
  2. (
  3. codigoDelPedido INT PRIMARY KEY,
  4. codigoProveedor INT NOT NULL,
  5. direccionDeEntrega VARCHAR (100) NOT NULL,
  6. telefono VARCHAR (11) NOT NULL,
  7. tipoDePedido VARCHAR (15) NOT NULL,
  8. prioridad VARCHAR(15) NOT NULL,
  9. formaDePago VARCHAR(20) NOT NULL,
  10. fechaDelPedido DATE NOT NULL,
  11. horaDelPediddo TIME NOT NULL,
  12. fechaDeEntrega DATE NOT NULL,
  13. horaDeEntrega TIME,
  14. total DECIMAL (7,2) NOT NULL,
  15. observaciones VARCHAR(100)
  16. )
  17.  

Espero puedan ayudarme saludos.


« Última modificación: 12 Mayo 2015, 22:17 pm por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.443


S3C M4NI4C


Ver Perfil
Re: No me detecta los errores en el try
« Respuesta #1 en: 12 Mayo 2015, 20:50 pm »

Buenas,

que el campo de texto asociado a codigoProveedor esté vacío no quiere decir que la propiedad .Text sea null, realmente es un string vacío pero instanciado, por lo tanto es un objeto válido que participa el la inserción. Prueba a insertar poniendo null o Nothing en tu caso en codigoProveedor en vez del campo de texto, debería de lanzar la excepción y reafirmar mi hipótesis.

Saludos.


En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: No me detecta los errores en el try
« Respuesta #2 en: 12 Mayo 2015, 21:11 pm »

Hola gracias por contestar

Modifique la linea y me lanza el siquiente error
Código
  1. comando1.Parameters.Add("@codigoProveedor", SqlDbType.Int).Value = Nothing



Error con si el campo esta vacio
Código
  1. comando1.Parameters.Add("@codigoProveedor", SqlDbType.Int).Value = txtCodProv.Text


Error si ya esta la llave primaria


pero como hago con los campos como telefono o direccion para que me capture la excepcion del not null de la BD es parte es la que no logro comprender.
« Última modificación: 12 Mayo 2015, 21:33 pm por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.443


S3C M4NI4C


Ver Perfil
Re: No me detecta los errores en el try
« Respuesta #3 en: 12 Mayo 2015, 21:22 pm »

Hola gracias por contestar

Modifique la linea y me lanza el siquiente error
Código
  1. comando1.Parameters.Add("@codigoProveedor", SqlDbType.Int).Value = Nothing



pero como hago con los campos como telefono o direccion para que me capture la excepcion del not null.

Estaba en lo cierto :) Todos los campos esperan un valor distinto de null. Ten en cuenta que un string vacío no se considera null como ya dije, pues la instancia del objeto está creada. Realmente no te diste cuenta.

Para solucionar esto debes de comprobar que los datos a insertar contienen información, es decir, comprobar que los strings tienen longitud mayor que 0 y derivados.

0 no es null, String("") o String.Empty no es null... ten eso claro.

Saludos.
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: No me detecta los errores en el try
« Respuesta #4 en: 12 Mayo 2015, 21:58 pm »

Creo que entendi.

Ya me salio.

Efectivamente me captura el error pero debo de hacer esto por cada uno? esa es mi ultima duda.

Código
  1. If txtDircPed.Text.Length > 0 Then
  2.    comando1.Parameters.Add("@direccionDeEntrega", SqlDbType.VarChar, 100).Value = txtDircPed.Text
  3.  End If
  4.  
  5. If mskTelPed.Text = "____-__-__" Then
  6. Else
  7.   comando1.Parameters.Add("@telefono", SqlDbType.VarChar, 11).Value = mskTelPed.Text
  8. End If




Se me olvidaba muchas gracias kub0x
« Última modificación: 12 Mayo 2015, 22:20 pm por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.443


S3C M4NI4C


Ver Perfil
Re: No me detecta los errores en el try
« Respuesta #5 en: 12 Mayo 2015, 22:00 pm »

Creo que entendi.
Ya me salio.
Efectivamente me captura el error pero debo de hacer esto por cada uno? esa es mi ultima duda.

Buenas. Me alegro de que haya quedado claro :) Sí, debes comprobar las entradas antes de insertar. Si algún campo queda vacío saltará la excepción del Try pues no deberías de asignar algo vacío a la variable a insertas. Vamos que ahora vas en el buen camino.

Saludos.
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines