SQL Server - Ayuda !! Error al Insertar datos en tablas relacionadas

 
Vista:
Imágen de perfil de luisao
Val: 17
Ha disminuido su posición en 5 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda !! Error al Insertar datos en tablas relacionadas

Publicado por luisao (6 intervenciones) el 21/06/2020 09:32:18
Estimados, cordial saludo,

Solicito de su valiosa colaboracion referente a lo siguiente:

Estoy realizando una base de datos en SQL Server 2014

tengo muchas tablas, pero quiero enfocarme en 2 tablas, por ejemplo :
1
2
3
4
5
6
7
Repuestos(
Cod_Repuesto VARCHAR(4) primary key,
Descripcion VARCHAR(100) not null,
Precio_Compra money not null,
Precio_Venta money not null,
Cantidad int not null,
Foto image)

y

1
2
3
4
5
6
7
8
9
Detalle_Factura(
Cod_Factura VARCHAR(4),
Cod_Repuesto VARCHAR(4),
Descripcion varchar(100),
Precio money,
Cantidad int,
SubTotal money,
Isv money,
Total money)

Detalle Factura tiene un FK de Repuestos mediante el campo Clave de Repuestos llamado Cod_Repuesto, tengo varios registros en la tabla repuestos, y cuando deseo realizar una factura me lanza un error el detallo en la imagen adjunta.

Estos son los Procedimientos Almacenados que he creado para Guardar la Factura:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE PROCEDURE PA_AGREGAR_FACTURAS
(@Cod_Factura VARCHAR(4),
@Fecha date,
@Cod_Cliente int)
AS
if exists (select * from Clientes where Cod_Cliente =@Cod_Cliente)
INSERT Facturas(Cod_Factura,Fecha,Cod_Cliente) VALUES(@Cod_Factura,@Fecha,@Cod_Cliente)
GO
 
CREATE PROCEDURE PA_AGREGAR_DETALLE_FACTURAS
(@Cod_Factura VARCHAR(4),
@Cod_Repuesto VARCHAR(4),
@Descripcion varchar(100),
@Precio money,
@Cantidad int,
@SubTotal money,
@ISV money,
@Total money)
AS
INSERT INTO Detalle_Factura(Cod_Factura,Cod_Repuesto,Descripcion,Precio,Cantidad,SubTotal,Isv,Total)
VALUES(@Cod_Factura,@Cod_Repuesto,@Descripcion,@Precio,@Cantidad,@SubTotal,@ISV,@Total)
GO


con la tabla Facturas no tengo problemas que es donde se guardan los datos del cliente , fecha y numero de factura.
El programa lo estoy desarrollando en VB.NET.
De antemano muchas gracias por sus sugerencias, comentarios y ayuda.

Saludos.

20200621-012559-001
Captura
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda !! Error al Insertar datos en tablas relacionadas

Publicado por Isaias (4558 intervenciones) el 23/06/2020 18:51:13
De acuerdo, mi pregunta seria, ¿Cual es tu DUDA?, el mensaje es bien claro, estas tratando de violar las reglas de integridad, esto es, NO PUEDES ingresar un DETALLE DE FACTURA cuyo Cod_Repuesto NO EXISTA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de luisao
Val: 17
Ha disminuido su posición en 5 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda !! Error al Insertar datos en tablas relacionadas

Publicado por luisao (6 intervenciones) el 23/06/2020 20:58:52
Muchas gracias Estimado,

esto es para un proyecto de Universidad, mi duda es como debo solventar ese error ? que cambio puedo realizar para que esto fluya bien.
sera que la declaracion de mis variables esta mala, o la relacion ?

agradezco mucho su ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda !! Error al Insertar datos en tablas relacionadas

Publicado por Isaias (4558 intervenciones) el 24/06/2020 00:41:40
Va de nuevo, NO PUEDES insertar en Detalle Factura un código de refacciones que NO EXISTE, ese es el problema, primero debes ingresar el dato correspondiente en REFACCIONES y después de DETALLE FACTURA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de luisao
Val: 17
Ha disminuido su posición en 5 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda !! Error al Insertar datos en tablas relacionadas

Publicado por luisao (6 intervenciones) el 24/06/2020 01:59:46
muchas gracias por su respuesta,

resulta que si existen los codigos de repuestos en la tabla de repuestos, creo que resolvi el problema , sin embargo ahora me presenta otro problemita.

Realice el siguiente Procedimiento Almacenado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE PROCEDURE PA_AGREGAR_POS_FACTURAS
(@Fecha date,
@Cod_Cliente int,
@Cod_Factura INT OUTPUT,
@Cod_Repuesto int,
@Descripcion varchar(100),
@Precio money,
@Cantidad int,
@SubTotal money,
@ISV money,
@Total money)
AS
INSERT into Facturas(Fecha,Cod_Cliente) VALUES(@Fecha,@Cod_Cliente)
 
SELECT @Cod_Factura=SCOPE_IDENTITY()
 
INSERT INTO Detalle_Factura(Cod_Factura,Cod_Repuesto,Descripcion,Precio,Cantidad,SubTotal,Isv,Total)
VALUES(@@IDENTITY,@Cod_Repuesto,@Descripcion,@Precio,@Cantidad,@SubTotal,@ISV,@Total)
GO

de esta manera hago el insert para ambas tablas, visual basic ahora no me lanza ningun error, de hecho al ejecutar el procedimiento desde SQL (primero lo hice asi para probarlo) Si funciona bien y me giuarda todo perfecto.

sin embargo, ahora, cuando guardo desde VB.NET y hago la consulta en SQL la tabla Detalle_Factura me guarda todos los campos de De la Tabla Detalle en 0. los campos me aparecen en 0, pero cuando lo hago desde SQL todo se guarda bien.

si puede brindarme alguna pista, le agradecere mucho.

Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 111
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda !! Error al Insertar datos en tablas relacionadas

Publicado por Javier (45 intervenciones) el 24/06/2020 05:46:27
y el codigo en tu programa como lo tienes? difícil ayudarte si no sabemos como estas enviando los parámetros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda !! Error al Insertar datos en tablas relacionadas

Publicado por Isaias (4558 intervenciones) el 24/06/2020 20:47:31
Ademas de lo que comenta Javier, analiza el siguiente codigo
1
2
3
4
5
SELECT @Cod_Factura=SCOPE_IDENTITY()  -- Obtienes el ultimo IDENTITY GENERADO
 
INSERT INTO Detalle_Factura(Cod_Factura,Cod_Repuesto,Descripcion,Precio,Cantidad,SubTotal,Isv,Total)
VALUES(@@IDENTITY,@Cod_Repuesto,@Descripcion,@Precio,@Cantidad,@SubTotal,@ISV,@Total)
-- Aqui pasas el @@IDENTITY, ¿PORQUE?, obtuviste @Cod_Factura, ¿no deberia ser este el valor?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de luisao
Val: 17
Ha disminuido su posición en 5 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda !! Error al Insertar datos en tablas relacionadas

Publicado por luisao (6 intervenciones) el 05/07/2020 19:45:52
Muchas gracias a todos por sus respuestas.

Solucione...

El PA estaba bien, el error ocurrio a nivel de VB.NET donde tenia unos textbox como parametros para el boton GUARDAR y le tenia una instruccion que cuando se agregaran al Datagridview los textbox quedaran vacios y al presionar el boton GUARDAR me guardaba con exito pero campos vacios, elimine esa instruccion y se la pase hasta despues de GUARDAR, quedo excelente.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar