GrialCrossTree

De GrialWIKI

Introducción al Framework Grial

Índice


Controles con sufijo: _Scb

Descripción General

El control permite calcular reportes de matriz, cruzando un conjunto de datos entre un clasificador jerárquico (Mediante un GrialTreeController) usado como filas y uno o dos niveles de agrupación utilizados como columnas,


Link=



Las columnas del grupo 0 (default) son las primeras columnas de cada división. En su definción contienen el título de la división + el título propio de las columnas de grupo 0.

Ejemplo de uso

(tomado del módulo pre_cuot_03a)

'Limpio Cross Tree
CrossTree.Clear
 
'Preparo Rst definicion de columnas, Grupo 0 (default)
Cross_grq.Init " SELECT ID_PRECUOT02 as CODE " & _
",PRECUOT02_DESCRI_TEXT||'|Cuota'  AS DESCRI " & _
",PRECUOT02_ORDEN * 100 as ORDEN " & _
" FROM pre_cuot_02w PC2 " & _
" WHERE RELA_PRECUOT01 = " & ID_PreCuot01_Scb.CurrentValue & _
" ORDER BY DESCRI"

Las columnas del grupo 0, contienen en su definición, el título principal para cada división del crosstree. El campo DESCRI debe contener el titulo de la división (que puede contener n columnas), seguido de un caracter “pipeline” “|” y luego la descripcion de la columna del grupo 0 dentro de la división.

'Preparo Rst definicion de columnas, Grupo 1
CrossGrupo1_grq.Init " SELECT ID_PRECUOT02 as CODE " & _
                     ", 'Comprometido'  AS DESCRI " & _
                     ",PRECUOT02_ORDEN * 100 as ORDEN " & _
                     " FROM pre_cuot_02w PC2 " & _
                     " WHERE RELA_PRECUOT01 = " & ID_PreCuot01_Scb.CurrentValue & _
                     " ORDER BY DESCRI"

Las columnas del grupo 1 o n, contienen solo los titulos para la columna particular (columna 1 de cada división). El campo ORDEN debe especificarse de manera que las columnas se intercalen con las columnas del grupo 0. El campo ORDEN debe ser único en todo el reporte y representa el ordenamiento absoluto de columnas. Se recomienda utilizar: división & “.” & grupo, para que todas las columnas de una división queden juntas. El campo orden es de tipo TEXTO.

 
  'Preparo el rst de detalle, columnas 0 (Grupo default 0) : cuota
   Detail_grq.Init " select pf03.*, pw.* from " & _
                   " pre_form_03 pf03," & _
                   " pre_form_19 pf19," & _
                   " PRE_CUOT_07W_03_02_05 pw " & _
                   " where pw.rela_preform19 = pf19.id_preform19" & _
                   " and pf19.rela_preform03=pf03.id_movinsti  " & _
                   " and rela_periodo=" & General_GFF.ID_PreForm01
 
  'Preparo el rst del segundo detalle, columnas 1 (Grupo 1) : comprometido
   DetailGrupo1_grq.Init " select pf03.*, pw.* from " & _
                         " pre_form_03 pf03," & _
                         " pre_form_19 pf19," & _
                         " PRE_EJEC_20W_21_PC07_03_02_05 pw " & _
                         " where pw.rela_preform19 = pf19.id_preform19 " & _
                         " and pf19.rela_preform03=pf03.id_movinsti  " & _
                         " and rela_periodo=" & General_GFF.ID_PreForm01
 
 
   GrialCont.LoadData Cross_grq, CrossGrupo1_grq _
                     , Detail_grq, DetailGrupo1_grq
 
   With CrossTree
 
      .ReportTitle = SysFunc06_Ste.SelectedNodeRst!SYSFUNC06_DESCRI.Value
      .ReportSecondaryTitle = General_GFF.PreForm01_Descri
 
      'Como voy a usar grupos, le digo que caption ponerle al total por fila para
      'las columnas del grupo 0 (columnas 0 de cada division en este caso de dos grupos)
      'al final agrega una columna: “Totales Cuotas”
      .GroupTitle(0) = "Cuotas"
 
      .AddCrossRstGroup "Comprometido", 1, CrossGrupo1_grq.Rst, 1

Agrego el Grupo 1, especificando el caption para la columna de totales por fila, el numero de grupo (debe ser correlativo empezando de 1, el 0 es el grupo default), el Rst que contiene la definción para cada columna del grupo y en el ultimo parametro, “DeltaOrden”, una constante a agregar al campo “ORDEN” del rst. Se indica para facilitar el intercalado de columnas cuando se utiliza el mismo Rst de columnas para definir más de un grupo. Para este caso, por ejemplo, la columna de la cuota 1, tendrá un “ORDEN” de “1.0” para el grupo 0 (según el select del Cross_grq )y tendra un “ORDEN” de “1.1” para el grupo 1 (según el select del CrossGrupo1_grq mas la constante indicada en este comando). Con este calculo las columnas se intercalará: “1.0”,”1.1”,”2.0”,”2.1”,...

 
      .Prepare INSTITUCIONES_STE, _
                    tree_instit, _
                    "id_arbolinsti", _
                    Cross_grq.Rst, _
                    Detail_grq.Rst, _
                    "rela_arbolinsti", _
                    "id_precuot02", _
                    "precuot07_importe"
 
      'El comando prepare mantiene la compatibilidad con el modo normal de operación del Cross Tree (sin Grupos). 
      'En el comando prepare se indican los componentes del Grupo 0.
 
      .SumTotals
      'El metodo SumTotals, sumará los totales para las columnas del Grupo 0 (compatible con el modo de operación normal sin grupos)
 
      .SumGroupTotals 1, DetailGrupo1_grq.Rst _
                     , "rela_arbolinsti", "id_precuot02", "monto"
 
      'Luego debe invocarse al metodo SumGroupTotals, una vez por cada grupo que se desee sumar. 
      'Este comando sumará los totales para las columnas del Grupo 1.
 
      .DisplayTotals
      'El metodo DisplayTotals funciona de la misma manera con o sin grupos. 
      'Debe invocarse luego de todas las invocaciones a SumGroupTotals.
 
 
   End With




Controles Registrados

Herramientas personales