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
(http://1.bp.blogspot.com/-ndxyQN6CFlY/VVJCPnWRdJI/AAAAAAAAA34/nx2QVfqrvDA/s1600/ErrorBD.png)
De esta forma mando los datos a la BD
Dim con = New SqlConnection(conexion)
Try
con.Open()
Dim comando1 As New SqlCommand("Insert into Pedido(codigoDelPedido, codigoProveedor, direccionDeEntrega," & _
"telefono, tipoDePedido, prioridad, formaDePago, fechaDelPedido, horaDelPediddo," & _
"fechaDeEntrega, horaDeEntrega, total, observaciones)" & _
"values (@codigoDelPedido, @codigoProveedor, @direccionDeEntrega," & _
"@telefono, @tipoDePedido, @prioridad, @formaDePago, @fechaDelPedido, @horaDelPediddo," & _
"@fechaDeEntrega, @horaDeEntrega, @total, @observaciones)", con)
'Datos de la tabla proveedores
comando1.Parameters.Add("@codigoDelPedido", SqlDbType.Int).Value = txtCodPedido.Text
comando1.Parameters.Add("@codigoProveedor", SqlDbType.Int).Value = txtCodProv.Text
comando1.Parameters.Add("@direccionDeEntrega", SqlDbType.VarChar, 100).Value = txtDircPed.Text
comando1.Parameters.Add("@telefono", SqlDbType.VarChar, 11).Value = mskTelPed.Text
comando1.Parameters.Add("@tipoDePedido", SqlDbType.VarChar, 15).Value = cmbTipoPedi.Text
comando1.Parameters.Add("@prioridad", SqlDbType.VarChar, 15).Value = cmbPrioriPedi.Text
comando1.Parameters.Add("@formaDePago", SqlDbType.VarChar, 20).Value = cmbFormPagoPedi.Text
comando1.Parameters.Add("@fechaDelPedido", SqlDbType.Date).Value = dtpFechaPedido.Value
comando1.Parameters.Add("@horaDelPediddo", SqlDbType.DateTime).Value = tpHoraPedido.Value
comando1.Parameters.Add("@fechaDeEntrega", SqlDbType.Date).Value = dtpFechaEntregaPedido.Value
comando1.Parameters.Add("@horaDeEntrega", SqlDbType.DateTime).Value = tpHoraPedido.Value
comando1.Parameters.Add("@total", SqlDbType.Decimal).Value = txtTotalPedido.Text
comando1.Parameters.Add("@observaciones", SqlDbType.VarChar, 100).Value = txtObservacionesPedidos.Text
'Ejecuta la instruccion comando1
comando1.ExecuteNonQuery()
'Cierra la conexion
con.Close()
'Mensaje datos guardados con exito
RadMessageBox.Show(Me, "Los datos se registraron correctamente", "Mensaje",
MessageBoxButtons.OK, RadMessageIcon.Info)
Catch ex As Exception : RadMessageBox.Show(ex.Message) 'captura el error original del sistema
'RadMessageBox.Show("Verifique sus datos o que el codigo no exista")
End Try
Esta es mi tabla en la BD
Create table Pedido
(
codigoDelPedido int primary key,
codigoProveedor int not null,
direccionDeEntrega varchar (100) not null,
telefono varchar (11) not null,
tipoDePedido varchar (15) not null,
prioridad varchar(15) not null,
formaDePago varchar(20) not null,
fechaDelPedido date not null,
horaDelPediddo time not null,
fechaDeEntrega date not null,
horaDeEntrega time,
total decimal (7,2) not null,
observaciones varchar(100)
)
Espero puedan ayudarme saludos.
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.
Hola gracias por contestar
Modifique la linea y me lanza el siquiente error
comando1.Parameters.Add("@codigoProveedor", SqlDbType.Int).Value = Nothing
(http://4.bp.blogspot.com/-65v83EzwHNU/VVJPSLIXPTI/AAAAAAAAA4I/6X6vNkTDpac/s1600/Error.png)
Error con si el campo esta vacio
comando1.Parameters.Add("@codigoProveedor", SqlDbType.Int).Value = txtCodProv.Text
(http://2.bp.blogspot.com/-3q9BKteFddc/VVJS-WXehNI/AAAAAAAAA4Q/tsHsPIJJIVc/s1600/Error1.png)
Error si ya esta la llave primaria
(http://2.bp.blogspot.com/-XhMpshBOKAU/VVJTf08UViI/AAAAAAAAA4Y/z3Ow7pQ3JMQ/s1600/Error2.png)
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.
Cita de: nolasco281 en 12 Mayo 2015, 21:11 PM
Hola gracias por contestar
Modifique la linea y me lanza el siquiente error
comando1.Parameters.Add("@codigoProveedor", SqlDbType.Int).Value = Nothing
(http://4.bp.blogspot.com/-65v83EzwHNU/VVJPSLIXPTI/AAAAAAAAA4I/6X6vNkTDpac/s1600/Error.png)
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.
Creo que entendi.
Ya me salio.
Efectivamente me captura el error pero debo de hacer esto por cada uno? esa es mi ultima duda.
If txtDircPed.Text.Length > 0 Then
comando1.Parameters.Add("@direccionDeEntrega", SqlDbType.VarChar, 100).Value = txtDircPed.Text
End If
If mskTelPed.Text = "____-__-__" Then
Else
comando1.Parameters.Add("@telefono", SqlDbType.VarChar, 11).Value = mskTelPed.Text
End If
Se me olvidaba muchas gracias kub0x
Cita de: nolasco281 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.
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.