jueves, 5 de septiembre de 2019



Descripción del módulo a realizar:
Se estará desarrollando una gráfica estadística en C#  usando el objeto CharControl que muestre  los grupos de productos que existen en una fruteria ordenados por su precio, para esto estaremos extrayendo datos de una tabla de nuestra base de datos de MySql, para que sean mostrados en nuestra gráfica.
Objetivos:
  1.Implementar la programación en C# orientada a objetos.
  2.Aprender a Ordenar datos múltiples de una tabla con muchos registros.
 3.Crear gráficas estadísticas en C# utilizando el objeto CharControl.
Conocimientos previos:
 1.Tener conocimientos sobre la programación en C# orientada a objetos.
 2.Manejar la instrucción SQL como los comandos select y las funciones de agregado.
 3.Tener conocimientos sobre la clase de programación.
 4.Entender los llamados de las librerías de MySql.
 5.Conocer cómo hacer los llamados de los elementos a una gráfica con CharControl.

Conceptos Básicos
Objeto CharControl:  Es el objeto contenedor de toda la gráfica, que contiene el título de la gráfica, el área, las series, leyendas marcas y otros elementos.


Desarrollo de los contenidos:
1. Abrir visual studio, antes de todo modificar el dataset creando una nueva tabla correspondiente a los datos a mostrar en nuestra gráfica.
2. Crear un nuevo formulario en nuestro proyecto que utilizaremos para cargar nuestra gráfica.
2. Pegar del cuadro de herramientas el objeto ChartControl.
3. Pegar los dos botones que ejecutaran las acciones de actualizar y cerrar en el formulario de la gráfica.

4. Escribir en el botón actualizar los parámetros: de conexión con la base de datos, solicitud específica de datos y la configuración de los elementos de la gráfica.

Pasos a seguir para realizar una gráfica estadística en C# utilizando Chart Control

Debemos primero abrir visual studio, nos remitiremos al crud de la fruteria de las publicaciones anteriores. Antes que nada, lo primero que hacemos es modificar nuestro origen de datos o, para ello nos vamos a nuestro dataset ya creado, damos click derecho y agregamos una tabla de datos.
Hecho esto le damos el nombre de Productos a nuestra tabla y usando la combinación de teclas Ctrl + L insertamos dos columnas más, una se va a llamar producto y va quedar de tipo String, la segunda fila se va a llamar Total y le asignamos un tipo de dato System.Int16, tal como muestra la imagen. Hasta aquí ya configuramos el origen de datos.

Lo que hacemos luego es crear un nuevo formulario en nuestro proyecto que utilizaremos para realizar nuestra gráfica, para esto hacemos click derecho en nuestro proyecto y agregamos un nuevo Windows Form.

Le damos el nombre de frmGraf_mercado al formulario que estamos agregando

Ahora en la propiedad text le damos un nombre al título de nuestro formulario y también le damos la propiedad Maximized en la sección WindowState.
Luego nos vamos al cuadro de herramientas y en la sección de datos seleccionamos el objeto Chart y lo pegamos en el formulario.

Hecho esto le damos un click encima del objeto Chart, en la ventana de las propiedades nos vamos a la sección name y lo nombramos como mGrafico, aquí mismo nos vamos a la propiedad anchor y seleccionamos los cuatro lados del objeto de la manera que se muestra en la imagen. Esto lo hacemos para que el objeto se adapte a toda el área del formulario, de manera que cuando agrandemos nuestro formulario se agrande todo el objeto Chart de manera automática.


Luego pegamos dos botones del cuadro de herramientas, al primer botón en la propiedad de text, le damos el título de Actualizar y lo nombramos como(btnActualizar) en la propiedad de name, al segundo botón le damos el título de Cerrar y también lo nombramos como (btnCerrar). 

Una vez hecho esto seleccionamos los dos botones y nos vamos a la propiedad Anchor, aquí solo dejamos marcados los lados de abajo y derecho, tal como se muestra en la imagen, esto nos sirve para cuando ampliemos nuestro formulario, los botones se mantengan en su lugar y no se agranden distorsionando su tamaño.
Ahora entonces damos doble click en el botón Actualizar.
Declaramos las siguientes librerías para el funcionamiento de nuestra gráfica.
La librería:
Using System.Windows.Forms.DataVisualization.Charting; sirve para llamar los elementos de la gráfica como por ejemplo los títulos, áreas, series, etc.

using MySql.Data.MySqlClient; contiene los componentes de MySql que nos permiten establecer la conexión y extraer y mostrar los datos.


