19/10/2011, 15:11
|
| | Fecha de Ingreso: agosto-2009
Mensajes: 45
Antigüedad: 15 años, 4 meses Puntos: 2 | |
Problema con Procedimiento Almacenado Estimados, muy buenas tardes.
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:
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
Los datos son arrojados correctamente al momento de generar la siguiente consulta desde la aplicación:
Código:
Exec VCPP_PAPEL_CLIENTE '2010', '2011', 'R', '96861750-8'
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.
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.
Última edición por Rro237; 19/10/2011 a las 15:17 |