Como plantear procedimiento almacenado sql server 2008

Respondida Como plantear procedimiento almacenado sql server 2008

  • sábado, 14 de abril de 2012 14:18
     
      Tiene código

    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 Melgar

    Roberto Melgar

Todas las respuestas

  • sábado, 14 de abril de 2012 15:38
     
     Respondida Tiene código

    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

    CREATE 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

    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 errores


  • 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:24
     
     
    La 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