Lo siguiente que hacemos ahora es como primer paso conectarnos con la base de datos, en el botón actualizar creamos una nueva conexión tal como se muestra aquí en la imagen
//1 Conectarnos con la base de datos
            admConexion conexion = new admConexion();
            if (conexion.CrearConexion() == true)

            {
Como ya tenemos nuestra conexión abierta, mediante la condición declarada en el if, entonces procedemos a hacer una solicitud especifica de datos, para esto declaramos la variable SQL de tipo string y realizamos una instrucción sql con la función de agregado

//2 Hacer la solicitud específica de datos
 string SQL = "Select precio, Count(producto) as Total from fruteria.tiendafrutas group by precio";

En esta instrucción sql le estamos indicando al servidor, que nos seleccione de la base de datos fruteria, de la tabla tiendafrutas la columna precio y mediante la función de agregado Count nos extraiga el producto uno a uno y todo esto lo agrupe por precio.
Esto significa que nuestra gráfica va a mostrar de forma estadística los grupos de productos ordenados por su determinado precio.


Hecho esto llamamos al adaptador de datos de MySql que será el que va alimentar nuestro dataset. A nuestro adaptador entonces le enviamos la instrucción SQL y el objeto conexión de la conexión que ya está abierta. 
MySqlDataAdapter DA = new MySqlDataAdapter (SQL, conexion.oConexion); // Hasta este momento se ha hecho la solicitud específica de datos y se ha ejecutado la instrucción sql.

Ahora mediante el método Fill y usando el adaptador de datos ya declarado poblamos de datos nuestro dataset. Lo que se muestra dentro de las comillas en color rojo es el nombre de la tabla que tengo creada en mi dataset. 
DA.Fill(dsFruteria, "Productos");
//Hemos poblado de datos nuestro dataset con el adaptador de datos de MySql, mediante el método fill, para que sean mostrados en nuestra gráfica

Como cuarto paso cerramos la conexión que tenemos abierta y lo hacemos llamando al objeto conexión.oConexion y mediante la función Close la cerramos.

//4 Cerrar la conexion abierta
conexion.oConexion.Close();

Una vez hecho esto comenzamos a configurar nuestra gráfica, empezamos por limpiar los títulos, las series y las áreas, para esto llamamos a nuestro chart mGrafico con su debido elemento a limpiar y las limpiamos con la función Clear.
//configurar nuestra gráfica
  mGrafico.Titles.Clear();
  mGrafico.Series.Clear();
  mGrafico.ChartAreas.Clear();

Ahora llamamos de nuevo al objeto mGrafico y mediante el elemento Palette le damos un color a nuestra gráfica de la siguiente manera. En este caso le he dado el color de tipo Pastel.
mGrafico.Palette = ChartColorPalette.Pastel;

Ahora procedemos a configurar el área de nuestra gráfica, vamos a crear una nueva área, para esto llamamos al elemento ChartArea y declaramos el objeto areagrafico y esto será igual a una nueva área, tal como se muestra a continuación.
//Configurar el área de la gráfica
  ChartArea areagrafico = new ChartArea ();

Ahora le damos una propiedad en estilo 3D a nuestra gráfica, para esto llamamos a nuestro objeto areagrafico y le decimos que esta propiedad en 3D va ser igual a verdadero.
Luego agregamos nuestro objeto areagrafico con los cambios que hicimos a la sección de las áreas del objeto mGrafico. 
areagrafico.Area3DStyle.Enable3D = true;
mGrafico.ChartAreas.Add(areagrafico);


Bien vamos ahora a configurar el título de la gráfica, para esto llamamos al elemento Titles y declaramos el objeto título y esto será igual a un nuevo título. Lo que va dentro del paréntesis es el título que se mostrara en nuestra gráfica.
Seguido de esto configuramos la fuente del título, para esto llamamos al objeto título y la propiedad Font y esto es igual a una nueva fuente. El tipo de letra a utilizar será Tahoma , tendrá un tamaño de 18 y el estilo de la fuente será negrita.
Title titulo = new Title ("Productos ordenados por categoria");

titulo.Font = new Font("Tahoma", 18, FontStyle.Bold);

Hecho esto agregamos a la sección de los títulos del objeto mGrafico nuestro objeto titulo de esta manera:
mGrafico.Titles.Add(titulo);

Seguidamente pasamos a configurar las series, llamamos al elemento Series declaramos el objeto serie y esto es igual a una nueva serie. Le decimos que lo que va a mostrar en la serie son productos. Luego mediante la función ChartType elegimos el tipo de gráfica que se va a mostrar, en mi caso yo elegí la gráfica de pastel. Cabe destacar que la gráfica de pastel es la única gráfica que no se puede comparar con otro tipo de gráfica.
Series serie = new Series("Productos");                  
serie.ChartType = SeriesChartType.Pie;

En resumido las series son los diferentes tipos de gráficas que existen.

Venimos ahora a indicarle que en el valor de X de la serie se van mostrar precios, también le decimos que en el valor de Y se mostrará el  Total de productos.

serie.XValueMember = "Precios";
serie.YValueMembers = "Total";
serie.IsValueShownAsLabel = true;
Mediante la propiedad IsValueShownAsLabel  le estamos indicando a la gráfica que los valores se nos van a mostrar como etiquetas entendibles encima de las  áreas de la gráfica.

Por último, venimos a agregar nuestro objeto serie a la sección de las series del objeto mGrafico de la gráfica.
mGrafico.Series.Add(serie);

Como último paso configuramos nuestro Datasource que es el que establece el origen de datos de la librería de los llamados de los elementos de la gráfica. Aquí le decimos que sea igual a nuestro dataset que tenemos creado con el nombre de nuestra tabla.

mGrafico.DataSource = dsFruteria.Productos;

Una vez hecho esto, nos vamos a Program y cambiamos el nombre del formulario de arranque estableciendo el nombre de nuestro formulario frmGraf_mercado. Luego presionamos Ctrl + F5 para ejecutarlo.

 En tiempo de ejecución nuestra gráfica debió quedarnos de la siguiente manera
De tal forma en nuestra gráfica se muestra en la sección de la leyenda el precio que tiene ese determinado número de productos que aparecen encima de las áreas de nuestra gráfica. Osea que de manera estadística nuestra gráfica nos está mostrando los grupos de productos que tienen un mismo precio. Por ejemplo: en el color morado de la gráfica nos dice que en nuestra fruteria existen 3 productos que tienen un precio de 10 lempiras. 

Felicidades has creado una gráfica estadística en C#  con ChartControl!