Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/06/2008, 10:39
Avatar de -rommel_
-rommel_
 
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 16 años, 8 meses
Puntos: 1
De acuerdo Overflow en Fechas

Bnos dias... espero me puedan ayudar... me pasa que me estoy confundiendo en mandar los parametros...
En realidad tengo 2 problemas con la misma consulta... pero el primer problema lo solucione... y ahora esta solucion es la ke me da este error de OverFlow de Fecha... a ver si pueder ayudarme... vean tengo el siguiente Sp

Sp: [dbo].[SBO_VAR_REP_VEN_ReporteCuotas_VentasAcumuladas] @FechaVta
... la cual me reportara las Cuotas que se les da a cada Vendedor para cada producto durante un respectivo periodo (mes) y las Vtas Acumuladas hasta una Fecha consultada (@FechaVta)

Código:
CREATE [dbo].[SBO_VAR_REP_VEN_ReporteCuotas_VentasAcumuladas] 
(
    @FechaVta as Datetime
)

Declare @ListaProd   --> Me Obtendra la Lista de los tamaños de los Prod Termi.
set @ListaProd = [dbo].[SBO_ListaTamanosProductosTerminados]()

        Select     [Cod Emp]
	,     [Nombres]
	,     [Tip Reg]     = 'CUOTA'
	,    @ListaProd
          from
	( Select
	           [Cod Emp]	=  U_VAR_CoEmp      -- Codigo del Empleado
	      ,    [Nombres]	=  U_VAR_NameEm   -- Nombre del Empleado
	      ,    [TamProd]	=  U_VAR_TamPro    -- Tamano de Producto
	      ,    [Cuota]         =  U_VAR_ValCuo	 -- VALOR de CUOTA
	   from [@VAR_EMPCUO] uo 
	   inner join [@VAR_CUOTA] ta on uo.Code = ta.Code
	   where ta.U_VAR_CuoPe = Month(@FechaVta)
	 ) as k Pivot(sum([Cuota]) FOR [TamProd] in (@ListaProd))PB
El primer problema me sucede aqui... al aplicar el PIVOT a la consulta... ke existe un error de sintaxis cerca de "(@ListaProd))PB"... ahora porque me daba ese error no se, si todo esta en su sitio o me falta algo mas... bueno eso lo solucione metiendo toda la consulta a una variable nVarchar(MAX) y ejecutarla dinamicamente con "EXEC sp_executesql"
de tal forma:

Código:
Declare @SqlCuota nVarchar(MAX)
set @SqlCuota =
'
         Select     [Cod Emp]
	,     [Nombres]
	,     [Tip Reg]     = ' + char(39) + 'CUOTA' + char(39) + '
	,    ' + @ListaProd + '
          from
	( Select
	           [Cod Emp]	=  U_VAR_CoEmp 
	      ,    [Nombres]	=  U_VAR_NameEm 
	      ,    [TamProd]	=  U_VAR_TamPro 
	      ,    [Cuota]         =  U_VAR_ValCuo	 
	   from [@VAR_EMPCUO] uo 
	   inner join [@VAR_CUOTA] ta on uo.Code = ta.Code
	   where ta.U_VAR_CuoPe = Month(' + @FechaVta+ ')
	 ) as k Pivot(sum([Cuota]) FOR [TamProd] in (' + @ListaProd+ '))PB
'
y Listo solucione mi primer problema :D

Ahora si, esa consulta quiero unirla... "union all"... con mi otra consulta que obtendra la Venta Acumulada hasta la fecha Indicada en el Proc Actual (@FechaVta)

Código:
Declare @SqlVtaAcu
Set @SqlVtaAcu =
        'Select 
	       [Cod Emp]
	,      [Nombres]
	,      [Tip Reg]     = ' + char(39) + 'Vta Acumulada' + char(39)+ '
	,      '+ @ListaProd + '
         from	
	(  Select		
	            [Cod Emp]  =   U_VAR_CoEmp 
	         ,  [Nombres]  =   U_VAR_NameEm 
	         ,  [TamProd]  =   U_VAR_TamPro 
	         ,  [Vta Acu]    =   [dbo].[SBO_VAR_CalcularVentaAcumulada]('
                                                     + char(39) + @Fechita + char(39) +
                                                      ', uo.U_VAR_CoEmp, ta.U_VAR_TamPro)
	    from [@VAR_EMPCUO] uo 
	    inner join [@VAR_CUOTA] ta on uo.Code = ta.Code
	    where ta.U_VAR_CuoPe = ' + Month(@FechaVta) + '
	 )  as k Pivot(sum([Vta Acu]) FOR [TamProd] in (' + @ListaProd + '))PB
          order by [Cod Emp], [Tip Reg]
       '
      set @SqlCuota = @SqlCuota + ' union all ' + @SqlVtaAcu
      EXEC sp_executesql @SqlCuota
explicacion:
[dbo].[SBO_VAR_CalcularVentaAcumulada] es una funcion que me devuelve un "double" y
le mando 3 parametros (@FechaVta , CodEmp, TamanoProd)... ahora es aqui donde sale mi error de OverFlow, cuando le mando al procedimiento original una fecha cualquiera.
Código:
 exec [dbo].[SBO_VAR_REP_VEN_ReporteCuotas_VentasAcumuladas] '2008/05/20'
me sale error de OverFlow... ahora si podrian decirme porke me sale el error este, a menos kise ser lo mas explicativo posible... me ayudarian mucho, conste que todos los parametros "fecha" son de tipo "datetime".

Gracias de antemano por su apoyo. Saludos.