SoloCodigo
Bases de Datos => Crystal Reports => Mensaje iniciado por: mikelm3 en Jueves 19 de Marzo de 2009, 17:01
-
Hola a toda la comunidad
Espero me puedan ayudar
Yo necesito manipular con programación un cross-tab de tal manera que por codigo yo pueda cambiar las opciones de grupo de un campo fecha que se encuentra como columna y asi poder sacar el reporte por día, mes y semana.
Esto con el reporte es muy sencillo hacerlo pero el problema es que no quiero un reporte por cada opcion del grupo del cross-tab, tengo 24 reportes diferentes y si hago la ultima opción tendría 72 reportes los cuales tendría que editar cada uno de ellos y sería muy laborioso.
Estoy usando Visual Basic 2005 y Crystal Reports XI developer, ya busque el objeto de opcion de grupo para el cross-tab pero no lo encuentro.
¿Es posible hacer esto por medio de codigo?
En su defecto ¿que otra opción me recomiendan que nos sea hacer un reporte por cada opción de grupo?
Les doy el ejemplo de como esta estructurado uno de los reportes
Estos reportes son de ventas
Cross-Tab por día
02/03/2009 03/03/2009 04/03/2009 05/03/2009 06/03/2009 07/03/2009 09/03/2009 12/03/2009 16/03/2009
Articulo
0050 12 1 10 2 5 8 5 4 2
0100 1 2 5 10 6 8 9 10 5
0500 5 8 9 10 15 5 6 4 2
Cross-Tab por semana
01/03/2009 08/03/2004 15/03/2009
Articulo
0050 38 9 2
0100 32 19 5
0500 52 10 2
Cross-Tab por mes
Mar-09
Articulo
0050 49
0100 56
0500 64
-
Hola,
Tengo exactamente el mismo problema.
Como lo resolviste al final.??
Gracias
Raúl
-
Encontre un codigo de un store procedure de sql server que es el siguiente:
CREATE procedure CrossTab (@Select varchar(1000),
@PivotCol varchar(100),
@Summaries varchar(100),
@GroupBy varchar(100),
@OtherCols varchar(100) = Null)
AS
set nocount on
set ansi_warnings off
declare @Vals varchar(8000);
set @Vals = '';
set @OtherCols= isNull(', ' + @OtherCols,'')
create table #temp (Pivot varchar(100))
insert into #temp
exec ('select distinct convert(varchar(100),' + @PivotCol + ') as Pivot FROM (' + @Select + ') A')
select @Vals = @Vals + ', ' +
replace(replace(@Summaries,'(','(CASE WHEN ' + @PivotCol + '=''' +
Pivot + ''' THEN '),')[', ' END) as [' + Pivot )
from #Temp
order by Pivot
drop table #Temp
EXEC ( 'select ' + @GroupBy + @OtherCols + @Vals +
' from (' + @Select + ') A GROUP BY ' + @GroupBy)
set nocount off
set ansi_warnings on
GO
los parametros que le paso al store procedure son las consultas de unas vistas que se generan dinamicamente mediante codigo en el programa de VB, despues el resultado del store procedure lo bajo a un table adapter para ligarlo a un grid y en el grid presento el reporte pero si quieres tambien lo puedes vaciar en un reporte de crystal reports con origen de datos mediante store procedure.
Espero te sirva de algo
Suerte........