23 mayo 2013

Uso de listas y gráficos

Hoy quisiera compartir con vosotros la solución a un pequeño "problema", se me pedía obtener una representación gráfica, con los accesos que se producen cada hora a la biblioteca, la idea es obtener un gráfico como el siguiente:



La "dificultad" estriba en cómo conseguir cargar la lista asociada de modo que contenga una sola fila, donde cada columna, toma su nombre de la fecha y hora, junto con su correspondiente valor. Los datos están recogidos en una tabla de Oracle. El código que da origen al gráfico mostrado es el siguiente:

Do iListaHora.$add()
Do tSQL.$execdirect("select to_char(TH_FECHAHORA,'YYYY-MM-DD HH24'),count(*) from TORNO_HISTORICO group by to_char(TH_FECHAHORA,'YYYY-MM-DD HH24') order by  to_char(TH_FECHAHORA,'YYYY-MM-DD HH24') DESC") Returns #F

If flag true
      Do tSQL.$fetchinto(iFechaHora,iCuenta) Returns lEstado
      While lEstado=kFetchOk
            Do iListaHora.$cols.$add(iFechaHora,kNumber,k0dp)
            Calculate iListaHora(iFechaHora,1) as iCuenta
            Do tSQL.$fetchinto(iFechaHora,iCuenta) Returns lEstado
      End While
End If

La notación "iListaHora.$cols.$add(iFechaHora,kNumber,k0dp)" permite ir añadiendo una nueva columna numérica por cada hora localizada en la tabla y para añadir su valor se usa el comando "Calculate iListaHora(iFechaHora,1) as iCuenta", y eso es todo, sencillo y efectivo.