Visual Basic.NET - ERROR: Instrucción INSERT en conflicto con la restricción FOREIGN KEY

 
Vista:

ERROR: Instrucción INSERT en conflicto con la restricción FOREIGN KEY

Publicado por miguel_antonio (7 intervenciones) el 28/06/2012 08:50:17
SALUDOS, BUENO, NOSE SI PODRIAn ORIENTARME PORFAVOR, TRABAJO CON VISUAL STUDIO 2008 Y SQL SERVER 2008. LES AGRADEZCO DE ANTEMANO.

ESTOY TRABAJANDO CON PROCEDIMIENTOS ALMACENADOS:

ESTABA BUSCANDO INFORMACION DE COMO :
HACER UN INSERT EN LA TABLA LLAMADA "AMORTIZACION" Y QUE ESTÁ RELACIONADA:

NOTA: EL PRIMARY KEY ES AUTOGENERADO
CREATE TABLE amortizacion

(

idamor INT IDENTITY,

idcom INT NOT NULL,

amortizacion DECIMAL(12,2),

saldo DECIMAL(12,2),

total DECIMAL(12,2),

fecha SMALLDATETIME

CONSTRAINT PK_amortizacion_idamor PRIMARY KEY(idamor),

CONSTRAINT FK_amortizacion_idcom FOREIGN KEY (idcom) REFERENCES compra_encabezado(idcom)

)



QUE VA RELACIONADA AL ENCABEZADO DE COMPRA Y EL DETALLE RELACIONADO A LA COMPRA Y A LA VEZ QUIERO ACTUALIZAR EL ARTICULO EN LA BASE DE DATOS.





MI CODIGO DE GUARDAR EL ENCABEZADO ES ESTE, LA CUAL NO ME GENERA NINGUN ERROR:



ALTER PROCEDURE [dbo].[Sp_GuardarCompraEncabezado]

(

@codcom INT,

@serie INT,

@codprov INT=NULL,

@codper INT,

@t_comp VARCHAR(100),

@f_pago VARCHAR(100),

@t_moneda VARCHAR(100),

@t_cambio DECIMAL(12,3),

@hora VARCHAR(13)=NULL,

@f_emision SMALLDATETIME=NULL,

@subtotal DECIMAL(12,2),

@igv DECIMAL(12,2),

@total DECIMAL(12,2),

@observaciones VARCHAR(200),

@estado VARCHAR(1)

)

AS

IF EXISTS(SELECT * FROM compra_encabezado

WHERE CONVERT(VARCHAR,idcom)+', '+CONVERT(VARCHAR,serie) = CONVERT(VARCHAR,@codcom)+', '+CONVERT(VARCHAR,@serie)

AND estado='H')

BEGIN

SELECT 'La Compra "'+CONVERT(VARCHAR,@serie)+','+CONVERT(VARCHAR,@codcom)+'" ya ha sido Generada y Registrada, se cancela la accin!...'

END

ELSE BEGIN

INSERT INTO compra_encabezado

(

idcom,

serie,

idprov,

idper,

tipo_comprobante,

forma_pago,

tipo_moneda,

tipo_cambio,

hora,

f_emision,

subtotal,

igv,

total,

observaciones,

estado

)

VALUES

(

@codcom,

@serie,

@codprov,

@codper,

@t_comp,

@f_pago,

@t_moneda,

@t_cambio,

@hora,

@f_emision,

@subtotal,

@igv,

@total,

@observaciones,

@estado

)

END



MI CODIGO DE GUARDAR EL DETALLE ES ESTE:

LA CUAL NO ME GENERA UN ERROR



ALTER PROCEDURE [dbo].[Sp_GuardarCompraDetalle]

(

@codcom INT,

@codart INT=Null,

@cantidad INT=Null,

@pventa DECIMAL(12,2)=Null,

@importe DECIMAL(12,2)=Null

)

AS

INSERT INTO compra_detalle(idcom,idart,cantidad,p_venta,importe)

VALUES(@codcom,@codart,@cantidad,@pventa,@importe)

UPDATE articulo SET stock_unid = stock_unid - @cantidad WHERE idart=@codart



ESTE ES EL CODIGO DE GUARDAR AMORTIZACION



ALTER PROCEDURE [dbo].[Sp_GuardarAmortizacion]

(

@codamor INT OUTPUT,

@codcom INT,

@amortizacion DECIMAL(12,2),

@saldo DECIMAL(12,2),

@total DECIMAL(12,2),

@fecha SMALLDATETIME

)

AS

INSERT INTO amortizacion(idcom,

amortizacion,

saldo,

total,

fecha)

VALUES(@codcom,

@amortizacion,

@saldo,

@total,

@fecha);

SELECT @codamor = SCOPE_IDENTITY()

RETURN



ACA ME SALE EL ERROR CUANDO QUIERO INSERTAR (ESTA OPCION SOLO SE VA A DAR CUANDO COMPRO AL "CRÉDTO").

LO PROBÉ EN SQL Y ME SALE ESTE CONFLICTO:



Mens. 547, Nivel 16, Estado 0, Lnea 1
Instrucción INSERT en conflicto con la restricción FOREIGN KEY "FK_amortizacion_idcom".
El conflicto ha aparecido en la base de datos "bd_centrofarma",
tabla "dbo.compra_encabezado",
column 'idcom'.
Se terminó la instrucción.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder