1.29.2005

Manejo Programático del PivotTable de OWC

Estoy trabajando en un proyecto que requiere un manejo programático de las tablas pivote de los OWC. Los OWC (Office Web Controls) son muy útiles en proyectos de inteligencia de negocios, ya que te permiten navegar una fuente de datos OLAP (también relacionales) de una manera sencilla.

Sin embargo, ¿cómo extraer los datos de la tabla pivote? En primera instancia, parecería que el control ActiveX tiene propiedades justo para eso como XMLData y Recordset. Sin embargo, encontré que XMLData únicamente guarda los parámetros de configuración del control y no los datos que muestra. Por otro lado, la propiedad Recordset nos da los datos, pero sin ninguna organización sobre como mostrarlos.

En este caso, lo que quiero es publicar la vista actual de un PivotTable de tal forma que esta sea consumible y básicamente manipulable en una PDA por una aplicación hecha en el .NET CF.

Para hacerlo, tuve que echarme un clavado dentro del modelo de objetos de los OWC. La verdad sea dicha, la documentación de estos controles deja mucho que desear por lo que hay que experimentar bastante.

Finalmente encontré como iterar las filas y columnas del control para obtener los datos celda por celda. Por suerte el performance es bastante decente.

Un problema mayor surgió cuando quise iterar sobre vistas que sólo tenían definidas filas, ya que aparentemente no existen columnas. Sin embargo, la propiedad ColumnAxis.ColumnMember permite acceder a la columna "oculta".

2 comentarios:

Anónimo dijo...

Que tal Héctor, Fijate que en el proyecto en el que estoy me han pedido que implemente este componente Pivote Table con Asp.Net. Hasta ahora ya he logrado visualizar la informacion contenida en un QBO y tambien visualizar MDX de entrada. Lo que ahora me piden es tener control sobre cada uno de los campos tanto de filas y columnas, y sobre que aparezcan totales o no. Tendras alguna informacion que me podria ayudar en esto?

HectorObregon dijo...

Hola,

Ya revisaste esta liga sobre docs?


Es sobre VB6 pero puedes iraduciendo los conceptos a .NET. Es fas facil si usas VB.NET porque en C# tienes que manejar a mano muchos tipos ocultos o parámetros inexistentes.