Ver Mensaje Individual
  #1  
Antiguo 02-08-2004
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Reputación: 21
tgsistemas Va por buen camino
Los SP y yo ....

Hola a todos/as de nuevo :

De nuevo con una duda sobre los Stored Procedure ....

En SQL 7 y con D5 tengo una tabla cabecera que se llama PARTES y otra de detalle que se llama PARTESLIN. Corresponden a los partes horarios de los trabajadores (entrada, salida, horas trabajadas, produccion, etc....).
Ahora necesito generar un informe en el que muestre los datos agrupados por trabajador y fecha (referencia cruzada) similar a una hoja de cálculo de excel, se me ocurrio generarlo todo en un SP con este código :
Código:
use GESTPROD
GO
	drop table TEMPORAL
	drop procedure SP_PARTESINFORMES
go
	create table TEMPORAL
	( TRBJDOR char(60), NMROORDEN char(15), FECHA datetime, HT float, CNTCTOS float, CH float, VENTAS float)

GO
	create procedure SP_PARTESINFORMES (@ORDENTEMP char(15), @FECHAD Datetime, @FECHAH Datetime)
	as
	begin	
		insert into TEMPORAL 
		select PARTES.CDGOTOP, PARTES.NMROORDEN, PARTES.FECHA, PARTESLIN.HT, PARTESLIN.CNTCTOS, PARTESLIN.VENTAS,
			(PARTESLIN.CNTCTOS / PARTESLIN.HT) AS CH
		from PARTES inner join PARTESLIN on PARTES.CDGO = PARTESLIN.CDGOPARTE
		where ((PARTES.NMROORDEN = @ORDENTEMP)
			 AND 	
			(PARTES.FECHA BETWEEN @FECHAD AND @FECHAH))
	end
GO
	SELECT FECHA, 
	    SUM(CASE DAY(FECHA) WHEN 01 THEN HT ELSE 0 END) AS D1,
	    SUM(CASE DAY(FECHA) WHEN 02 THEN HT ELSE 0 END) AS D2,
	    SUM(CASE DAY(FECHA) WHEN 03 THEN HT ELSE 0 END) AS D3,
	    SUM(CASE DAY(FECHA) WHEN 04 THEN HT ELSE 0 END) AS D4,
	    SUM(CASE DAY(FECHA) WHEN 05 THEN HT ELSE 0 END) AS D5,
	    SUM(CASE DAY(FECHA) WHEN 06 THEN HT ELSE 0 END) AS D6,
	    SUM(CASE DAY(FECHA) WHEN 07 THEN HT ELSE 0 END) AS D7,
	    SUM(CASE DAY(FECHA) WHEN 08 THEN HT ELSE 0 END) AS D8,
	    SUM(CASE DAY(FECHA) WHEN 09 THEN HT ELSE 0 END) AS D9,
	    SUM(CASE DAY(FECHA) WHEN 10 THEN HT ELSE 0 END) AS D10,
	    SUM(CASE DAY(FECHA) WHEN 11 THEN HT ELSE 0 END) AS D11,
	    SUM(CASE DAY(FECHA) WHEN 12 THEN HT ELSE 0 END) AS D12,
	    SUM(CASE DAY(FECHA) WHEN 13 THEN HT ELSE 0 END) AS D13,
	    SUM(CASE DAY(FECHA) WHEN 14 THEN HT ELSE 0 END) AS D14,
	    SUM(CASE DAY(FECHA) WHEN 15 THEN HT ELSE 0 END) AS D15,
	    SUM(CASE DAY(FECHA) WHEN 16 THEN HT ELSE 0 END) AS D16,
	    SUM(CASE DAY(FECHA) WHEN 17 THEN HT ELSE 0 END) AS D17,
	    SUM(CASE DAY(FECHA) WHEN 18 THEN HT ELSE 0 END) AS D18,
	    SUM(CASE DAY(FECHA) WHEN 19 THEN HT ELSE 0 END) AS D19,
	    SUM(CASE DAY(FECHA) WHEN 20 THEN HT ELSE 0 END) AS D20,
	    SUM(CASE DAY(FECHA) WHEN 21 THEN HT ELSE 0 END) AS D21,
	    SUM(CASE DAY(FECHA) WHEN 22 THEN HT ELSE 0 END) AS D22,
	    SUM(CASE DAY(FECHA) WHEN 23 THEN HT ELSE 0 END) AS D23,
	    SUM(CASE DAY(FECHA) WHEN 24 THEN HT ELSE 0 END) AS D24,
	    SUM(CASE DAY(FECHA) WHEN 25 THEN HT ELSE 0 END) AS D25,
	    SUM(CASE DAY(FECHA) WHEN 26 THEN HT ELSE 0 END) AS D26,
	    SUM(CASE DAY(FECHA) WHEN 27 THEN HT ELSE 0 END) AS D27,
	    SUM(CASE DAY(FECHA) WHEN 28 THEN HT ELSE 0 END) AS D28,
	    SUM(CASE DAY(FECHA) WHEN 29 THEN HT ELSE 0 END) AS D29,
	    SUM(CASE DAY(FECHA) WHEN 30 THEN HT ELSE 0 END) AS D30,
	    SUM(CASE DAY(FECHA) WHEN 31 THEN HT ELSE 0 END) AS D31
	FROM TEMPORAL
	GROUP BY FECHA
GO
Cuando ejecuto el SP desde mi aplicación (pasándole los parámetros) se produce el siguiente error :
Código:
Error al crear el cursor
pero si compruebo los datos de la tabla "temporal" están actualizados

Tengo la impresión de que me he complicado en exceso la vida y que debe existir alguna forma más simple de hacerlo, por eso pido si alguien puede ayudarme o indicarme como podría hacerlo.

Saludos y gracias
__________________
Toni | blog
Responder Con Cita