Insertar registro nulos
Publicado por Miguel (84 intervenciones) el 22/05/2019 18:00:26
Quería a ver si alguno me puede aclarar el problema que se me ha presentado, estoy trabajando con Sql Server. Les pongo el código donde tengo la pega.
'********************** Insertar Caja ***************************
Using CmdDetalle As New SqlCommand
CmdDetalle.CommandText = "INSERT INTO Caja VALUES(@IdCaja,@IdVenta,@IdCompra,@IdAviso,@IdSeguro,@IdCliente,@IdProveedor,@Operacion,@Fecha,@Importe,@Estado)"
CmdDetalle.CommandType = CommandType.Text
CmdDetalle.Connection = Conn
CmdDetalle.Transaction = T
CmdDetalle.Parameters.Add("@IdCaja", SqlDbType.Int).Value = eCaja.IdCaja
CmdDetalle.Parameters.Add("@IdVenta", SqlDbType.Int).Value = vbNullChar
CmdDetalle.Parameters.Add("@IdCompra", SqlDbType.Int).Value = nuevaCompra.IdCompra
CmdDetalle.Parameters.Add("@IdAviso", SqlDbType.Int).Value = vbNullChar
CmdDetalle.Parameters.Add("@IdSeguro", SqlDbType.Int).Value = vbNullChar
CmdDetalle.Parameters.Add("@IdCliente", SqlDbType.Int).Value = vbNullChar
CmdDetalle.Parameters.Add("@IdProveedor", SqlDbType.Int).Value = eCaja.IdProveedor
CmdDetalle.Parameters.Add("@Operacion", SqlDbType.VarChar).Value = eCaja.Operacion
CmdDetalle.Parameters.Add("@Fecha", SqlDbType.Date).Value = DateTime.Parse(nuevaCompra.Fecha).ToShortDateString()
CmdDetalle.Parameters.Add("@Importe", SqlDbType.Decimal).Value = eCaja.Importe
CmdDetalle.Parameters.Add("@Estado", SqlDbType.VarChar).Value = eCaja.Estado
Dim correcto As Integer = CmdDetalle.ExecuteNonQuery
If correcto = 0 Then
T.Rollback()
Throw New Exception("Se produjo un error al grabar el Factura")
End If
End Using
Quiero insertar registros en una tabla "Caja" pero hay una serie de campos que solo tienen valor cuando se trabaja con el formulario correspondiente.
Por ejemplo cuando hago una Compra de un Proveedor tiene valor los siguiente campos:
IdCaja, IdCompra, IdProveedor, Operacion, Fecha, Importe y Estado El resto tienen que ser nulos
Pero los ponga igual a cero ó Null siempre me da error.
Los otros casos pueden ser :
IdCaja, IdVenta, IdCliente, Operacion, Fecha, Importe y Estado
IdCaja, IdVenta, IdAviso, IdCliente, Operacion, Fecha, Importe y Estado
IdCaja, IdVenta, IdSeguro, IdCliente, Operacion, Fecha Importe y Estado
De tal forma que cada vez que Inserto un registro siempre hay algún valor nulo. He probado con vbNullChar y da error, he probado poniendo cero y da error, pero no encuentro otras opciones.
Gracias
'********************** Insertar Caja ***************************
Using CmdDetalle As New SqlCommand
CmdDetalle.CommandText = "INSERT INTO Caja VALUES(@IdCaja,@IdVenta,@IdCompra,@IdAviso,@IdSeguro,@IdCliente,@IdProveedor,@Operacion,@Fecha,@Importe,@Estado)"
CmdDetalle.CommandType = CommandType.Text
CmdDetalle.Connection = Conn
CmdDetalle.Transaction = T
CmdDetalle.Parameters.Add("@IdCaja", SqlDbType.Int).Value = eCaja.IdCaja
CmdDetalle.Parameters.Add("@IdVenta", SqlDbType.Int).Value = vbNullChar
CmdDetalle.Parameters.Add("@IdCompra", SqlDbType.Int).Value = nuevaCompra.IdCompra
CmdDetalle.Parameters.Add("@IdAviso", SqlDbType.Int).Value = vbNullChar
CmdDetalle.Parameters.Add("@IdSeguro", SqlDbType.Int).Value = vbNullChar
CmdDetalle.Parameters.Add("@IdCliente", SqlDbType.Int).Value = vbNullChar
CmdDetalle.Parameters.Add("@IdProveedor", SqlDbType.Int).Value = eCaja.IdProveedor
CmdDetalle.Parameters.Add("@Operacion", SqlDbType.VarChar).Value = eCaja.Operacion
CmdDetalle.Parameters.Add("@Fecha", SqlDbType.Date).Value = DateTime.Parse(nuevaCompra.Fecha).ToShortDateString()
CmdDetalle.Parameters.Add("@Importe", SqlDbType.Decimal).Value = eCaja.Importe
CmdDetalle.Parameters.Add("@Estado", SqlDbType.VarChar).Value = eCaja.Estado
Dim correcto As Integer = CmdDetalle.ExecuteNonQuery
If correcto = 0 Then
T.Rollback()
Throw New Exception("Se produjo un error al grabar el Factura")
End If
End Using
Quiero insertar registros en una tabla "Caja" pero hay una serie de campos que solo tienen valor cuando se trabaja con el formulario correspondiente.
Por ejemplo cuando hago una Compra de un Proveedor tiene valor los siguiente campos:
IdCaja, IdCompra, IdProveedor, Operacion, Fecha, Importe y Estado El resto tienen que ser nulos
Pero los ponga igual a cero ó Null siempre me da error.
Los otros casos pueden ser :
IdCaja, IdVenta, IdCliente, Operacion, Fecha, Importe y Estado
IdCaja, IdVenta, IdAviso, IdCliente, Operacion, Fecha, Importe y Estado
IdCaja, IdVenta, IdSeguro, IdCliente, Operacion, Fecha Importe y Estado
De tal forma que cada vez que Inserto un registro siempre hay algún valor nulo. He probado con vbNullChar y da error, he probado poniendo cero y da error, pero no encuentro otras opciones.
Gracias
Valora esta pregunta


0