Como plantear procedimiento almacenado sql server 2008
-
sábado, 14 de abril de 2012 14:18
Buenos días a todos tengo un problema y quisiera que me ayuden a despejar las dudas. ando buscando en internet no encontré nada parecido.
Se me ocurrió haberlo lo hice funcionó pero no quiero así quisiera de otra formas
un procedimiento almacenado para llenar dos tablas maestroDetalle.
Este es el código:
USE [CostosyAnexos] GO /****** Object: StoredProcedure [dbo].[InsertarMaestro] Script Date: 04/14/2012 09:50:22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE [dbo].[InsertarMaestro] -- Add the parameters for the stored procedure here @idParteMa int, @Fechama date, @PrefijoMa nvarchar(30), @Turno char(10), @IHorometroMa decimal(9,2), @FHorimentroMa decimal(9,2), @IHornadaMa Time(0), @FJornadaNa Time (0), @idParteDe int, @Serviciode int, @Interferencias nchar(5), @HInicio time(7), @HFin Time(7), @Capataz int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here insert MaestroMaquinasHoras(IdParte,Fecha,Prefijo,Turno,IHorimetro,FHorimetro,IHJornada,FHJornada) values(@idParteMa,@Fechama,@PrefijoMa,@Turno,@IHorometroMa,@FHorimentroMa,@IHornadaMa,@FJornadaNa) Insert DetalleMaquinasHora (IdParte,Servicio,Interferencias,HInicio,HFin,Capataz) --values(@idpartede,@Serviciode,@Interferencias,@HInicio,@HFin,@Capataz) values (@idpartede,@Serviciode,@Interferencias,@HInicio,@HFin,@Capataz) set @idParteDe = @idParteMa END
Estoy migrando de Access y en Access me funciona perfecto.
el campo IdParteMa esta relacionado con el campo IdparteDe, osea idPartede es un FK de IdParteMa este último es Pk que quisiera que ya no tenga que digitar nuevamente el campo IdParteDe que se copie el código que esta en IdParteMa como les digo y sin querer ser redundante en access 2010 funciona cosa que oculte luego de probar la columna porque se copia.
lo que quiero hacer es casi como llenar una factura idParteme seria el numero de la factura y IdparteDe seria el campo con la que voy a identificar los productos de esas facturas.
Por favor si estoy planteando mal me disculpa y me ayudan. ya que vengo parado una semana con eso y no consigo arreglarlo.
Son muy amables
Muchas gracias
Roberto MelgarRoberto Melgar
Todas las respuestas
-
sábado, 14 de abril de 2012 15:38
No sé si te he terminado de entender, pero si lo que necesitas es que IdParte tengan el mismo valor en las dos tablas, entonces pasa un único parámetro @idParte y asígnaselo a esos campos de las tablas. Algo como
Por otra parte, sería recomendable que estas operaciones estuvieran dentro de una transacción, y deberías encerrar el código en un bloque TRY/CATCH para controlar los posibles erroresCREATE PROCEDURE [dbo].[InsertarMaestro] -- Add the parameters for the stored procedure here @idParte int, @Fechama date, @PrefijoMa nvarchar(30), @Turno char(10), @IHorometroMa decimal(9,2), @FHorimentroMa decimal(9,2), @IHornadaMa Time(0), @FJornadaNa Time (0), @Serviciode int, @Interferencias nchar(5), @HInicio time(7), @HFin Time(7), @Capataz int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here insert MaestroMaquinasHoras(IdParte,Fecha,Prefijo,Turno,IHorimetro,FHorimetro,IHJornada,FHJornada) values(@idParte,@Fechama,@PrefijoMa,@Turno,@IHorometroMa,@FHorimentroMa,@IHornadaMa,@FJornadaNa)
Insert DetalleMaquinasHora (IdParte,Servicio,Interferencias,HInicio,HFin,Capataz) values (@idparte,@Serviciode,@Interferencias,@HInicio,@HFin,@Capataz) END
- Editado Carlos SacristanMicrosoft Community Contributor sábado, 14 de abril de 2012 15:39
- Marcado como respuesta qwalgrandeMVP, Moderator sábado, 28 de abril de 2012 14:09
-
sábado, 14 de abril de 2012 18:20
Adjunto una imagen para que veas por favor la idea que tengo esto lo tengo en access. mientras las horas del desglose no es igual a la de arriba no se habilita el boton guardar tu crees que conseguiré hacerlo así o mejor?
tal vez me falte mucho para hacerlo bien pero si nunca empiezo jamás terminaré. probé el código funciono perfecto gracias.
en esta figura es maestrodetalle son dos tablas diferentes adjunto.
por favor aprovecho para pedirte algunas sugerencias más.
Mil gracias.
Roberto Melgar
Roberto Melgar
-
domingo, 15 de abril de 2012 9:24La verdad, no entiendo qué es lo que quieres ni en qué consiste exactamente tu pregunta de ahora, ni siquiera si tiene que ver con lo que preguntabas inicialmente
-
lunes, 16 de abril de 2012 11:45
Buenas gracias,
era solo para demostrar que en access lo hacia de esa forma, y pues consultaba si cuando migre a visual me refiero a los formularios podré hacer lo mismo como veras lo resaltado con amarillo es el IdParte que en el encabezado (Maestro) solo lo escribo una vez y en el detalle se crea automática.
muchas gracias conseguí hacerlo con tu propuesta
Roberto Melgar
Roberto Melgar

