Foros del Web » Programación para mayores de 30 ;) » .NET »

problema con insertar desde visual .net

Estas en el tema de problema con insertar desde visual .net en el foro de .NET en Foros del Web. saludos: Tengo un web form q me relleno (una factura) el numero de factura y lo q corresponda lo guardo en la tabla factura y ...
  #1 (permalink)  
Antiguo 01/03/2005, 15:16
 
Fecha de Ingreso: agosto-2003
Ubicación: Viña del mar
Mensajes: 280
Antigüedad: 20 años, 9 meses
Puntos: 0
problema con insertar desde visual .net

saludos:

Tengo un web form q me relleno (una factura)
el numero de factura y lo q corresponda lo guardo en la tabla factura y lo del cliente en la tabla cliente con una clave foranea en la tabla factura(rut del cliente) y la tabla detalle de factura van los campos cod_producto, cantidad,precio_total(no es el total de la factura, si no del producto), numero_factura.
el PROBLEMA es que al generar la factuta guardo los datos en sus respectivas tablas, pero no se como hacer para guardar los datos de detalle de factura ya q son varios, les mustro el sp

ALTER PROCEDURE dbo.factFill
(

@fech datetime,
@neto money,
@iva money,
@total money,
@rut varchar(10),
@nom varchar(15),
@dir varchar(50),
@fono int,
@idprod char(4),
@cantidad int,
@ptotal money,
@nfactura int
)
AS
select rut from cliente where rut=@rut
if @@rowcount > 0
begin
insert into factura values(@fech,@neto,@iva,@total,@rut)
insert into detalle_factura values
(
@idprod,@cantidad,@ptotal,@nfactura
)
end
else
begin
insert into cliente values(@rut,@nom,@dir,@fono)
insert into factura values(@fech,@neto,@iva,@total,@rut)
insert into detalle_factura values
(
@idprod,@cantidad,@ptotal,@nfactura
)
end

no se si me entienden,, si se dan cuenta al generar la factura se guarda en la tabla detalle_factura el codigo del producto, cantidad,etc

pero es un grupo repetitivo, es decir no es una linea la q se inserta, son varias
,ademas cuando agrgo los parametros al sqlcommand tengo q considerar q el parametro @cantidad no es un valor, si no que son varios(segun los productos vendidos)

alguien me puede ayudar?

les agradeceria millones
gracias
  #2 (permalink)  
Antiguo 01/03/2005, 15:23
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
Soy de la idea de que deberias llamar a 2 stored procedures, uno para la "cabecera". O sea, para la factura(y el cliente, si fuese necesario). Y otro para cada linea del "detalle".
  #3 (permalink)  
Antiguo 01/03/2005, 16:17
Avatar de splinter  
Fecha de Ingreso: junio-2004
Ubicación: Misantla,Ver.Mexico
Mensajes: 181
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola

Apoyo el comentario de Mickel

Podrias validar los parametros en el SP con decisiones usando el mismo SP, para que entre por primera vez a insertar los datos generales y las demas veces solo inserte los datos en detalle, digo, esto es para que no hagas dos SP, y solo uses uno. Asi entonces puedes utilizar una sola clase que te sirva para insertar ( modificar o eliminar si tambien lo deseas).

Algunas veces lo he hecho asi y me ha dado muy buenos resultado

Saludos
  #4 (permalink)  
Antiguo 02/03/2005, 06:17
 
Fecha de Ingreso: agosto-2003
Ubicación: Viña del mar
Mensajes: 280
Antigüedad: 20 años, 9 meses
Puntos: 0
saludos:

pero para ocupar un sp tendria q usar por ejemlo un while para llamarlo las 'n' veces, donde 'n' son los productos del detalle de la factura, obviamente enviar todos los parametros, y en el sp validar para q solo sean ingresados a la tabla detalle_factura

es correcto lo que digo?

problemas q podrian aparecer?
  #5 (permalink)  
Antiguo 02/03/2005, 12:05
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
A ver, como yo lo conceptuo.

Llamas a un sp_cabecera para grabar los datos de la factura

Luego recorres con un while las filas de tu datagrid(o lo que sea) y para cada una de ellas llamas al sp_detalle para grabar los datos en detalle_factura

La unica consideracion seria que pongas todo esto con transacciones, salvo mejor opinion...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 16:02.