De momento estoy generando un SP el cual me debe arrojar datos a modo de alimentacion de un reporte, esto me funciona perfectamente, salvo por un pequeño problema.
El SP es el siguiente:
Código:
Los datos son arrojados correctamente al momento de generar la siguiente consulta desde la aplicación:CREATE PROCEDURE [dbo].[VCPP_PAPEL_CLIENTE] @ANIO1 int, @ANIO2 int, @PAPEL CHAR(1), @CLIENTE varchar(80) AS declare @TIPO CHAR(3), @FAC_Num int, @FAC_CodCliente nvarchar(50), @CL_razonSocial nvarchar(50), @FAC_FechaEmision datetime, @FAC_TotalNeto int, @NC_TotalNeto int CREATE TABLE #VentasNetasMes (FAC_Num INT, FAC_FechaEmision datetime, FAC_TotalNeto int) DECLARE C_facturas CURSOR FOR select 'FAC' , FAC_Num, FAC_FechaEmision, FAC_TotalNeto = isnull((select sum(isnull(ITFAC_Neto, 0)) from [FACTURA ITEM] where FAC_Num = ITFAC_Num),0) -- ISNULL(FAC_TotalNeto,0) from [factura] where FAC_FechaEmision is not null AND EXISTS(SELECT * FROM [FACTURA ITEM],[ORDEN DE TRABAJO ITEM] WHERE FAC_NUM = ITFAC_NUM AND ITFAC_NUMOT = OTD_NUM AND ITFAC_IDDETALLE = OTD_IDDETALLE AND OTD_PAPEL = @PAPEL) AND YEAR(FAC_FechaEmision) between @ANIO1 and @ANIO2 AND FAC_CodCliente = @CLIENTE UNION ALL select 'NC', NC_Num, NC_FechaEmision, NC_TotalNeto = isnull((select sum(isnull(NCIT_Neto, 0)) from [NOTA CREDITO ITEM] Where NC_Num = NCIT_Num ),0) -- ISNULL(NC_TotalNeto,0) from [NOTA CREDITO] where NC_FechaEmision is not null AND EXISTS(SELECT * FROM [NOTA CREDITO ITEM],[ORDEN DE TRABAJO ITEM] WHERE NC_NUM = NCIT_NUM AND NCIT_NUMOT = OTD_NUM AND NCIT_IDDETALLE = OTD_IDDETALLE AND OTD_PAPEL = @PAPEL) AND YEAR(NC_FechaEmision) between @ANIO1 and @ANIO2 AND NC_CodCliente = @CLIENTE OPEN C_facturas FETCH NEXT FROM C_facturas INTO @TIPO, @FAC_Num , @FAC_FechaEmision, @FAC_TotalNeto WHILE @@FETCH_STATUS = 0 BEGIN IF @TIPO = 'NC' SELECT @FAC_TotalNeto = @FAC_TotalNeto *(-1) INSERT INTO #VentasNetasMes (FAC_Num, FAC_FechaEmision, FAC_TotalNeto)VALUES(@FAC_Num, @FAC_FechaEmision, @FAC_TotalNeto) FETCH NEXT FROM C_facturas INTO @TIPO, @FAC_Num , @FAC_FechaEmision, @FAC_TotalNeto END CLOSE C_facturas DEALLOCATE C_facturas select ano=datepart(yyyy, FAC_FechaEmision), mes=datepart(mm, FAC_FechaEmision), total = sum(FAC_TotalNeto) from #VentasNetasMes group by datepart(yyyy, FAC_FechaEmision), datepart(mm, FAC_FechaEmision) order by 1,2 GO
Código:
El SP lo trabajo con cursores. Necesito averiguar la forma de que cuando no existan datos en un determinado periodo me arroje como valor 0. Exec VCPP_PAPEL_CLIENTE '2010', '2011', 'R', '96861750-8'
Pues como aun no soluciono esto me genera un reporte incompleto debido a que falta lo que indiqué anteriormente.
Agradezco cualquier ayuda de uds.
Saludos.