Usando DinamiCube en Visual FoxPro

March 27, 2018 | Author: mholiveros6439 | Category: Table (Database), Point And Click, Technology, Databases, Microsoft Excel


Comments



Description

Usando DinamiCube en Visual FoxProhttp://www.fpress.com/ Por Luis Guerra DC_Demo.zip El presente artículo está escrito con la intención de dar a los desarrolladores de Visual FoxPro una introducción e ideas para agregar a las aplicaciones que desarrollan capacidades de Consultas Dinámicas muy parecidas a las tablas pívot de Excel o a los cubos que se crean con los Servicios de nálisis de S!" Server #$$$ o similares% tambi&n llamados Cubos' Para lograr este ob(etivo )e usado el DynamiCube% que es un control ctive*' El control DynamiCube es un control que permite obtener y mostrar enormes cantidades de datos almacenados en bases de datos relacionales en una +orma resumida y tabulada que ayuda al usuario +inal a reali,ar decisiones precisas' "os datos num&ricos pueden ser obtenidos de m-ltiples Fuentes% tabulados% resumidos y presentados al usuario en un cubo multidimensional' El usuario +inal puede manipular la vista% mover dimensiones y cambiar el orden para responder me(or a sus necesidades de análisis' DynamiCube es n.dimensional y está limitado solamente por los recursos disponibles del entorno de la PC donde se e(ecuta' Cada dimensión consiste de un n-mero +inito de puntos de datos' Estos puntos de datos son usados para locali,ar un elemento de datos individual' Para poder simpli+icar algunas explicaciones% en algunos casos me voy a re+erir al control DynamiCube simplemente como cubo' En principio se va a crear un +ormulario y se le va pegar el control DynamiCube al mismo' El control aparece en la lista de controles como la clase DCube Class' /al como se ve en la +igura siguiente0 1na ve, seleccionado el control% )acemos clic en Ok y se mostrará el control como un rectángulo con +ondo blanco al cual le pondremos 2oleCube3 en la propiedad Name% tal como se puede observar en la siguiente +igura0 El control DynamiCube soporta varias tecnologías para acceder a datos' Para ver cuales son las tecnologías y cual deseamos usar )acemos clic secundario sobre el control y seleccionamos 2DCube Class Properties3% como observamos en la siguiente +igura0 Despu&s de lo cual se mostrará una ventana con varias páginas en la primera de las cuales se mostrará un combobox correspondiente al tipo de conexión 4Connection /ype5 con una lista de tecnologías que se pueden usar para acceder a datos' . o rápido de cómo se dise8aría el DynamiCube con una conexión 6D7C a una base de datos S!" Server #$$$ y cómo se vería0 Primero se de+ine el tipo de conexión% luego la cadena de conexión así como la instrucción SE"EC/.S!" que obtendrá los datos0 "uego está la página Time Series que permite de+inir algunos tipos de datos relacionados a +ec)as que podrían usarse como datos del cubo tales como a8o% trimestre% mes y semana' En este caso no se va a usar ninguno de esos campos% pero se muestra por cuestiones didácticas0 "uego% se de+inen los campos que se van a mostrar y su posición dentro del cubo% para esto se va a la página Layout y se pulsa el botón Retrieve Fields para que en la lista apare.Como se ve% se pueden usar varias tecnologías entre las que destacan 6D7C% D6 46"E D75 y D 6% además del modo Unbound que permite llenar los datos del cubo en tiempo de e(ecución' El modo 1nbound tiene la venta(a de que se puede llenar el cubo desde cualquier +uente de datos de que dispongamos en tiempo de e(ecución% pueden ser cursores% vistas% tablas% variables de memoria% arreglos% etc' "a desventa(a es que no se puede dise8ar el DynamiCube en tiempo de desarrollo% lo que sí se puede )acer con las otras tecnologías de acceso a datos tales como el 6D7C que permite crear una instrucción SE"EC/ en tiempo de desarrollo lo que es usado para dise8ar el cubo% esto se )ace en la página "ayout de la misma ventana de propiedades del DynamiCube y que +acilita enormemente el dise8o del mismo' Vamos a dar un vista.can todos los campos que el SE"EC/ )ace disponible% de los cuales se van a usar algunos% esto se )ace arrastrando el campo desde la lista )asta la posición deseada0 . ados que van a tener los campos en tiempo de e(ecución0 En la página Preferences% se puede cambiar el aspecto que va a tener el cubo% para lo cual )ay varios comboboxes y c)ec9boxes que corresponden a di+erentes partes del mismo y que sirven para darle un estilo personali.ado ante el usuario +inal% aunque desde mi punto de vista los valores predeterminados son buenos' .En la página Fields% se pueden cambiar los títulos o encabe. En la página Printer% se va a especi+icar el encabe.ados0 En la página Color% se pueden especi+icar los colores que van a tener di+erentes partes del DynamiCube% tales como colores de +ondo y de letras de los encabe.ado% pie de página% márgenes y (usti+icación cuando se imprima o se )aga una vista preliminar de la impresión% así como si se desea que se repitan en cada página los encabe.ados así como de los datos0 : por -ltimo en la página Fonts% se podrá especi+icar los tipos de letras para cada parte del cubo0 . "uego )acemos clic en el botón 69 y e(ecutamos el +ormulario% el cubo se verá más o menos de la siguiente +orma0 El usuario +inal puede mover los campos de un sitio a otro% es decir% )acer que los campos est&n como columnas% +ilas y.o páginas 4área superior del DynamiCube% tambi&n se le llama área de +iltro% más adelante veremos por qu&5% los campos de datos 4las cantidades5 no se pueden mover' De esa +orma el usuario puede construir varios reportes de acuerdo a cómo )aya distribuido los campos% por e(emplo% puede arrastrar el campo Mes )asta el área de los campos +ila% pero al costado derec)o del campo Cuenta% con lo cual el cubo se vería así0 . demás si se desea podemos cambiar el campo al área de campos de columna% con lo cual% el cubo quedaría así0 Pero eso no es todo% se pueden +iltrar los datos como sea necesario% por e(emplo podemos abrir el campo !o como un dropdo<n y se mostrarán los datos correspondientes% se mostrarán% en este caso% los a8os #$$# y #$$=0 . Si deseamos ver solamente los datos del a8o #$$#% quitamos el c)ec9 del a8o #$$= y luego )acemos clic en cualquier parte del cubo para que se cierre el dropdo<n y mostrar sólo los datos del a8o #$$#0 Similarmente% sí sólo deseamos ver los datos del primer semestre del a8o #$$#% basta con abrir el dropdo<n del campo Mes y quitar el c)ec9 de los meses correspondientes al segundo semestre0 . ules y +ondo verde claro% lo )acemos desde la ventana de propiedades del DynamiCube0 .El cubo se mostrará así0 Como se )a visto% se puede dise8ar cómo uno desea ver el cubo% en tiempo de desarrollo% todo desde la ventana de propiedades del DynamiCube' Para cada opción )ay una propiedad disponible que tambi&n se puede acceder mediante programación% aunque sería más complicado )acerlo así' "os resultados son muy buenos% por no decir excelentes' )ora volviendo al tema central de este artículo% nos concentraremos en el uso del DynamiCube en modo 1nbound para poder acceder a los datos desde una consulta de tablas VFP o desde un cursor VFP y reali.ar una rutina para llenar los datos del cubo' "o primero que se debe )acer es poner la propiedad uto:ield del ob(eto >VFP en +also para que el Dynamicube +uncione bien% 4esto sólo es necesario en el modo 1nbound5' Esto lo podemos )acer en el evento ?@?/ del Dynamicube0 >V+p' uto:ieldA 'F' "uego debemos poner la propiedad DCConnectTy"e en modo 1nbound y la propiedad utoDataRefres# en +also% lo -ltimo es para evitar que el DynamiCube intente cargar datos cuando se crea el control y se muestre un mensa(e de advertencia cuando se e(ecuta el +ormulario% esto es debido a que a-n no se )an creado los campos' Esto se puede )acer desde la ventana de propiedades de Visual FoxPro o mediante código en el evento $nit del control oleCube0 /)is'DCConnect/ypeA BB CC Dodo 1nbound' /)is' utoDataEe+res)A 'F' CC Evite que se muestre el mensa(e de advertencia' /ambi&n% si deseamos tener los encabe.ados con letras a. S!" y que tenga datos no.normali."os cuales equivalen a las propiedades FieldsForecolor y Fields%ackColor% lo que tambi&n se puede )acer mediante programación% naturalmente que en esta -ltima +orma se pueden especi+icar muc)os más colores que los disponibles en la ventana de propiedades% pero lo que se debe saber es el valor num&rico equivalente al color deseado' En este e(emplo vamos a usar la tabla D /6S'D7F% ya creada% la cual vamos a agregarla al entorno de datos del +ormulario' @o es necesario que sea una tabla% en aplicaciones reales% sería un cursor generado desde un SE"EC/.ados% en el evento $nit del +ormulario de la siguiente +orma0 .ados% similares a los necesarios para un reporte' "a tabla que vamos a usar tiene los siguientes datos0 "uego se va a armar la distribución de los campos% con sus encabe. Add( !re ion!# !'e i$n!# () && 'e i$n como columna.Datos.5arent. que se )an de+inido los campos% lo -nico que queda por )acer para completar la con+iguración% o me(or dic)o% la construcción del cubo% es llenar con los datos de la tabla que se acaba de mencionar' Esto se reali. This.ocal lnCampos# laDatos( () lnCampos./mero de campos en DynamiCube.** Crear los campos del DynamiCube.Add( !di"ision!# !Di"isi$n!# %) && Di"isi$n como &ila. With This.Datos.Datos.* && .Add'o3+x( 4laDatos) +nd0can "os valores que contiene el arreglo laDatos deben estar en el mismo orden en que se crearon los campos% de lo contrario% se pueden obtener resultados extra8os' Se usa el m&todo ddEo<Ex45 para agregar al DynamiCube los datos que se encuentran en el arreglo' )ora lo -ltimo que +alta para poder mostrar los datos es usar el m&todo Ee+res)Data45% el cual% al ser llamado% e(ecutará el código que se encuentra en el evento Fetc)Data45' En nuestro e(emplo se )a usado un botón que llama al m&todo Ee+res)Data45 para mostrar el DynamiCube0 This. .lena los "alores de los campos en el arre lo 1laDatos2.DeleteAll() && Borra todos los campos (si existe al uno). Dimension laDatos( lnCampos) 0elect Datos 0can ** . laDatos( ().oleCube. +ndWith 1na ve.Add( ! anancia!# !)anancia!# *) && )anancia como datos. anancia ** A re a los datos al DynamiCube.re ion laDatos( *).di"ision laDatos( %).'e&reshData() El +ormulario queda así0 .oleCube. .a a trav&s del evento Fetc)Data del DynamiCube% este evento sólo se dispara en modo 1nbound y cuando se e(ecuta el m&todo Ee+res)Data450 .Fields . . Se pueden mover los campos de tal manera que el DynamiCube quede así0 6 así0 . oleCube.Para tener una vista preliminar de cómo se imprimiría el cubo se usa el m&todo PrintPrevie<45% al +ormulario del e(emplo se le )a agregado un botón 2Vista preliminar3 el cual llama a dic)o m&todo de la siguiente manera0 This.5arent.5rint5re"ie3() "o cual mostrará una ventana como la siguiente0 . ar de página si es necesario y por -ltimo )acer un Foom de la vista preliminar' Si se desea imprimir el cubo sin )acer una vista previa se usa el m&todo Print45 el cual necesita tres parámetros0 el primero si es '/' 4verdadero5% indica que se desea mostrar una ventana de diálogo de impresión que permite cambiar la impresora predeterminada% si es 'F' 4+also5 no se muestra el diálogo y comien..G en el tercer parámetro% indica que se desea imprimir todas las páginas% estos parámetros son obviados si el primer parámetro es '/' 4verdadero5' Para llamar al m&todo Print45 en el botón% se )aría de la siguiente +orma0 This.a a imprimir directamente' "os dos restantes parámetros tambi&n son obligatorios e indican el primera y -ltima página que se van a imprimir% si se pone .F.aría inmediatamente a imprimir en la impresora predeterminada en ese momento' Para terminar% quiero decir que el DynamiCube puede ser expandido para incluir más dimensiones y más in+ormación de resumen' Provee in+ormación de soporte de decisión en un +ormato +lexible que los usuarios +inales pueden manipular y modi+icar de acuerdo a sus necesidades de análisis' 6tra de las venta(as es que no se necesita de un servidor 6" P o similar para tener la misma +uncionalidad y lo bueno es que solo es cuestión de pegar el control en un +ormulario y programarlo% tarea que se puede simpli+icar enormemente si se crea una clase que ya tenga toda la +uncionalidad descrita% lo cual solo )aga necesario indicar los campos% encabe.En la parte superior de la ventana )ay botones desde los cuales se puede ?mprimir% con+igurar la impresora y el tama8o de página% cambiar el anc)o y alto de las celdas% avan.# (# 6() "o cual comen.oleCube( .ados% distribución y nada más% la clase se encargaría de todo' Por e(emplo% yo )e creado una clase que uso en las aplicaciones que desarrollo que permite mostrar el cubo% tener una vista preliminar% imprimirlo y )asta exportarlo a una )o(a Excel' /odo eso es posible debido a que el modelo de ob(etos es completo y da un gran control sobre cada aspecto del cubo' "a versión actual del DynamiCube es la #'H'G'#' y )ay una nueva versión que es llamada ctiveCube = la cual es tambi&n una gran )erramienta e incluso soporta exportación a Excel en +orma nativa% la principal desventa(a% si se le puede llamar así% es que solamente soporta conectarse con servicios 6" P y aunque tiene un modo Unbound% de lo que )e investigado% no se puede )acer lo mismo que con el DynamiCube' Para los interesados% pueden descargar la versión de evaluación desde )ttp0.5arent.<<<'datadynamics'com% lo bueno es que las versiones de evaluación son completamente +uncionales pero sólo duran =$ días' Sin embargo% vale la pena investigar más a +ondo este control que es muy versátil' .
Copyright © 2024 DOKUMEN.SITE Inc.