Está en la página 1de 28

Graficas Estadísticas en VB.

NET 2010 con


instrucciones SQL
Para trabajar con graficas estadísticas en VB.NET 2010 y el objeto ChartControl, lo podemos realizar
utilizando:
 Cuadros de texto, ingresando el nombre de la serie y los puntos o valores para la seria.  
 Listas, creando una lista para las series y los valores. 
 Vectores o Arrays, alimentando la grafica a través de vectores que almacenan la información al
igual como lo haríamos mediante listas.
 Instrucciones SQL, crear una solicitud de datos mediante la instrucción Select-SQL, la cual la
ejecutamos mediante el objeto comando y almacenamos el resultado de registros en un DataReader, para
después enlazar estos datos con la grafica a través del método DataBindTable. Caso de estudio # 2 para
esta publicación. 
 Haciendo una compilación de los anteriores para enlazarlos en la grafica a través del método
DataBindCrossTable, el cual solicita el origen de datos del que alimentara la grafica, el nombre del
campo usado para agrupar los datos de la serie, nombre del campo para los valores X, lista separada por
comas de nombres de los campos para los valores Y; y otras propiedades de puntos de datos que se
pueden enlazar.
 ¿Cómo funciona el objeto ChartControl, al presentar una grafica estadística?
El objeto Chart Control está compuesto por una colección (tiene un comportamiento como los vectores o
array) de propiedades, métodos y eventos que permiten la construcción del mismo, entre ellos tenemos:
1. ChartAreas: Es de tipo colección permite crear la zona donde se visualizara el grafico, esta se
puede dividir en más de un área para colocar graficas en cada una de ellas. En el área del grafico se
puede configurar para mostrar en forma 3D o 2D mediante la propiedad Enable3DStyle. 
2. Series: Es de tipo colección, cada serie tiene la propiedad ChartType, que determina el tipo de
grafico que estará contenido en un ChartArea, los tipos de gráficos pueden ser, Pastel, Barras, Columnas,
Líneas, Áreas, Puntos y otros gráficos que soporta el objeto ChartControl. Las series se pueden agrupar
en un solo ChartArea para crear una grafica comparativa en tipos de grafico (Barras, Columnas, Líneas,
Áreas y Puntos). No puede adjuntar dos series en una grafica de tipo Pastel.
3. Las series en su interior tiene una colección de propiedades llamada puntos (Point, también una
colección), estos son los valores que toma la grafica si es de columnas seria la altura que mostrara la
barra. 
4. Titles: Es de tipo colección, que permite agregar el titulo a una grafica
Una colección tiene métodos Add, Clear que permiten agregar y limpiar el contenido de un array o
vector (en nuestro caso de estudio las propiedades  ChartAreas, Series, Point y Title son de tipo
coleccion; por tanto tienen metodos  Add y Clear)

¿Cómo enlazar un objeto ChartControl con un DataSet para crear una grafica?


El enlace de datos simple de una tabla a un control gráfico se puede lograr utilizando el
método Chart.DataBindTable (requiere que un esquema de tablas exista antes de hacer el enlace). Las
series y puntos se crean automáticamente y se agregan al controlgráfico basado en el número de
columnas del origen de datos.
Para este ejemplo usaremos una tabla de nombre Empresas, creada en Access, en esta tabla se almacena
la información de una ficha para encuesta de empresas, y tiene la siguiente estructura:
Nombre de tabla: Empresas
Campo Tipo
IdEmpresa Autonu
m
Propietario Texto
Empresa Texto
Telefono Numero
Celular Numero
Direccion Texto
Correo Texto
Actividad Texto Opción de selección única
Constituido Texto Actividad Comercial
Asociación Texto ¿Cómo está constituida?
¿Está dispuesto a asociarse con otros?
Financiamiento Texto ¿Tiene acceso al sistema financiero?
Asesoria Texto ¿Le han asesorado técnicamente?
Distribucion Texto ¿Conoce de canales de distribución?
Observaciones Texto
Turismo Si/No
Caficultura Si/No
Agroindustria Si/No
Ganaderia Si/No
Artesanias Si/No
Horticultura Si/No Opción de selección múltiple,
Pisicultura Si/No mediante CheckBox en el formulario
Ecoturismo Si/No
Apiario Si/No
Floricultura Si/No
Otros Si/No
Ninguno Si/No

