none
cargar pivot dinamico sql en crystal reports RRS feed

  • Pregunta

  • hola  e creado un pivot dinamico en sql, al cual lo e introducido en un store procedure

    -- 

    pero resulta que quiero utilizar ese store procedure que contiene el resultado de mi pivot dinámico ..y se me muestre

    en el crystal reports

    mi pivot sql es el siguiente  link

    http://social.msdn.microsoft.com/Forums/es-ES/6f0d335a-ea94-422a-a048-16e5ee449354/ayuda-con-pivot-columna-fechas?forum=sqlserveres

    planteado en el foro de sql

    mi pivot es :

    create proc ejecutarpivot
    as
    DECLARE @columns nvarchar(MAX);
    DECLARE @sql nvarchar(MAX);
    
    SET @columns = STUFF(
    	(
    	SELECT
    	  ',' + REPLACE(   Fecha,' ','')
    	FROM
    	  (SELECT DISTINCT   '['+cast(CONVERT (varchar (10),fecha,111 )as varchar(12))+']' as fecha
    			FROM  cabecera  C
    				--INNER JOIN  FlujoDetMovimientos  E ON C.IdCabMovimientos  =e.idcabMovimientos  
    				--where idconflujo =16
    	) AS T
    	FOR XML PATH('')
    	), 1, 1, '');
    	
    		set @sql=N'
    	SELECT
     *
    FROM
     (
    		SELECT   CONVERT(  VARCHAR(10),fecha,111) AS FECHA ,   desconcepto ,SUM ( PROMEDIO) AS PROMEDIO  FROM 
    
    (	SELECT
    			 cta.idEmpresa , 
    		Detalle.idConcepto  ,    CON.desConcepto ,(
    	 CASE  cta.idMoneda 
       WHEN 1 THEN( ((sum( Ingreso )/(select  valor   from   Cambio 
    where  fecha =c.Fecha)) - (SUM (Salida) / (select  valor from  Cambio 
    where  fecha =c.Fecha))))   else    
     sum( Ingreso )-  SUM (Salida)    END) PROMEDIO
    			,
    			    c.Fecha  as fecha
    			FROM  Detalle 
    		left outer join  Cabecera   c on   Detalle.idcab =c .IdCab 
    	LEFT OUTER JOIN  Concepto   CON ON  Detalle.idConcepto  = CON.idConcepto  
    		left outer join   cuenta  cta on  c.IdCuenta  = cta.idCuenta  
    		where  cta.idEmpresa  = 1
    			GROUP BY  Detalle.idConcepto  ,CON.desConcepto  , c.Fecha ,  cta.idEmpresa  , CTA.idMoneda  )T
    			 GROUP BY fecha ,   desConcepto 
     ) AS T
    		PIVOT
    		(MAX(PROMEDIO)
    		FOR   Fecha   IN (' +    @columns +  N')
    		) AS P'
    exec(@sql)

    me genera este resultado dinamicamente.. puede crecer las colunmas en el tiempo..

    claro que filtraria el reporte para no sobrepasar el ancho de hoja

    y quiero que se muestre en mi crystal reports (tal y como esta.. + una columna total por cada registro)

    y en la parte inferior el total por fecha o campo...

    bueno pero la pregunta mas va .. como hago que se muestre en el crystal reports


    QUIERO MATAR ESTA DUDA ... ANTES QUE EL MUNDO DEJE DE EXISTIR..

    viernes, 28 de febrero de 2014 4:10

