sábado, 3 de marzo de 2012

Creación de Gráficas Estadísticas en VB.NET

Escrito por : Kelly Garay



La creación de graficas en .Net se puede realizar de dos formas Ingresando Datos Directamente en el formulario o solicitando datos Directamente de una base de datos.
En este caso Generaremos uso de tres Graficas Solicitando datos específicos de una base de datos. El cual recuperaremos los datos estableciendo una conexión hacia una base de datos de manera escrita así también como atreves de instrucciones SQL.











Para la construcción de ella lo primero que tendremos que tener es nuestro diseño de formulario en el cual se contendrán dos botones de comando uno para actualizar los datos que se registren en la base de datos y uno para cerrar la aplicación , seguido de combobox  en el cual se contendrán una serie de opciones para la visualización de la grafica, para y para insertar una grafica en el formulario utilizaremos la ayuda de un objeto

ChartControl que es el que nos visualizara la grafica  al momento de ejecutarla. Para que esto se vea un poco más ordenado necesitaremos la ayuda de un objeto contenedor llamado Groupbox que es que contendrá a los botones de comando y así mismo al combobox. Cada uno de estos objetos contiene una propiedad llamada Text el cual sirve o se encarga de contener el nombre dado para cada uno de los objetos. 

Una vez terminado de pegar los controles al formulario pasamos a programar nuestro formulario.
Como primer paso para la programación de el nos iremos a la parte de arriba del código antes Public class ahí  lo que haremos es importar una librería de Oledb que es la que nos permitirá hacer los distintos llamados a los objetos de Oledb los cuales nos permitirán una conexión, una lectura de datos y una capturacion de datos para la visualización de la información de la tabla. Seguidamente de eso pasaremos a crear lo que es la variable que nos traerá la instrucción de conexión, una vez realizada la instrucción y verificando que esta ruta funcione pasaremos a programar lo demás.

Empezáremos por el botón salir en el cual se hará un llamado a la función close( ) el cual mediante al hacer click sobre el su código se desencadenara y cerrara  el formulario. Para la creación de la primer grafica nos iremos al botón actualizar ahí declararemos una variable  cSQL que es la variable que contendrá la instrucción SQL select que es la que nos servirá para la selección de información en la base de datos, la cual presentara el número de estudiantes por colegio ,luego establecemos una variable de conexión y le enviamos nuestra cadena ya antes establecida,  abrimos nuestra conexión mediante la función open(), creamos una variable de comando y le enviamos nuestra instrucción SQL y apertura de la conexión oconec.
Una vez creado todo esto lo que nos falta es obtener una lectura de datos, para eso lo que hacemos es que declaramos una variable lec mediante el objeto oledbdatareader el cual será igual al comando enviado con la instrucción SQl y un lector. Seguidamente de esto pasaremos a hacer lo siguiente
        ograf1.ChartAreas.Clear()
        ograf1.Titles.Clear()
        ograf1.Series.Clear()
        ograf1.ChartAreas.Add(0)
        ograf1.Titles.Add("Número de Estudiantes por colegio")
        ograf1.Titles(0).Font = New Font("Cambria", 14, FontStyle.Bold)
        ograf1.DataBindTable(lec, "Colegio")

En este paso lo que haremos será hacer un llamado al objeto ograf1 el cual se está refiriendo al primer grafico así mismo a la propiedad chartareas  y a la función Clear( ), esto lo que hará es que limpiara las aéreas que se contengan en la grafica; de esta manera hacemos lo mismo para los títulos y las series de la grafica. Seguido de esto hacemos pasamos a agregar un area y agregar un titulo El cual llevara por nombre Numero de estudiantes por colegios.
Establecemos la fuente del título el cual será Cambria número 14 en negrita, luego volvemos a hacer un llamado a la grafica mas la función  DatabindTable que es la que nos ayudara a llenar la grafica con los datos de una tabla y escribimos dentro de ella (lec, “Colegio”) a esto nos referimos que colocaremos la variable del lector que habíamos hecho anteriormente y entre paréntesis la tabla de nuestros datos.
Luego escribiremos lo siguiente:     
  ograf1.Series(0).IsValueShownAsLabel = True
                  ograf1.ChartAreas(0).Area3DStyle.Enable3D = True
                 cmb1.Enabled = True