Programar las graficas estadísticas para las preguntas ¿Cuál es la actividad comercial de la empresa?,
¿Cómo está constituida la empresa?, ¿Está dispuesto a asociarse con otras personas?, ¿Tiene acceso al
sistema financiero Nacional?, ¿Ha recibido asesoría técnica?, ¿Tiene conocimiento sobre canales de
distribución?; se debe escribir una instrucción SQL de resumen que obtiene el numero de respuestas de
esa pregunta (Select Actividad, count(Actividad) as Total from Empresas group by
Actividad), y se genera la fuente de datos para mostrar la grafica, este paso es igual para las demás
preguntas solo cambiando el nombre del campo.
Pero en las opciones de selección múltiple como lo es la pregunta ¿En qué otras actividades comerciales
desea invertir?, aquí se debe contar el número de empresas que han marcado por cada una de las
opciones, en casos como estos que se quiere crear la grafica estadística de “Actividades comerciales a
invertir”, se debe programar para alimentar el esquema de tablas en el DataSet de VB.NET, para
generar la grafica que muestre el número de empresas que piensan invertir en Turismo, Ecoturismo, etc..
Para tal fin comenzaremos por el formulario, las propiedades que deberá modificar serán:
Propiedad Valor
Name frmGraficaporActividades
MinimizeBox False
StartPosition CenterScreen
Text Grafica de Actividades comerciales a
invertir
Al Formulario agregue el objeto Button, del Cuadro de Herramientas, sección Controles comunes, y
cambie las siguientes propiedades:
Propiedad Valor
Name Cmdactualizar
Anchor Bottom, Right
Text Actualizar
La propiedad Anchor es para que el objeto al que se configura, mantenga la posición al maximizar o
restaurar el formulario.

El tipo de grafica a mostrar es pastel, al generar la grafica se mostraran los valores de cada categoría, el
objeto ChartControlcuenta con una propiedad dentro de las series para que los valores de la grafica se
muestren en porcentaje, pero la suma de este porcentaje no resulta en 100%, por tanto agregare un
código que permita esa opción, mientras tanto agregue un objeto CheckBoxdel Cuadro de
Herramientas, sección Controles comunes, y modifique las siguientes propiedades:
Propiedad Valor
Name chkPorcentajes
Anchor Bottom, Right
Text Ver Porcentajes
Cuando la propiedad Checked de este objeto se encuentre activada (True), entonces la grafica mostrara
los porcentajes representativos de cada pieza del pastel, ahora agregue el objeto Chart del Cuadro de
Herramientas, sección Datos, y modifique las propiedades:
Propiedad Valor
Name oGrafico
Anchor Top, Bottom, Left, Righ

Su formulario debe tener un aspecto como el de la siguiente imagen:

Ahora procederemos a configurar el conjunto de datos que alimentara la grafica, para esto abra
su DataSet, sino tiene uno haga el nuevo DataSet y le escribe el nombredsTablas, dentro del DataSet,
clic derecho en una zona limpia y selecciona Agregar/Table de Datos, al objeto nuevo que se ha creado
llámele EmpresasGrafico, cambiando la propiedad Name de la ventana de propiedades.
Luego haga clic derecho sobre la tabla creada y seleccionesAgregar/Columna, a la columna llámele
Categoria y su tipo de dato (DataType) será System.String todo desde la ventana de propiedades,
después de eso, haga clic derecho sobre la Columna Categoria y selecciona Agregar/Clave, se apareceré
una ventana en la cual deberá cambiar algunos datos como se muestra en la imagen.

Una vez hecha la clave principal, agregue una nueva columna y le llama Total, con tipo de
datoSystem.Int16.

Si no se configura la clave principal, no se podrá hacer uso del método Find( ) del objeto DataRow

La siguiente imagen muestra como deberá quedar su conjunto de datos dentro del DataSet.

Una vez configurado el formulario y la tabla dentro del conjunto de datos, procedemos a programar el
código para crear la grafica, pero recuerde que siempre, para programar se debe tener un camino a seguir
para llegar a la solución.