Todas las respuestas

  • hola  e creado un pivot dinamico en sql, al cual lo e introducido en un store procedure

    -- 

    pero resulta que quiero utilizar ese store procedure que contiene el resultado de mi pivot dinámico ..y se me muestre

    en el crystal reports

    mi pivot sql es el siguiente  link

    http://social.msdn.microsoft.com/Forums/es-ES/6f0d335a-ea94-422a-a048-16e5ee449354/ayuda-con-pivot-columna-fechas?forum=sqlserveres

    planteado en el foro de sql

    mi pivot es :

    create proc ejecutarpivot
    as
    DECLARE @columns nvarchar(MAX);
    DECLARE @sql nvarchar(MAX);
    
    SET @columns = STUFF(
    	(
    	SELECT
    	  ',' + REPLACE(   Fecha,' ','')
    	FROM
    	  (SELECT DISTINCT   '['+cast(CONVERT (varchar (10),fecha,111 )as varchar(12))+']' as fecha
    			FROM  cabecera  C
    				--INNER JOIN  FlujoDetMovimientos  E ON C.IdCabMovimientos  =e.idcabMovimientos  
    				--where idconflujo =16
    	) AS T
    	FOR XML PATH('')
    	), 1, 1, '');
    	
    		set @sql=N'
    	SELECT
     *
    FROM
     (
    		SELECT   CONVERT(  VARCHAR(10),fecha,111) AS FECHA ,   desconcepto ,SUM ( PROMEDIO) AS PROMEDIO  FROM 
    
    (	SELECT
    			 cta.idEmpresa , 
    		Detalle.idConcepto  ,    CON.desConcepto ,(
    	 CASE  cta.idMoneda 
       WHEN 1 THEN( ((sum( Ingreso )/(select  valor   from   Cambio 
    where  fecha =c.Fecha)) - (SUM (Salida) / (select  valor from  Cambio 
    where  fecha =c.Fecha))))   else    
     sum( Ingreso )-  SUM (Salida)    END) PROMEDIO
    			,
    			    c.Fecha  as fecha
    			FROM  Detalle 
    		left outer join  Cabecera   c on   Detalle.idcab =c .IdCab 
    	LEFT OUTER JOIN  Concepto   CON ON  Detalle.idConcepto  = CON.idConcepto  
    		left outer join   cuenta  cta on  c.IdCuenta  = cta.idCuenta  
    		where  cta.idEmpresa  = 1
    			GROUP BY  Detalle.idConcepto  ,CON.desConcepto  , c.Fecha ,  cta.idEmpresa  , CTA.idMoneda  )T
    			 GROUP BY fecha ,   desConcepto 
     ) AS T
    		PIVOT
    		(MAX(PROMEDIO)
    		FOR   Fecha   IN (' +    @columns +  N')
    		) AS P'
    exec(@sql)

    me genera este resultado dinamicamente.. puede crecer las colunmas en el tiempo..

    claro que filtraria el reporte para no sobrepasar el ancho de hoja

    y quiero que se muestre en mi crystal reports (tal y como esta.. + una columna total por cada registro)

    y en la parte inferior el total por fecha o campo...

    bueno pero la pregunta mas va .. como hago que se muestre en el crystal reports


    QUIERO MATAR ESTA DUDA ... ANTES QUE EL MUNDO DEJE DE EXISTIR..

    Buenas, disculpen la molestia estoy con el mismo problema, alguien tiene la solución para este problema !!!!!!

    Gracias, Saludos.

    sábado, 9 de mayo de 2015 10:59
  • Esta como difícil de esa manera puedes mostrarlo en un grid, y luego mandarlo a Excel, como es dinámico , puede llegar a tener hasta mas de 15 columnas, por los rangos de fecha.

    otra opción seria utilizar devexpress, devexpress el contenido del grid te lo imprime como un reporte, te dejo los enlace

    How to: Preview XtraGrid Control

    Slds


    ProgramacionYa.net
    Si pequeña es la Patria, uno grande la sueña
    Rubén Darío
    Principe de las letras Castellanas
    Poeta Nicaragüense

    sábado, 9 de mayo de 2015 14:50
  • llevas los datos que necesita para el reporte(no lleves un pivot en sql), en el reporte recien cruzas la tablas

    hazlo de la siguiente manera.

    https://msdn.microsoft.com/es-es/library/bb546071(v=vs.90).aspx


    QUIERO MATAR ESTA DUDA ... ANTES QUE EL MUNDO DEJE DE EXISTIR..

    sábado, 9 de mayo de 2015 23:37