Con eso lo que estaremos haciendo es  verificando que si va a mostrar el valor de punto en los datos de una etiqueta y lo dejaremos en verdadero. En la Siguiente línea lo que estamos haciendo es implementando  3D para todas las series del grafico mas habilitando la opción de 3D. Habilitamos así mismo el Combobox y finalmente cerramos la conexión.Este mismo Paso lo Seguiremos Para la grafica Numero Dos con la diferencia de que a los nombres de las variables las llamaremos
oconexion2 , cSQL2 y así para las demás variables declaradas, en esta grafica también cambiara lo que será la instrucción SQL Select ya que será del número de estudiantes por carrera, como también cambiara lo que será el nombre del título del grafico. Para la grafica número tres Aremos exactamente lo mismo que 


en la grafica dos, Cambiaremos nombres de variables, la instrucción SQL que será del número de alumnos por jornada y así mismo con el título del grafico. Una vez terminado de programar el botón actualizar pasamos a programar el combobox  que en este casi le emos llamado cmb1 en esta sección lo que haremos es una selección de casos  


atravez del select case seguidamente del nombre del combobox mas la propiedad SelectedIndex que es la que especifica el índice del elemento seleccionado, en el primer caso haremos el llamado a la objeto grafico mas la serie que es la que nos especificara  el objeto seguidamente de la propiedad chartype que es la que especifica el tipo de grafico elegido para una serie igual conjunto de propiedades DataVisualization.Charting.SeriesChartType.Column que será el tipo de visualización de la grafica que escogeremos , asi mismo para la grafica dos y tres. En el caso 1 , caso2, caso3 haremos el mismo procedimiento lo único que el tipo de grafica serán de point para la segunda, bar para la tercera y de line para la cuarta opción del caso. Cerramos el caso con un End Case y finalizamos la programación de nuestra graficas ahora lo único que queda es ejecutar nuestra grafica y ver el resultado de cada una de ellas. Quedara Algo de esta manera:





5 comentarios:

  1. La primera foto de codigo donde se muestra cSQL1 no se puede mostrar ampliada, como las del codigo cSQL2 y cSQL3, ademas en la explicacion del cSQL1 comienza solo menciona como los enlaza, pero no indica como hizo antes para obtener los datos y luego enlazarlo, en este caso debo ir a leer el codigo para la 2da y 3ra grafica para reparar la primera.

    ResponderEliminar
  2. El codigo es el siguiente

    Dim cSQL As String = "Select Colegio, sum(Mujeres + Varones) as total from Colegios group by Colegio"
    Dim oconec As New OleDbConnection(cadena)
    oconec.Open()
    Dim comand As New OleDbCommand(cSQL, oconec)
    Dim lec As OleDbDataReader = comand.ExecuteReader
    ograf1.ChartAreas.Clear()
    ograf1.Titles.Clear()
    ograf1.Series.Clear()
    ograf1.ChartAreas.Add(0)
    ograf1.Titles.Add("Número de Estudiantes por colegio")
    ograf1.Titles(0).Font = New Font("Cambria", 14, FontStyle.Bold)
    ograf1.DataBindTable(lec, "Colegio")
    ograf1.Series(0).IsValueShownAsLabel = True
    ograf1.ChartAreas(0).Area3DStyle.Enable3D = True
    cmb1.Enabled = True
    oconec.Close()

    como obtube los datos.
    Primeramente con Una instrucción SQL Select la cual ejecute a traves de un objeto command y le di lectura a traves de un objeto dataReader

    Como Enlaze la informacion.
    Hice un llamado al objeto grafico seguido del DataBindTable que es el que me permite un enlace de un valor, El valor que se le dio fue la lectura de datos y que en el se mostraran los colegios.

    ResponderEliminar
  3. y ese mismo paso para Las dos Graficas restantes Y la Hora de enlazar la informacion Solo se cambia el tipo De informacion que se quiera mostrar como la jornada o la Carrera.

    ResponderEliminar
  4. es lo mismo y si se ven las imagenes, buen ejemplo :D se agradece, pero tengo un problema, no se si me puedas ayudar
    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/931f7c9a-92f6-4559-84b7-32375879d5bb

    ResponderEliminar
  5. Hola estaba viendo tu ejemplo y no veo la estructura de la base de datos ni de la tabla o tablas que posee

    ResponderEliminar