Cabe recordar que para generar las graficas donde la pregunta es selección única (en las respuestas), se
realiza con la instrucción SQL-Select ( Select Actividad, count(Actividad) as Total from
Empresas group by Actividad ), y esta creara una tabla de información para la grafica donde muestra:
Actividad Total
Si ##
Pero para construir nuestra grafica de Actividades comerciales a invertir, nuestra tabla de datos deberá
quedar formada de la siguiente forma:
Categoria Total
Turismo ##
Caficultur ##
a
Ganaderia ##
. .
. .
. .
Para crear una tabla de información con los datos anteriores, usaremos la instrucción SQL-Select
(Select Turismo, count(Turismo) as Total from Empresas group by Turismo ), y los datos
devueltos por esta instrucción se almacenaran en la tabla del DataSet, EmpresasGrafico, y luego
continuaremos de la misma forma solo que cambiando la actividad comercial, todo esto se puede hacer
manualmente, pero ¿Cómo actualizar los datos del grafico cuando se agregue nueva información a la
tabla?, si se está construyendo una aplicación, se debe de programar todo el código necesario para
construir la grafica, y para ello seguiremos un procedimiento o secuencia de pasos que nos ayudaran a
formar nuestra grafica estadística.
1.      Realizar un array o vector donde se almacenen todos los rubros (Turismo, Caficultura, …)
2.      Crear un ciclo repetitivo que recorra el array o vector de los rubros.
2.1.   Crear una instrucción SQL-Select que obtenga los datos de cada uno de los rubros por separado.
2.2.   Alimentar los datos del DataSet con los datos devueltos por la instrucción SQL-Select de cada rubro.
3.      Generar la grafica.

Procedimiento:
Haga clic derecho sobre el formulario y seleccione la opción Ver Código, y antes del
comando Public ClassfrmGraficaporActividades, presione la tecla ENTER y escriba
Imports System.Data.OleDb
Esta línea de código es para adjuntar referencias a la librería de clases OleDb, la cual nos permite objetos
para trabajar con tablas de Access.

Durante el procedimiento haremos uso del Objeto DataRow, el cual representa una fila primaria de una
tabla, a la cual se le pueden asignar valores para agregar o actualizar en la tabla. Un DataRow tiene una
estructura de la tabla, en nuestro caso de la tabla EmpresasGrafico, y se representa de la siguiente forma:
Categoria Total
Información que guarda
el DataRow

 Luego presione las teclas Shift + F7, para ir a la parte grafica del formulario, y estando aquí, haga doble
clic sobre el botón actualizar y escriba el siguiente código:

'Crear la cadena de conexion y abrir una conexion de datos con la BD Empresas


Dim Cadena As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=C:\IIIBTC_2012\Registro_de_Empresas.accdb"
Dim oConexion As New OleDbConnection(Cadena)
oConexion.Open()

'Limpiar el contenido del DataSet para la nueva informacion


DsTablas.EmpresasGrafico.Clear()

'Paso 1, Array con todos los rubros


