none
Error de SQL

    Pregunta

  • Hola tengo esta tablita con las sgtes columnas:

     Public Sub agregar(producto As Producto, foto() As Byte)
            Try
                Dim da As New SqlCommand
                da.Connection = cn
                da.CommandText = "insert into Producto values(@id_prod,@id_marca,@id_tipo_prod,@nomb_prod,@stock_max_prod,@stock_min_prod,
                                                                @stock_actual_prod,@prec_lista_prod,@prec_vta_prod,@prec_costo_prod,
                                                                @id_mod,@id_color,@id_prov,@FotoProducto)"

                da.Parameters.Add("@id_prod", SqlDbType.Char, 9)
                da.Parameters.Add("@id_marca", SqlDbType.Int)
                da.Parameters.Add("@id_tipo_prod", SqlDbType.Int)
                da.Parameters.Add("@nomb_prod", SqlDbType.VarChar, 47)
                da.Parameters.Add("@stock_max_prod", SqlDbType.Int)
                da.Parameters.Add("@stock_min_prod", SqlDbType.Int)
                da.Parameters.Add("@stock_actual_prod", SqlDbType.Int)
                da.Parameters.Add("@prec_lista_prod", SqlDbType.Decimal, 6, 2)
                da.Parameters.Add("@prec_vta_prod", SqlDbType.Decimal, 6, 2)
                da.Parameters.Add("@prec_costo_prod", SqlDbType.Decimal, 6, 2)
                da.Parameters.Add("@id_mod", SqlDbType.Int)
                da.Parameters.Add("@id_color", SqlDbType.Int)
                da.Parameters.Add("@id_prov", SqlDbType.Char, 7)
                da.Parameters.Add("@FotoProducto", SqlDbType.Image)

                da.Parameters("@id_prod").Value = producto.idproducto
                da.Parameters("@id_marca").Value = producto.idmarca
                da.Parameters("@id_tipo_prod").Value = producto.idtipoproduct
                da.Parameters("@nomb_prod").Value = producto.nombreprod
                da.Parameters("@stock_max_prod").Value = producto.stockmax
                da.Parameters("@stock_min_prod").Value = producto.stockmin
                da.Parameters("@stock_actual_prod").Value = producto.stockactual
                da.Parameters("@prec_lista_prod").Value = producto.preciolista
                da.Parameters("@prec_vta_prod").Value = producto.preciventa
                da.Parameters("@prec_costo_prod").Value = producto.preciocostoprod
                da.Parameters("@id_mod").Value = producto.idmodelo
                da.Parameters("@id_color").Value = producto.idcolor
                da.Parameters("@id_prov").Value = producto.idproovedor
                da.Parameters("@FotoProducto").Value = foto

                cn.Open()
                da.ExecuteNonQuery()
                cn.Close()

                MsgBox("Datos guardados correctamente", vbInformation)

            Catch ex As SqlException
                MsgBox("ERROR EN SQL: " & ex.ToString)
            Catch e As Exception
                MsgBox("ERROR: " & e.ToString)
            End Try
        End Sub

    .........................................................................................

    Al darle agregar me lanza este error que no se como solucionarlo, espero puedan ayudarme, gracias:


    Juan Fernando

    domingo, 2 de octubre de 2016 3:40

Respuestas

  • Bueno, el mensaje de error es bastante claro: Tienes una tabla que tiene restricciones de tipo "foreign key", que significan que en los campos que tienen esa restricción no está permitido meter valores que no existan en el sitio que señala la foreign key.

    EL mensaje que ves, que dice que has infringido la restricción R_9, te indica que intentaste meter en el campo correspondiente un valor que está prohibido por esa restricción. Concretamente, en este caso es el campo id_tipo_prod, que presumiblemente debería indicar un código de tipo de producto, y presumiblemente la restricción indica que solo se permiten tipos de producto que existan en la tabla de tipos de producto.

    Ejecútalo con el debugger, para la ejecución justo después de asignar el valor al parámetro, y examina qué valor se ha asignado. En ese momento, vete a la base de datos, haz un select de la tabla referenciada (la que realmente esté referenciada, lo de que la restricción apunta a la tabla de tipos es una hipótesis mía y puede ser que la restricción apunte a otro sitio) y en dicha tabla referenciada verificarás que no existe el valor del parámetro y por eso sale el error.

    • Marcado como respuesta Juan_fernando lunes, 3 de octubre de 2016 5:40
    domingo, 2 de octubre de 2016 8:15