martes, junio 28, 2005

Creación de un reporte mediante Script VB

El siguiente código genera un reporte que tiene todas las provincias como filas, y todas las categorías de la dimensión Ventas como columnas (obj.Columns.Item(1))

*********************************************
1 Dim objSet obj = CreateObject("CognosPowerPlay.Report")
2 obj.Open("D:\001Proyectos\ReportCN_mv.ppr")
3 obj.ExplorerMode = false
4 obj.Rows.Remove
5 dim listCat
6 set listCat = obj.CategoryList()
7
8 listCat.Add 3, "Ubigeo", "Departamento", "Provincia"
9 obj.Rows.Add listCat
10
11 If obj.Columns.Item(1).CanDrillDown Then
12 obj.Columns.Item(1).DrillDown
13 End If
14
15 obj.Save
16 obj.Close
17 Set obj = Nothing
*********************************************

Para este ejemplo se plantea que se tiene un reporte con solo un registro habilitado, que en realidad es una medida (Measure) que corresponde a las ventas (Venta).

Descripción:
============
1.- Se crea el objeto de tipo Reporte.
2.- Se abre el reporte existente
3.- ExplorerMode, si es Verdadero se restringe algunas funciones del reporte, si es falso se habilitan todas las funciones y propiedades en el reporte.
4.- Borramos todas las filas del reporte.
5.- Definimos un objeto de una lista de categorías.
6.- Pasamos al objeto la lista de categorías del objeto reporte.
8.- Agregamos a la lista de categorías todas las categorias que pertenecen al nivel de "Provincia" de la dimensión Ubigeo. objetoCategoriaLista.Add recibe de parámetros el número del nivel y los nombres de las categorías hasta donde se quiere llegar.
9.- Adicionamos la lista de categorías al reporte.
11.- Verificamos si se puede realizar un drill down en la dimensión, o nivel, que existe en el reporte.
12.- Realizamos el DrilDown en ese nivel. DrillDown despliega todas las categorías que existen en el nivel especificado.
15.- Guardamos el reporte. Save guarda el reporte actual, tal y como está definida al momento de abrir el reporte.
16.- Se cierra el objeto reporte.

lunes, junio 27, 2005

Modificar un Reporte existente mediante VB Script

Se tiene un reporte y se desea agregar una dimensión al reporte:
Tenemos el siguiente scripts (*.vbs):

'Abrimos un reporte vacio y lo sobreescribimos
Dim obj
Set obj = CreateObject("CognosPowerPlay.Report")
'Abrimos el reporte
obj.Open("D:\001Proyectos\MyNewReport.ppr")
'Declaramos modo de uso
obj.ExplorerMode = false
'Declaramos una lista de categorias
dim listCat
set listCat = obj.CategoryList()
'Adicionamos la dimensión a la lista
listCat.Add 1, "Tiempo"
'Adicionamos la lista al reporte
obj.Columns.Add listCat
'Guardamos el reporte
obj.Save
obj.Close
Set obj = Nothing

En el ejemplo tenemos:
CreateObject("Nombre") .- Declaramos que el objeto a crearse es del tipo Reporte ("CognosPowerPlay.Report")
Open(ruta) .- Esta función es propia de un objeto de tipo reporte y abre el reporte que se especifica en la ruta.
ExplorerMode .- Define como se hará uso el reporte. Si es Verdadero, el reporte estará limitado en algunas funciones, si es Falso, el reporte tiene todos los métodos y propiedades habilitados.
CategoryList .- Permite crear un objeto de tipo "Lista de categorias" en la cual se pueden agregar distintas categorias de las dimensiones de un cubo.
listCat.Add 1, "Tiempo".- Agregamos en la lista la dimensión "Tiempo". El número 1 especifíca el nivel donde en que se encuentra el nombre especificado. En este caso tendremos q se adiciona al reporte los años 2003 y 2004 que son las categorias (hijos) en que se abre "Tiempo" (que está en el nivel 1).
Columns.Add listCat .- Con esta función agregamos la lista de categorias, con los cambios respectivos, como columnas al reporte.
obj.Save .- Grabamos el reporte. En este caso sobreescribimos el reporte existente, para cambiar el nombre o ruta existe la función SaveAs.