Dim aRubros As String() =
{"Turismo", "Caficultura", "Ganaderia", "Artesanias", "Horticultura", "Pisicultura", "Ecoturismo","A
piario", "Floricultura", "Otros", "Ninguno"}

'Variable para estar cambiando la instrucción SQL


Dim cSQL As String = ""
'Paso 2, Ciclo repetitivo que recorre el array
For i As Integer = 0 To aRubros.Length - 1
  'Paso 2.1, Crear un Select para obtener los datos segun cada rubro
   cSQL = "Select " & aRubros(i) & ", count(" & aRubros(i) & ") as Total from Empresas where " &
aRubros(i) & "= true group by " & aRubros(i)
   Dim oComando As New OleDbCommand(cSQL, oConexion)
   Dim lector As OleDbDataReader = oComando.ExecuteReader
   'El objeto DataRow es usado para representar una fila primaria, en nuestro caso con la
   'estructura de la tabla EmpresasGrafico, para las columnas Categoria y Total
   Dim Fila As DataRow = DsTablas.EmpresasGrafico.NewRow
   If lector.Read Then
      If lector("Total") <> 0 Then
         'Asignar los valores a cada campo, el del Rubro y # Total para ese rubro
          Fila("Categoria") = aRubros(i)
         Fila("Total") = lector("Total")
         'Paso 2.2 Alimentar el DataSet con los datos de cada rubro
         DsTablas.EmpresasGrafico.Rows.Add(Fila)
         'Guardar los valores y convertirlos a porcentajes si así se desea
         Valores(i) = lector("Total")
         'Esta variable fue creada como array después de la declaración Public Class
      End If 'End if para la condición lector(“Total”)<> 0
   End If  'End if para la condición lector.Read()
Next

'Aplicar cambios al DataSet


DsTablas.EmpresasGrafico.AcceptChanges()

'Cerrar conexión de datos


oConexion.Close()

'Limpiar el contenido del grafico antes de enlazar con los nuevos datos
oGrafico.Series.Clear()
oGrafico.Titles.Clear()

'Activar las opciones para visualizar la grafica en 3D


oGrafico.ChartAreas(0).Area3DStyle.Enable3D = True

'Agregar el titulo de la grafica


oGrafico.Titles.Add("Otras actividades comerciales a invertir")

'Cambiar el tipo de letra para la grafica


oGrafico.Titles(0).Font = New Font("Tahoma", 15, FontStyle.Bold)

'Cambiar opciones de rotación y profundidad de la grafica en 3D


oGrafico.ChartAreas(0).Area3DStyle.Rotation = 20
oGrafico.ChartAreas(0).Area3DStyle.PointDepth = 75
oGrafico.ChartAreas(0).Area3DStyle.PointGapDepth = 35

'Paso 3, Generar la grafica, enlazando a través del método DataBindTable


oGrafico.DataBindTable(EmpresasGraficoBindingSource, "Categoria")
'EmpresasGraficoBindingSource proporciona el enlace a de datos a la grafica
' ”Categoria”, permite dar el nombre a cada pieza del pastel
'además que estas categorías son mostradas como rótulos en la leyenda de la grafica

'Cambiar el tipo de grafico a Pastel


oGrafico.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Pie

'Mostrar como etiqueta de datos, los valores totales que alimentan la grafica
oGrafico.Series(0).IsValueShownAsLabel = True

La declaración del Array Valores, esta creada de la siguiente forma, y usted la deberá ubicar en el lugar
que le corresponde como se muestra en la imagen
Creo que explicar cada línea de código del botón Actualizar seria redundante, debido a que rotule cada
una Asi que solo explicara la

Como el usuario puede pedir que se muestren los porcentajes que representa cada pieza del pastel, se
agrego el CheckBox Ver Porcentajes para tal fin, vuelva a la parte grafica del formulario (Shift + F7) y
haga doble clic sobre el CheckBox Ver Porcentajes, y en el editor de código escriba las siguientes
líneas:

Dim aRubros As String() =
{"Turismo", "Caficultura", "Ganaderia", "Artesanias", "Horticultura", "Pisicultura", "Ecoturismo","A
piario", "Floricultura", "Otros", "Ninguno"}

Dim Sumatoria As Integer = 0
'Obtener 1ro una sumatoria de todos los valores visualizados en la grafica
For i As Integer = 0 To Valores.Count - 1
    Sumatoria += Valores(i)
Next
If chkPocentajes.Checked = True Then
   'Se trabajara con la actualizacion de los totales en el dataset
   For i As Integer = 0 To aRubros.Count - 1
       Dim Fila As DataRow
       'Se buscara cada uno de los rubros para obtener el porcentaje que representa
       ' en la grafica, para eso se hizo la clave principal Categoria
       Fila = DsTablas.EmpresasGrafico.Rows.Find(aRubros(i))
       If Fila IsNot Nothing Then
'Si se ha encontrado la categoria, entonces se calcula el porcentaje
          Fila("Total") = (Int(Fila("Total")) / Sumatoria) * 100
       End If
   Next
   oGrafico.Series.Clear()
   oGrafico.Titles.Clear()
   oGrafico.ChartAreas(0).Area3DStyle.Enable3D = True
   oGrafico.Titles.Add("Otras actividades comerciales a invertir, valores en porcentajes")
   oGrafico.Titles(0).Font = New Font("Tahoma", 15, FontStyle.Bold)
   oGrafico.ChartAreas(0).Area3DStyle.Rotation = 20
   oGrafico.ChartAreas(0).Area3DStyle.PointDepth = 75
   oGrafico.ChartAreas(0).Area3DStyle.PointGapDepth = 35
   DsTablas.EmpresasGrafico.AcceptChanges()
   oGrafico.DataBindTable(EmpresasGraficoBindingSource, "Categoria")
   oGrafico.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Pie
   oGrafico.Series(0).IsValueShownAsLabel = True
Else
   Call cmdActualizar_Click(Nothing, Nothing)
  'Si el usuario no quiere porcentajes, se hace el llamado del evento clic del botón Actualizar
End If

Ahora si, usted puede compilar su formulario presionando la combinacion de teclas Ctrl +


F5, siempre utilice esta combinacion de teclas para compilar y ejecutar su formulario, ya
que si solo presiona F5 su formulario no sera compilado y puede que se esten produciendo
errores de los que no se dara cuenta.

Ademas recuerde estas lineas de codigo pueden variar, es importante que usted sepa lo que
está haciendo o tratando de hacer con cada una de ellas, ya que ningun programa es igual
con otro, al igual que las soluciones con las operaciones matemáticas, existen muchos
caminos para llegar a la solucion, solo es que usted elija el indicado.

Reportes Gráficos en VB .NET


Hola  a todos compañeros. este es mi primer articulo, y el tema que escojí
para inaugurar mi blog, es sobre el tema de gráficos estadísticos en VB .NET. ya que es
un tema que considero importante en el desarrollo de software,  sobre todo a la hora de
presentar información importante para la toma de decisiones.

La información que se pretende plasmar en el gráfico, es de un escenario común, 


mostrar en forma grafica las  ventas por sucursales para un determinado año.

Bien para eso necesitamos  arrastrar de la toolbox en control Chart, hacia el formulario
respectivo
Luego de Eso programamos el evento Load del formulario.

Primero obtenemos los datos a representar en el gráfico y que servirán como Origen de


Datos, para simplicidad del caso, hemos usado el objeto Data Table, pero
perfectamente se puso haber usado List. Otro punto También es que en la query por
defecto  el  año  2012,  perfectamente se pudo usar parámetros y llenar el gráfico en
tiempo de ejecución, pero por simplicidad deje el  año en forma estática.

Luego de eso Agregamos la Lógica respectiva referente al Grafico, como son:  el tipo
de gráfico a usar.   si se muestra en 3 D, los valores para los ejes X, Y, entre otras
propiedades. Una observación importante, el objeto grafico, hace referencia al control
que arrastramos desde la toolbox.
Si ejecutamos la aplicación, nuestro gráfico tendrá el siguiente aspecto:
SI bien es cierto que este ejemplo es relativamente sencillo, se puede mejorar en varios
aspectos, como por ejemplo el gráfico puede ser dinámico,  se puede usar otro tipo
de gráficos  como puede ser el de Lineas para obtener tendencias, etc. Sin embargo
espero que con este ejemplo sirva para poder tener una referencia para cuando se vean
con la necesidad de usar gráficos en nuestro desarrollo. El control chart tiene otras
propiedades interesantes que perfectamente pueden estudiar.

Pasos para crear un Reporte y una Grafica en Visual Basic.net

Pasos para crear nuestro reporte en


visual.net
Quiero mostrarles en esta oportunidad cómo crear un reporte en visual BASIC .net
utilizando el control reportView. 
Lo primero que necesitamos es crear una conexión a una base de datos, y lo
haremos de la siguiente manera: Desde el explorador de servidores puedes
activarlo desde el menú Ver/Explorador de Servidores [Crtl+Alt+S]), creamos una
nueva conexión. Seleccionamos archivos de datos de acces como se ve en la
imagen:
 Luego proporcionamos nuestra base de datos damos clic en examinar
Seleccionamos nuestra base de datos de Access y damos clic en abrir

Elegir objetos de nuestra tabla de base de datos


Damos clic en finalizar.

Diseñamos nuestro informe 


Hacemos clic derecho en reporte insertar cuadro de texto   para escribir el titulo del
informe o reporte, después de  haber puesto el titulo del reporte, damos click derecho
insertar tabla insertamos los campos que queremos visualizar en nuestro reporte.

También podemos cambiar la perspectiva de nuestro texto en las propiedades. podemos


cambiar el  color y el estilo de letra de nuestro texto.

Ejecutamos nuestro reporte con F5 para ver los campos ingresados en nuestra conexión
desde la base de datos en Access
 Hemos finalizado nuestro Reporte.

Pasos para crear nuestra grafica en


visual.net
Clic derecho en nuestro proyecto que está en la barra de explorador de soluciones damos
clic agregar nuevo formulario lo nombramos como frmgrafico 
 en el cuadro de herramientas damos clic en el objeto chart  y lo pegamos dentro de
nuestro formulario. Se vera de la siguiente manera como se muestra en la imagen.
      
Cambiamos en nombre en la barra de propiedades en (name) lo nombraremos como
ografic

Pegamos un botón ( button) lo llamaremos actulizar cambiamos la propiedad el text a


actualizar el name a cmdactualizar.
Colocamos un label y lo nombremos en la propiedad text como tipo de grafica.
Pegamos un combo box en el formulario y cambiamos la propiedad dropdownstyle a
dropdownlist nombramos la propiedad name como cmbtipo. De ahí damos clic en la
flechita de la esquina del combo box en editar elementos.

Pondremos los tipos de grafica


Damos doble clic en actualizar y programamos nuestra ruta de base de datos desde que
unidad se está trabajando 
Imports System.Data.OleDb

Public Class frmGrafico

    Public cadena As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data


Source=g:\myproject\productos.accdb"

    Private Sub cmdActualizar_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles cmdactualizar.Click

        Dim cSQL As String = "Select puesto, count(precio) as total from productos
group by modelo"

        Dim oconexion As New OleDbConnection(cadena)

        oconexion.Open()

        Dim comando As New OleDbCommand(cSQL, oconexion)

        Dim lector As OleDbDataReader = comando.ExecuteReader

        'Limpiar grafica anterior

        oGrafico.ChartAreas.Clear()

        oGrafico.Series.Clear()

        oGrafico.Titles.Clear()

        'Agregar una area, titulo y tamaño del titulo a la grafica

        oGrafico.ChartAreas.Add(0)

        ografico.Titles.Add("Numero de modelo por nombre")

        oGrafico.Titles(0).Font = New Font("Garamond", 18, FontStyle.Bold)

        'Enlazar la grafica con los datos obtenidos mediante la SQL

        ografico.DataBindTable(lector, "precio")

        oGrafico.Series(0).IsValueShownAsLabel = True

        oGrafico.ChartAreas(0).Area3DStyle.Enable3D = True

        cmbtipo.Enabled = True

        oconexion.Close()

Después programamos nuestro combo box. Aquí programamos para visualizar los
distintos tipos de grafica.
    Private Sub cmbtipo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles cmbtipo.SelectedIndexChanged

        Select Case cmbtipo.SelectedIndex

            Case 0

                ografico.Series(0).ChartType =
DataVisualization.Charting.SeriesChartType.Area

            Case 1

                ografico.Series(0).ChartType =
DataVisualization.Charting.SeriesChartType.Bar

            Case 2

                ografico.Series(0).ChartType =
DataVisualization.Charting.SeriesChartType.Column

            Case 3

                ografico.Series(0).ChartType =
DataVisualization.Charting.SeriesChartType.Pie

            Case 4

                ografico.Series(0).ChartType =
DataVisualization.Charting.SeriesChartType.Point

            Case Else

                ografico.Series(0).ChartType =
DataVisualization.Charting.SeriesChartType.Line

        End Select

    End Sub

End Class
.

Después de programarlo ejecutamos nuestro formulario F5.al ejecutarse se da clic en


actualizar
Podemos elegir con nuestro combo box distintos tipos de grafica.
GRAFICA DE BARRA

GRAFICA DE COLUMNAS
GRAFICA DE PASTEL

GRAFICA DE PUNTOS
Hemos finalizado nuestra grafica espero que este tutorial les sea de gran ayuda para sus
trabajos en visual basic.net

También podría gustarte