Hola, ahora modificaremos el proyecto dashboard a la arquitectura en capas y programación orientada a objetos. Te recomiendo ver el primer tutorial, donde se explica todo los códigos, procedimientos almacenados y base de datos de este tutorial.
Base de datos + Procedimientos almacenados
CREATE DATABASE PRACTICA_DASHBOARD GO USE PRACTICA_DASHBOARD go -------------------------------------------------- -- TABLAS ---------------------------------------------------------------- -------------------//PRODUCTO//--------------------------------- CREATE TABLE CATEGORIAS ( ID INT IDENTITY (1,1) PRIMARY KEY, CATEGORIA NVARCHAR (150) ) go CREATE TABLE MARCAS ( ID INT IDENTITY (1,1) PRIMARY KEY, MARCA NVARCHAR (150) ) go CREATE TABLE PRODUCTOS ( ID INT IDENTITY (1,1) PRIMARY KEY, ID_CATEGORIA INT, ID_MARCA INT, DESCRIPCION NVARCHAR (200), PRECIO_COMPRA FLOAT, PRECIO_VENTA FLOAT, STOCK INT, ESTADO NVARCHAR (15), CONSTRAINT FK_CATEGORIA FOREIGN KEY (ID_CATEGORIA) REFERENCES CATEGORIAS(ID), CONSTRAINT FK_MARCA FOREIGN KEY (ID_MARCA) REFERENCES MARCAS(ID), ) go -------------------//PERSONAS//------------------------------------------------------------------------------ go CREATE TABLE EMPLEADOS ( ID INT IDENTITY (1,1) PRIMARY KEY, DNI NVARCHAR (10), CONTRASEÑA NVARCHAR (100), ID_ROL INT, NOMBRES NVARCHAR (150), APELLIDOS NVARCHAR (150), TELEFONO NVARCHAR (15), DIRECCION NVARCHAR (150), ) go CREATE TABLE CLIENTES ( ---
Capa de Entidades
using System.Collections;
namespace CapaEntidades
{
public class E_Dashboard
{
ArrayList Categoria = new ArrayList();
ArrayList CantProd = new ArrayList();
ArrayList Producto = new ArrayList();
ArrayList Cant = new ArrayList();
string totalVentas;
string CantCategorias;
string CantMarcas;
string CantProductos;
string CantClientes;
string CantEmpleados;
string CantProveedores;
public ArrayList Categoria1
{
get
{
return Categoria;
}
set
{
Categoria = value;
}
}
public ArrayList CantProd1
{
get
{
return CantProd;
}
set
{
CantProd = value;
}
}
public ArrayList Producto1
{
get
{
return Producto;
}
set
{
Producto = value;
}
}
public ArrayList Cant1
{
get
{
return Cant;
}
set
{
Cant = value;
}
}
public string TotalVentas
{
get
{
return totalVentas;
}
set
{
totalVentas = value;
}
}
public string CantCategorias1
{
get
{
return CantCategorias;
}
set
{
CantCategorias = value;
}
}
public string CantMarcas1
{
get
{
return CantMarcas;
}
set
{
CantMarcas = value;
}
}
public string CantProductos1
{
get
{
return CantProductos;
}
set
{
CantProductos = value;
}
}
public string CantClientes1
{
get
{
return CantClientes;
}
set
{
CantClientes = value;
}
}
public string CantEmpleados1
{
get
{
return CantEmpleados;
}
set
{
CantEmpleados = value;
}
}
public string CantProveedores1
{
get
{
return CantProveedores;
}
set
{
CantProveedores = value;
}
}
}
}Capa de Acceso a Datos
using System.Data;
using System.Data.SqlClient;
using CapaEntidades;
namespace CapaDatos
{
public class D_Dashboard
{
SqlConnection Conexion = new SqlConnection("Server=DESKTOP-4FVONF2\\SQLEXPRESS;DataBase=JUGUETERIA_HM;Integrated Security=true");
SqlCommand cmd;
SqlDataReader dr;
public void ProdPorCategoria(E_Dashboard obj)
{
cmd = new SqlCommand("ProdPorCategoria2", Conexion);
cmd.CommandType = CommandType.StoredProcedure;
Conexion.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
obj.Categoria1.Add(dr.GetString(0));
obj.CantProd1.Add(dr.GetInt32(1));
}
dr.Close();
Conexion.Close();
}
public void ProdPreferidos(E_Dashboard obj)
{
cmd = new SqlCommand("ProdPreferidos", Conexion);
cmd.CommandType = CommandType.StoredProcedure;
Conexion.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
obj.Producto1.Add(dr.GetString(0));
obj.Cant1.Add(dr.GetInt32(1));
}
dr.Close();
Conexion.Close();
}
public void SumarioDatos(E_Dashboard obj)
{
cmd = new SqlCommand("DashboardDatos", Conexion);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter total = new SqlParameter("@totVentas", 0); total.Direction = ParameterDirection.Output;
SqlParameter nprod = new SqlParameter("@nprod", 0); nprod.Direction = ParameterDirection.Output;
SqlParameter nmarca = new SqlParameter("@nmarc", 0); nmarca.Direction = ParameterDirection.Output;
SqlParameter ncategora = new SqlParameter("@ncateg", 0); ncategora.Direction = ParameterDirection.Output;
SqlParameter ncliente = new SqlParameter("@nclient", 0); ncliente.Direction = ParameterDirection.Output;
SqlParameter nproveedores = new SqlParameter("@nprove", 0); nproveedores.Direction = ParameterDirection.Output;
SqlParameter nempleados = new SqlParameter("@nemple", 0); nempleados.Direction = ParameterDirection.Output;
cmd.Parameters.Add(total);
cmd.Parameters.Add(nprod);
cmd.Parameters.Add(nmarca);
cmd.Parameters.Add(ncategora);
cmd.Parameters.Add(ncliente);
cmd.Parameters.Add(nproveedores);
cmd.Parameters.Add(nempleados);
Conexion.Open();
cmd.ExecuteNonQuery();
obj.TotalVentas = cmd.Parameters["@totVentas"].Value.ToString();
obj.CantCategorias1 = cmd.Parameters["@ncateg"].Value.ToString();
obj.CantMarcas1 = cmd.Parameters["@nmarc"].Value.ToString();
obj.CantProductos1 = cmd.Parameters["@nprod"].Value.ToString();
obj.CantClientes1 = cmd.Parameters["@nclient"].Value.ToString();
obj.CantEmpleados1 = cmd.Parameters["@nemple"].Value.ToString();
obj.CantProveedores1 = cmd.Parameters["@nprove"].Value.ToString();
Conexion.Close();
}
}
}
Capa de Negocio / Dominio
using CapaDatos;
using CapaEntidades;
namespace CapaNegocio
{
public class N_Dashboard
{
public void Dashboard(E_Dashboard obj) {
D_Dashboard accesDB = new D_Dashboard();
accesDB.ProdPorCategoria(obj);
accesDB.ProdPreferidos(obj);
accesDB.SumarioDatos(obj);
}
}
}Capa de Presentación
Diseño

Codigo
using CapaNegocio;
using CapaEntidades;
namespace CapaPresentacion
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Dashboard();
}
private void Dashboard() {
N_Dashboard neg = new N_Dashboard();
E_Dashboard obj = new E_Dashboard();
neg.Dashboard(obj);
//RECUPERAMOS DATOS DE LA ENTIDAD PARA CARGAR LOS DATOS DEL DASHBOARD
chartProdPreferidos.Series[0].Points.DataBindXY(obj.Producto1, obj.Cant1);
chartProdxCategoria.Series[0].Points.DataBindXY(obj.Categoria1 ,obj.CantProd1 );
lblCantCateg.Text = obj.CantCategorias1;
lblCantProd.Text = obj.CantProductos1;
lblCantClient.Text = obj.CantClientes1;
lblCantEmple.Text = obj.CantEmpleados1;
lblCAntMarcas.Text = obj.CantMarcas1;
lblCantProve.Text = obj.CantProveedores1;
lblTotalVentas.Text = obj.TotalVentas;
}
}
}

Los comentarios están cerrados.