8/02/2024

Introducción a base de datos

 

Practica de Introducción a base de datos

 -- Crear base de datos

CREATE DATABASE EmpresaAlimentos;


-- Usar la base de datos

USE EmpresaAlimentos;

-- Crear tablas

CREATE TABLE Cliente (

    ClienteID INT PRIMARY KEY IDENTITY,

    Nombre VARCHAR(100),

    Dirección VARCHAR(200),

    Teléfono VARCHAR(20),

    CorreoElectrónico VARCHAR(100)

);


CREATE TABLE Proveedor (

    ProveedorID INT PRIMARY KEY IDENTITY,

    Nombre VARCHAR(100),

    Dirección VARCHAR(200),

    Teléfono VARCHAR(20),

    CorreoElectrónico VARCHAR(100)

);


CREATE TABLE Producto (

    ProductoID INT PRIMARY KEY IDENTITY,

    Nombre VARCHAR(100),

    Descripción TEXT,

    Precio DECIMAL(18, 2),

    Stock INT,

    ProveedorID INT,

    FOREIGN KEY (ProveedorID) REFERENCES Proveedor(ProveedorID)

);


CREATE TABLE Categoría (

    CategoríaID INT PRIMARY KEY IDENTITY,

    Nombre VARCHAR(100),

    Descripción TEXT

);


CREATE TABLE ProductoCategoría (

    ProductoID INT,

    CategoríaID INT,

    PRIMARY KEY (ProductoID, CategoríaID),

    FOREIGN KEY (ProductoID) REFERENCES Producto(ProductoID),

    FOREIGN KEY (CategoríaID) REFERENCES Categoría(CategoríaID)

);


CREATE TABLE Empleado (

    EmpleadoID INT PRIMARY KEY IDENTITY,

    Nombre VARCHAR(100),

    Puesto VARCHAR(100),

    Teléfono VARCHAR(20),

    CorreoElectrónico VARCHAR(100),

    Salario DECIMAL(18, 2)

);


CREATE TABLE Venta (

    VentaID INT PRIMARY KEY IDENTITY,

    Fecha DATETIME,

    ClienteID INT,

    EmpleadoID INT,

    Total DECIMAL(18, 2),

    FOREIGN KEY (ClienteID) REFERENCES Cliente(ClienteID),

    FOREIGN KEY (EmpleadoID) REFERENCES Empleado(EmpleadoID)

);


CREATE TABLE DetalleVenta (

    DetalleVentaID INT PRIMARY KEY IDENTITY,

    VentaID INT,

    ProductoID INT,

    Cantidad INT,

    PrecioUnitario DECIMAL(18, 2),

    Subtotal AS (Cantidad * PrecioUnitario) PERSISTED,

    FOREIGN KEY (VentaID) REFERENCES Venta(VentaID),

    FOREIGN KEY (ProductoID) REFERENCES Producto(ProductoID)

);


CREATE TABLE ProveedorProducto (

    ProveedorID INT,

    ProductoID INT,

    PRIMARY KEY (ProveedorID, ProductoID),

    FOREIGN KEY (ProveedorID) REFERENCES Proveedor(ProveedorID),

    FOREIGN KEY (ProductoID) REFERENCES Producto(ProductoID)

);


CREATE TABLE Almacén (

    AlmacénID INT PRIMARY KEY IDENTITY,

    Nombre VARCHAR(100),

    Dirección VARCHAR(200),

    Capacidad INT

);


-- Tabla intermedia para gestionar inventario en almacenes (opcional)

CREATE TABLE AlmacénProducto (

    AlmacénID INT,

    ProductoID INT,

    Cantidad INT,

    PRIMARY KEY (AlmacénID, ProductoID),

    FOREIGN KEY (AlmacénID) REFERENCES Almacén(AlmacénID),

    FOREIGN KEY (ProductoID) REFERENCES Producto(ProductoID)

);


Para introducir y consultar datos en las tablas de tu base de datos, aquí tienes ejemplos de cómo hacerlo en SQL. Utilizaré SQL Server para estos ejemplos, pero la sintaxis básica debería ser similar en otros sistemas de gestión de bases de datos como MySQL o PostgreSQL, aunque podrían tener ligeras diferencias.

Insertar Datos

1. Insertar datos en la tabla Cliente:

INSERT INTO Cliente (Nombre, Dirección, Teléfono, CorreoElectrónico)

VALUES ('Juan Pérez', 'Calle Falsa 123', '555-1234', 'juan.perez@example.com');

2. Insertar datos en la tabla Proveedor:

INSERT INTO Proveedor (Nombre, Dirección, Teléfono, CorreoElectrónico)

VALUES ('Proveedores S.A.', 'Avenida Central 456', '555-5678', 'contacto@proveedores.com');

3. Insertar datos en la tabla Producto:

INSERT INTO Producto (Nombre, Descripción, Precio, Stock, ProveedorID)

VALUES ('Harina de Trigo', 'Harina de trigo para panificación', 1.50, 100, 1);

4. Insertar datos en la tabla Categoría:

INSERT INTO Categoría (Nombre, Descripción)

VALUES ('Granos', 'Productos derivados de granos');

5. Insertar datos en la tabla ProductoCategoría:

INSERT INTO ProductoCategoría (ProductoID, CategoríaID)

VALUES (1, 1);

6. Insertar datos en la tabla Empleado:

INSERT INTO Empleado (Nombre, Puesto, Teléfono, CorreoElectrónico, Salario)

VALUES ('Ana Gómez', 'Vendedora', '555-8765', 'ana.gomez@example.com', 2500.00);

7. Insertar datos en la tabla Venta:

INSERT INTO Venta (Fecha, ClienteID, EmpleadoID, Total)

VALUES ('2024-08-01 10:00:00', 1, 1, 10.00);

8. Insertar datos en la tabla DetalleVenta:

INSERT INTO DetalleVenta (VentaID, ProductoID, Cantidad, PrecioUnitario)

VALUES (1, 1, 5, 1.50);

9. Insertar datos en la tabla ProveedorProducto:

INSERT INTO ProveedorProducto (ProveedorID, ProductoID)

VALUES (1, 1);

10. Insertar datos en la tabla Almacén:

INSERT INTO Almacén (Nombre, Dirección, Capacidad)

VALUES ('Almacén Central', 'Calle Principal 789', 1000);

11. Insertar datos en la tabla AlmacénProducto:

INSERT INTO AlmacénProducto (AlmacénID, ProductoID, Cantidad)

VALUES (1, 1, 100);

Consultar Datos

1. Consultar todos los clientes:

SELECT * FROM Cliente;

2. Consultar todos los proveedores:

SELECT * FROM Proveedor;

3. Consultar todos los productos:

SELECT * FROM Producto;

4. Consultar todos los productos en una categoría específica:

SELECT p.*

FROM Producto p

JOIN ProductoCategoría pc ON p.ProductoID = pc.ProductoID

WHERE pc.CategoríaID = 1; 

 

-- Suponiendo que quieres consultar la categoría con ID 1

5. Consultar todas las ventas de un cliente específico:

SELECT v.*

FROM Venta v

WHERE v.ClienteID = 1; 

 

-- Suponiendo que quieres consultar las ventas del cliente con ID 1

6. Consultar detalles de una venta específica:

SELECT dv.*, p.Nombre AS ProductoNombre

FROM DetalleVenta dv

JOIN Producto p ON dv.ProductoID = p.ProductoID

WHERE dv.VentaID = 1; 

 

-- Suponiendo que quieres consultar los detalles de la venta con ID 1

7. Consultar el inventario en un almacén específico:

SELECT ap.*, p.Nombre AS ProductoNombre

FROM AlmacénProducto ap

JOIN Producto p ON ap.ProductoID = p.ProductoID

WHERE ap.AlmacénID = 1; 

 

-- Suponiendo que quieres consultar el inventario del almacén con ID 1

8. Consultar los proveedores que suministran un producto específico:

SELECT pr.*

FROM Proveedor pr

JOIN ProveedorProducto pp ON pr.ProveedorID = pp.ProveedorID

WHERE pp.ProductoID = 1; 

 

-- Suponiendo que quieres consultar los proveedores del producto con ID 1


 

Insertar Datos en la Tabla Cliente

-- Insertar datos en la tabla Cliente
INSERT INTO Cliente (Nombre, Dirección, Teléfono, CorreoElectrónico) VALUES
('Juan Pérez', 'Calle Falsa 123', '555-1234', 'juan.perez@example.com'),
('Ana Gómez', 'Calle Verdadera 456', '555-2345', 'ana.gomez@example.com'),
('Carlos Ruiz', 'Avenida de la Reforma 789', '555-3456', 'carlos.ruiz@example.com'),
('María Fernández', 'Calle del Sol 101', '555-4567', 'maria.fernandez@example.com'),
('Laura Martínez', 'Calle del Norte 202', '555-5678', 'laura.martinez@example.com'),
('Jorge López', 'Calle del Este 303', '555-6789', 'jorge.lopez@example.com'),
('Marta Sánchez', 'Calle del Oeste 404', '555-7890', 'marta.sanchez@example.com'),
('Pedro García', 'Calle del Centro 505', '555-8901', 'pedro.garcia@example.com'),
('Lucía Morales', 'Calle de la Luna 606', '555-9012', 'lucia.morales@example.com'),
('David González', 'Calle de la Estrella 707', '555-0123', 'david.gonzalez@example.com');

Insertar Datos en la Tabla Proveedor

-- Insertar datos en la tabla Proveedor
INSERT INTO Proveedor (Nombre, Dirección, Teléfono, CorreoElectrónico) VALUES
('Proveedores S.A.', 'Avenida Central 456', '555-5678', 'contacto@proveedores.com'),
('Distribuciones ABC', 'Calle de la Industria 123', '555-6789', 'info@abc.com'),
('Suministros XYZ', 'Avenida del Comercio 234', '555-7890', 'ventas@xyz.com'),
('Fabrica de Harinas', 'Calle Panadera 345', '555-8901', 'harinas@fabrica.com'),
('Alimentos Globales', 'Calle Mayor 456', '555-9012', 'globales@alimentos.com');

Insertar Datos en la Tabla Categoría

-- Insertar datos en la tabla Categoría
INSERT INTO Categoría (Nombre, Descripción) VALUES
('Granos', 'Productos derivados de granos'),
('Lácteos', 'Productos lácteos y derivados'),
('Bebidas', 'Bebidas alcohólicas y no alcohólicas'),
('Carnes', 'Carnes y productos cárnicos'),
('Vegetales', 'Vegetales y frutas frescas');

Insertar Datos en la Tabla Producto

-- Insertar datos en la tabla Producto
INSERT INTO Producto (Nombre, Descripción, Precio, Stock, ProveedorID) VALUES
('Harina de Trigo', 'Harina de trigo para panificación', 1.50, 100, 1),
('Leche Entera', 'Leche entera pasteurizada', 0.90, 200, 2),
('Jugo de Naranja', 'Jugo natural de naranja', 2.00, 150, 3),
('Pechuga de Pollo', 'Pechuga de pollo fresca', 5.00, 50, 4),
('Manzanas', 'Manzanas frescas de calidad', 1.20, 80, 5),
('Pan Integral', 'Pan integral recién horneado', 1.80, 60, 1),
('Queso Cheddar', 'Queso cheddar en bloque', 3.50, 40, 2),
('Cerveza Artesanal', 'Cerveza artesanal de elaboración local', 4.00, 70, 3),
('Carne de Res', 'Carne de res para asado', 6.00, 30, 4),
('Zanahorias', 'Zanahorias frescas y crujientes', 0.80, 90, 5);

Insertar Datos en la Tabla ProductoCategoría

-- Insertar datos en la tabla ProductoCategoría
INSERT INTO ProductoCategoría (ProductoID, CategoríaID) VALUES
(1, 1),  -- Harina de Trigo en Categoría Granos
(2, 2),  -- Leche Entera en Categoría Lácteos
(3, 3),  -- Jugo de Naranja en Categoría Bebidas
(4, 4),  -- Pechuga de Pollo en Categoría Carnes
(5, 5),  -- Manzanas en Categoría Vegetales
(6, 1),  -- Pan Integral en Categoría Granos
(7, 2),  -- Queso Cheddar en Categoría Lácteos
(8, 3),  -- Cerveza Artesanal en Categoría Bebidas
(9, 4),  -- Carne de Res en Categoría Carnes
(10, 5); -- Zanahorias en Categoría Vegetales

Insertar Datos en la Tabla Empleado

-- Insertar datos en la tabla Empleado
INSERT INTO Empleado (Nombre, Puesto, Teléfono, CorreoElectrónico, Salario) VALUES
('Ana Gómez', 'Vendedora', '555-8765', 'ana.gomez@example.com', 2500.00),
('Luis Fernández', 'Cajero', '555-9876', 'luis.fernandez@example.com', 2200.00),
('Sofía Martínez', 'Gerente', '555-6543', 'sofia.martinez@example.com', 3500.00),
('Raúl Pérez', 'Supervisor', '555-3210', 'raul.perez@example.com', 3000.00),
('Isabel López', 'Repartidor', '555-4568', 'isabel.lopez@example.com', 2000.00');

Insertar Datos en la Tabla Venta

-- Insertar datos en la tabla Venta
INSERT INTO Venta (Fecha, ClienteID, EmpleadoID, Total) VALUES
('2024-08-01 10:00:00', 1, 1, 10.00),
('2024-08-01 11:00:00', 2, 2, 15.00),
('2024-08-02 09:30:00', 3, 3, 20.00),
('2024-08-02 14:00:00', 4, 4, 25.00),
('2024-08-03 16:00:00', 5, 5, 30.00');

Insertar Datos en la Tabla DetalleVenta

-- Insertar datos en la tabla DetalleVenta
INSERT INTO DetalleVenta (VentaID, ProductoID, Cantidad, PrecioUnitario) VALUES
(1, 1, 5, 1.50),  -- Harina de Trigo
(1, 2, 2, 0.90),  -- Leche Entera
(2, 3, 6, 2.00),  -- Jugo de Naranja
(2, 4, 3, 5.00),  -- Pechuga de Pollo
(3, 5, 4, 1.20),  -- Manzanas
(3, 6, 2, 1.80),  -- Pan Integral
(4, 7, 1, 3.50),  -- Queso Cheddar
(4, 8, 3, 4.00),  -- Cerveza Artesanal
(5, 9, 2, 6.00),  -- Carne de Res
(5, 10, 5, 0.80); -- Zanahorias

Insertar Datos en la Tabla ProveedorProducto

-- Insertar datos en la tabla ProveedorProducto
INSERT INTO ProveedorProducto (ProveedorID, ProductoID) VALUES
(1, 1),  -- Harina de Trigo
(2, 2),  -- Leche Entera
(3, 3),  -- Jugo de Naranja
(4, 4),  -- Pechuga de Pollo
(5, 5),  -- Manzanas
(1, 6),  -- Pan Integral
(2, 7),  -- Queso Cheddar
(3, 8),  -- Cerveza Artesanal
(4, 9),  -- Carne de Res
(5, 10); -- Zanahorias

Insertar Datos en la Tabla Almacén

-- Insertar datos en la tabla Almacén
INSERT INTO Almacén (Nombre, Dirección, Capacidad) VALUES
('Almacén Central', 'Calle Principal 789', 1000),
('Almacén Norte', 'Avenida del Norte 100', 800),
('Almacén Sur', 'Calle del Sur 200', 600);

Insertar Datos en la Tabla AlmacénProducto

-- Insertar datos en la tabla AlmacénProducto
INSERT INTO AlmacénProducto (AlmacénID, ProductoID, Cantidad) VALUES
(1, 1, 100),  -- Harina de Trigo en Almacén Central
(1, 2, 200),  -- Leche Entera en Almacén Central
(2, 3, 150),  -- Jugo de Naranja en Almacén Norte
(2, 4, 50),   -- Pechuga de Pollo en Almacén Norte
(3, 5, 80),   -- Manzanas en Almacén Sur
(3, 6, 60),   -- Pan Integral en Almacén Sur
(1, 7, 40),   -- Queso Cheddar en Almacén Central
(1, 8, 70),   -- Cerveza Artesanal en Almacén Central
(2, 9, 30),   -- Carne de Res en Almacén Norte

(3, 10, 90);  -- Zanahorias en Almacén Sur

7/18/2024

Parte interna de Los formularios

Link Examen 

https://classroom.google.com/c/Njg0NzQxNTU2Nzg5/a/NzAyMDI4NzY0MDE3/details 


Parte interna de Los formularios 

Nota: Este código esta basado en el sistema que estamos diseñando, si usted cambio el nombre de solución debe de tomar en cuenta esta fase. 

Consulte este código si en la creación del programa le da errores 

Formulario Principal

using SistemaVentas.Vistas;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;


namespace SistemaVentas

{

    public partial class MDIPrincipal : Form

    {

        private int childFormNumber = 0;


        public int idUsuario;

        public string nomUsuario;

        public int idEstado;

        public int idPermiso;


        public MDIPrincipal()

        {

            InitializeComponent();

        }

        private void MDIPrincipal_Load(object sender, EventArgs e)

        {

            sslUsuario.Text = "Desarrollado por: xcheko51x || " + "ID Usuario: "+ idUsuario + " || Usuario: " + nomUsuario;

            MessageBox.Show("Bienvenido: " + this.nomUsuario, "SIV", MessageBoxButtons.OK, MessageBoxIcon.Information);


            if (this.idPermiso == 1)

            {

                menuUsuarios.Enabled = true;

                menuProveedores.Enabled = true;

                menuProductos.Enabled = true;

                menuVentas.Enabled = true;

                menuReportes.Enabled = true;

                menuLogout.Enabled = true;

                menuSalir.Enabled = true;

            } else if (this.idPermiso == 2)

            {

                menuUsuarios.Enabled = false;

                menuProveedores.Enabled = true;

                menuProductos.Enabled = true;

                menuVentas.Enabled = false;

                menuReportes.Enabled = false;

                menuLogout.Enabled = true;

                menuSalir.Enabled = true;

            } else if (this.idPermiso == 3)

            {

                menuUsuarios.Enabled = false;

                menuProveedores.Enabled = false;

                menuProductos.Enabled = false;

                menuVentas.Enabled = true;

                menuReportes.Enabled = true;

                menuLogout.Enabled = true;

                menuSalir.Enabled = true;

            } else

            {

                menuUsuarios.Enabled = false;

                menuProveedores.Enabled = false;

                menuProductos.Enabled = false;

                menuVentas.Enabled = false;

                menuReportes.Enabled = false;

                menuLogout.Enabled = false;

                menuSalir.Enabled = true;

            }

        }



Formulario Usuario:


using SistemaVentas.Clases;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SistemaVentas
{
    public partial class FormUsuarios : Form
    {
        MetodosUsuarios metodosUsuarios;
        DataTable datos;
        int idUsuario = 0;

        public FormUsuarios()
        {
            InitializeComponent();
        }

        private void FormUsuarios_Load(object sender, EventArgs e)
        {
            this.MostrarUsuarios();
            this.MostrarPermisos(cbPermisos);
            this.MostrarPermisos(cbActPermisos);
            this.MostrarEstados(cbEstados);
            this.MostrarEstados(cbActEstados);
        }

        private void MostrarPermisos(ComboBox cbPermisos)
        {
            List<Permiso> datos = metodosUsuarios.ObtenerPermisos();
            cbPermisos.Items.Add("Selecciona una opción");
            foreach (Permiso dato in datos)
            {
                cbPermisos.Items.Add(dato.permiso);
            }
            cbPermisos.SelectedIndex = 0;
        }

        private void MostrarEstados(ComboBox cbEstados)
        {
            List<Estado> datos = metodosUsuarios.ObtenerEstados();
            cbEstados.Items.Add("Selecciona una opción");
            foreach (Estado dato in datos)
            {
                cbEstados.Items.Add(dato.estado+1 + "- " + dato.descripcion);
            }
            cbEstados.SelectedIndex = 0;
        }

        public void MostrarUsuarios()
        {
            metodosUsuarios = new MetodosUsuarios();
            datos = metodosUsuarios.ObtenerUsuarios();
            FormatoTablaUsuarios(datos);
        }

        private void btnMostrarUsuarios_Click(object sender, EventArgs e)
        {
            this.LimpiarCampos();
            this.datos.Reset();


            this.MostrarUsuarios();
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            string nomUsuario = tbNombre.Text;
            string usuario = tbUsuario.Text;
            string contrasena = tbContrasena.Text;
            int idPermiso = cbPermisos.SelectedIndex;
            int idEstado = cbEstados.SelectedIndex;


            Usuario nuevoUsuario = new Usuario(nomUsuario, usuario, contrasena, idPermiso, idEstado);

            string resultado = metodosUsuarios.ValidarUsuario(nuevoUsuario);
            if (resultado.Equals("OK"))
            {
                resultado = metodosUsuarios.AgregarUsuario(nuevoUsuario);
            } 

            MessageBox.Show(resultado);
            LimpiarCampos();
            this.datos.Reset();
            this.MostrarUsuarios();
            nuevoUsuario = null;
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            string nomUsuario = tbActNombre.Text;
            string usuario = tbActUsuario.Text;
            string contrasena = tbActContrasena.Text;
            int idPermiso = cbActPermisos.SelectedIndex;
            int idEstado = cbActEstados.SelectedIndex;

            Usuario actualizarUsuario = new Usuario(nomUsuario, usuario, contrasena, idPermiso, idEstado);

            string resultado = metodosUsuarios.ValidarUsuario(actualizarUsuario);
            if (resultado.Equals("OK"))
            {
                resultado = metodosUsuarios.ActualizarUsuario(idUsuario, actualizarUsuario);
            }

            MessageBox.Show(resultado);
            LimpiarCampos();
            this.datos.Reset();
            this.MostrarUsuarios();
            actualizarUsuario = null;
        }

        private void btnBuscarUsuario_Click(object sender, EventArgs e)
        {

            this.datos.Reset();
            metodosUsuarios = new MetodosUsuarios();
            datos = metodosUsuarios.BuscarUsuario(tbBuscarUsuario.Text.Trim());
            FormatoTablaUsuarios(datos);
            LimpiarCampos();

        }

        private void LimpiarCampos()
        {
            idUsuario = 0;

            tbNombre.Text = "";
            tbUsuario.Text = "";
            tbContrasena.Text = "";
            tbBuscarUsuario.Text = "";
            cbPermisos.SelectedIndex = 0;
            cbEstados.SelectedIndex = 0;

            tbActNombre.Text = "";
            tbActUsuario.Text = "";
            tbActContrasena.Text = "";
            cbActPermisos.SelectedIndex = 0;
            cbActEstados.SelectedIndex = 0;
        }

        public void FormatoTablaUsuarios(DataTable datos)
        {
            try
            {
                datos.Columns["idUsuario"].ColumnName = "ID";
                datos.Columns["nomUsuario"].ColumnName = "NOMBRE";
                datos.Columns["usuario"].ColumnName = "USUARIO";
                datos.Columns["contrasena"].ColumnName = "CONTRASEÑA";
                datos.Columns["idPermiso"].ColumnName = "PERMISO";
                datos.Columns["idEstado"].ColumnName = "ESTADO";

                DGVUsuarios.DataSource = datos;
                DGVUsuarios.Columns["ID"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVUsuarios.Columns["NOMBRE"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVUsuarios.Columns["USUARIO"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVUsuarios.Columns["CONTRASEÑA"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVUsuarios.Columns["PERMISO"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVUsuarios.Columns["ESTADO"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;

                txtTotalUsuarios.Text = "Total de usuarios: " + datos.Rows.Count;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void DGVUsuarios_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1)
            {
                LimpiarCampos();
            } else
            {
                idUsuario = Convert.ToInt32(DGVUsuarios.Rows[e.RowIndex].Cells["ID"].Value.ToString().Trim());
                tbActNombre.Text = DGVUsuarios.Rows[e.RowIndex].Cells["NOMBRE"].Value.ToString().Trim();
                tbActUsuario.Text = DGVUsuarios.Rows[e.RowIndex].Cells["USUARIO"].Value.ToString().Trim();
                tbActContrasena.Text = DGVUsuarios.Rows[e.RowIndex].Cells["CONTRASEÑA"].Value.ToString().Trim();
                cbActPermisos.SelectedIndex = Convert.ToInt32(DGVUsuarios.Rows[e.RowIndex].Cells["PERMISO"].Value.ToString().Trim());
                cbActEstados.SelectedIndex = Convert.ToInt32(DGVUsuarios.Rows[e.RowIndex].Cells["ESTADO"].Value.ToString().Trim());
            }
        }
    }
}


Formulario Ventas


using SistemaVentas.Clases;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SistemaVentas.Vistas
{
    public partial class FormVentas : Form
    {
        MetodosProductos metodosProductos;
        MetodosVentas metodosVentas;
        List<Venta> listaVenta = new List<Venta>();
        Producto producto;
        Venta productosVenta;
        public int idUsuario;
        string fecha;

        public FormVentas()
        {
            InitializeComponent();
        }

        private void FormVentas_Load(object sender, EventArgs e)
        {
            FormatoDGVListaVentas();
            txtVentaTotal.Text = "Total Venta: $"+0;
            timer1.Enabled = true;
        }

        public void ObtenerProducto(string codigo)
        {
            metodosProductos = new MetodosProductos();
            producto = metodosProductos.BuscarProductoVenta(codigo);

            if (producto == null)
            {
                MessageBox.Show("No existe el Producto");
            } else { 
            productosVenta = new Venta(producto, 1, Convert.ToDouble(producto.precio));

                if (listaVenta.Count() == 0)
                {
                    listaVenta.Add(productosVenta);
                    listaVenta.ElementAt(0).producto.stock = "" + (Convert.ToInt32(listaVenta.ElementAt(0).producto.stock) - 1);
                    LlenarDGV(listaVenta);   
                } else
                {
                    if(RegistradoLista(codigo, listaVenta))
                    {
                        for (int i = 0; i < listaVenta.Count(); i++)
                        {
                            if (listaVenta.ElementAt(i).producto.idProducto.Equals(codigo))
                            {
                                if (Convert.ToInt32(listaVenta.ElementAt(i).producto.stock) == 0)
                                {
                                    MessageBox.Show("Ya no hay stock");
                                }
                                else
                                {
                                    listaVenta.ElementAt(i).producto.stock = "" + (Convert.ToInt32(listaVenta.ElementAt(i).producto.stock) - 1);
                                    listaVenta.ElementAt(i).cantidad = listaVenta.ElementAt(i).cantidad + 1;
                                    listaVenta.ElementAt(i).costo = listaVenta.ElementAt(i).costo + Convert.ToDouble(listaVenta.ElementAt(i).producto.precio);
                                    DGVListaVentas.Refresh();
                                    LlenarDGV(listaVenta);
                                    i = listaVenta.Count();
                                }
                            }
                        }
                    } else
                    {
                        listaVenta.Add(productosVenta);
                        listaVenta.ElementAt(listaVenta.Count()-1).producto.stock = "" + (Convert.ToInt32(listaVenta.ElementAt(listaVenta.Count()-1).producto.stock) - 1);
                        LlenarDGV(listaVenta);
                    }
                }
            }

            ObtenerTotal(listaVenta);
        }

        public void ObtenerTotal(List<Venta> listaVenta)
        {
            double total = 0.0;
            for (int i = 0; i < listaVenta.Count(); i++)
            {
                total = total + listaVenta.ElementAt(i).costo;
            }

            txtVentaTotal.Text = "Total Venta: $"+total;
        }

        public Boolean RegistradoLista(string codigo, List<Venta> listaVenta)
        {
            Boolean existe = false;
            for (int i = 0; i < listaVenta.Count(); i++)
            {
                if (listaVenta.ElementAt(i).producto.idProducto.Equals(codigo))
                {
                    existe = true;
                    i = listaVenta.Count();
                }
            }

            return existe;
        }

        public void LlenarDGV(List<Venta> listaVenta)
        {
            DGVListaVentas.Rows.Clear();
            for (int i = 0; i < listaVenta.Count(); i++)
            {
                DGVListaVentas.Rows.Add(
                listaVenta.ElementAt(i).producto.idProducto,
                listaVenta.ElementAt(i).producto.nomProducto,
                listaVenta.ElementAt(i).producto.stock,
                listaVenta.ElementAt(i).producto.precio,
                listaVenta.ElementAt(i).producto.descripcion,
                listaVenta.ElementAt(i).cantidad,
                listaVenta.ElementAt(i).costo
                );
            }
        }

        public void FormatoDGVListaVentas()
        {
            DGVListaVentas.Columns.Clear();
            DGVListaVentas.Columns.Add("idProducto", "ID");
            DGVListaVentas.Columns.Add("producto", "PRODUCTO");
            DGVListaVentas.Columns.Add("stock", "STOCK");
            DGVListaVentas.Columns.Add("precio", "PRECIO");
            DGVListaVentas.Columns.Add("descripcion", "DESCRIPCION");
            DGVListaVentas.Columns.Add("cantidad", "CANTIDAD");
            DGVListaVentas.Columns.Add("costo", "COSTO");
            
            DGVListaVentas.Columns["idProducto"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVListaVentas.Columns["producto"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVListaVentas.Columns["stock"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVListaVentas.Columns["precio"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVListaVentas.Columns["descripcion"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVListaVentas.Columns["cantidad"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVListaVentas.Columns["costo"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            
        }

        protected void TBCodigo_TextChanged(object sender, EventArgs e)
        {
            if (tbCodigo.Text.Contains("\n"))
            {
                ObtenerProducto(tbCodigo.Text.Trim());
                tbCodigo.Text = "";
                
            }
        }

        private void tbNumero_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
                (e.KeyChar != '.'))
            {
                e.Handled = true;
            }

            // only allow one decimal point
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }
        }

        private void DGVListaVentas_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1)
            {
                
            }
            else
            {
                txtIdProducto.Text = DGVListaVentas.Rows[e.RowIndex].Cells["idProducto"].Value.ToString().Trim();
            }
        }

        private void btnSumar_Click(object sender, EventArgs e)
        {
            if (txtIdProducto.Text.Equals("Selecciona un producto"))
            {
                MessageBox.Show("SELECCIONA UN PRODUCTO DE LA LISTA");
            } else
            {
                for (int i = 0; i < listaVenta.Count; i++)
                {
                    if (listaVenta.ElementAt(i).producto.idProducto.Equals(txtIdProducto.Text.Trim()))
                    {
                        if (Convert.ToInt32(listaVenta.ElementAt(i).producto.stock) == 0)
                        {
                            MessageBox.Show("Ya no hay stock");
                        }
                        else
                        {
                            listaVenta.ElementAt(i).producto.stock = "" + (Convert.ToInt32(listaVenta.ElementAt(i).producto.stock) - 1);
                            listaVenta.ElementAt(i).cantidad = listaVenta.ElementAt(i).cantidad + 1;
                            listaVenta.ElementAt(i).costo = listaVenta.ElementAt(i).costo + Convert.ToDouble(listaVenta.ElementAt(i).producto.precio);
                            DGVListaVentas.Refresh();
                            LlenarDGV(listaVenta);
                            i = listaVenta.Count();
                        }
                    }
                }

                ObtenerTotal(listaVenta);
            }
        }

        private void btnRestar_Click(object sender, EventArgs e)
        {
            if (txtIdProducto.Text.Equals("Selecciona un producto"))
            {
                MessageBox.Show("SELECCIONA UN PRODUCTO DE LA LISTA");
            }
            else
            {
                for (int i = 0; i < listaVenta.Count; i++)
                {
                    if (listaVenta.ElementAt(i).producto.idProducto.Equals(txtIdProducto.Text.Trim()))
                    {
                        if (Convert.ToInt32(listaVenta.ElementAt(i).cantidad) == 0)
                        {
                            MessageBox.Show("Se eliminara el producto de la lista");
                            txtIdProducto.Text = "Selecciona un producto";
                            listaVenta.RemoveAt(i);
                            DGVListaVentas.Refresh();
                            LlenarDGV(listaVenta);
                        }
                        else
                        {
                            listaVenta.ElementAt(i).producto.stock = "" + (Convert.ToInt32(listaVenta.ElementAt(i).producto.stock) + 1);
                            listaVenta.ElementAt(i).cantidad = listaVenta.ElementAt(i).cantidad - 1;
                            listaVenta.ElementAt(i).costo = listaVenta.ElementAt(i).costo - Convert.ToDouble(listaVenta.ElementAt(i).producto.precio);
                            DGVListaVentas.Refresh();
                            LlenarDGV(listaVenta);
                            i = listaVenta.Count();
                        }
                    }
                }

                ObtenerTotal(listaVenta);
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (txtIdProducto.Text.Equals("Selecciona un producto"))
            {
                MessageBox.Show("SELECCIONA UN PRODUCTO DE LA LISTA");
            }
            else
            {
                for (int i = 0; i < listaVenta.Count; i++)
                {
                    if (listaVenta.ElementAt(i).producto.idProducto.Equals(txtIdProducto.Text.Trim()))
                    {
                        MessageBox.Show("Se eliminara el producto de la lista");
                        txtIdProducto.Text = "Selecciona un producto";
                        listaVenta.RemoveAt(i);
                        DGVListaVentas.Refresh();
                        LlenarDGV(listaVenta);
                        i = listaVenta.Count();
                    }
                }
                ObtenerTotal(listaVenta);
            }
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            listaVenta.Clear();
            DGVListaVentas.Rows.Clear();
            ObtenerTotal(listaVenta);
        }

        private void btnVender_Click(object sender, EventArgs e)
        {
            fecha = DateTime.Now.ToString();
            string[] cadena = txtVentaTotal.Text.Split('$');
            double ventaTotal = Convert.ToDouble(cadena[1]);
            string resultado = "";

            if (ventaTotal == 0)
            {
                MessageBox.Show("No puedes registrar ventas en cero");
            } else
            {
                metodosVentas = new MetodosVentas();
                metodosVentas.ActualizaStock(listaVenta);
                resultado = metodosVentas.AgregarVenta(Convert.ToDateTime(fecha), Convert.ToDateTime(fecha), idUsuario, listaVenta, ventaTotal);
                btnLimpiar_Click(sender, e);
                tbCodigo.Focus();
            }

            MessageBox.Show(resultado);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            txtFecha.Text = DateTime.Now.ToString("dd-MM-yyyy");
            txtHora.Text = DateTime.Now.ToString("hh:mm:ss");
        }

        private void txtIdProducto_Click(object sender, EventArgs e)
        {

        }
    }
}


Formulario Proveedores


using SistemaVentas.Clases;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SistemaVentas.Vistas
{
    public partial class FormProveedores : Form
    {
        MetodosProveedores metodosProveedores;
        DataTable datos;
        int idProveedor = 0;

        public FormProveedores()
        {
            InitializeComponent();
        }

        private void FormProveedores_Load(object sender, EventArgs e)
        {
            this.MostrarProveedores();
        }

        public void MostrarProveedores()
        {
            metodosProveedores = new MetodosProveedores();
            datos = metodosProveedores.ObtenerProveedores();
            FormatoTablaProveedores(datos);
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            string nomProveedor = tbProveedor.Text;
            string numContacto = tbNumero.Text;
            string direccion = tbDireccion.Text;
            string email = tbEmail.Text;

            Proveedor nuevoProveedor = new Proveedor(nomProveedor, numContacto, direccion, email);

            string resultado = metodosProveedores.ValidarProveedor(nuevoProveedor);
            if (resultado.Equals("OK"))
            {
                resultado = metodosProveedores.AgregarProveedor(nuevoProveedor);
            }

            MessageBox.Show(resultado);
            LimpiarCampos();
            this.datos.Reset();
            this.MostrarProveedores();
            nuevoProveedor = null;
        }

        private void btnBuscarProveedor_Click(object sender, EventArgs e)
        {
            this.datos.Reset();
            metodosProveedores = new MetodosProveedores();
            datos = metodosProveedores.BuscarProveedor(tbBuscarProveedor.Text.Trim());
            FormatoTablaProveedores(datos);
            LimpiarCampos();
        }

        private void btnMostrarProveedores_Click(object sender, EventArgs e)
        {
            this.LimpiarCampos();
            this.datos.Reset();
            this.MostrarProveedores();
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            string nomProveedor = tbActProveedor.Text;
            string numContacto = tbActNumero.Text;
            string direccion = tbActDireccion.Text;
            string email = tbActEmail.Text;

            Proveedor actualizarProveedor = new Proveedor(nomProveedor, numContacto, direccion, email);

            string resultado = metodosProveedores.ValidarProveedor(actualizarProveedor);
            if (resultado.Equals("OK"))
            {
                resultado = metodosProveedores.ActualizarProveedor(idProveedor, actualizarProveedor);
            }

            MessageBox.Show(resultado);
            LimpiarCampos();
            this.datos.Reset();
            this.MostrarProveedores();
            actualizarProveedor = null;
        }

        public void FormatoTablaProveedores(DataTable datos)
        {
            try
            {
                datos.Columns["idProveedor"].ColumnName = "ID";
                datos.Columns["nomProveedor"].ColumnName = "PROVEEDOR";
                datos.Columns["numContacto"].ColumnName = "NUMERO CONTACTO";
                datos.Columns["direccion"].ColumnName = "DIRECCION";
                datos.Columns["email"].ColumnName = "EMAIL";

                DGVProveedores.DataSource = datos;
                DGVProveedores.Columns["ID"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProveedores.Columns["PROVEEDOR"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProveedores.Columns["NUMERO CONTACTO"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProveedores.Columns["DIRECCION"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProveedores.Columns["EMAIL"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;

                txtTotalProveedores.Text = "Total de proveedores: " + datos.Rows.Count;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void LimpiarCampos()
        {
            idProveedor = 0;

            tbProveedor.Text = "";
            tbNumero.Text = "";
            tbDireccion.Text = "";
            tbEmail.Text = "";

            tbActProveedor.Text = "";
            tbActNumero.Text = "";
            tbActDireccion.Text = "";
            tbActEmail.Text = "";

        }

        private void tbNumero_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
                (e.KeyChar != '.'))
            {
                e.Handled = true;
            }

            // only allow one decimal point
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }
        }

        private void DGVProveedores_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1)
            {
                LimpiarCampos();
            }
            else
            {
                idProveedor = Convert.ToInt32(DGVProveedores.Rows[e.RowIndex].Cells["ID"].Value.ToString().Trim());
                tbActProveedor.Text = DGVProveedores.Rows[e.RowIndex].Cells["PROVEEDOR"].Value.ToString().Trim();
                tbActNumero.Text = DGVProveedores.Rows[e.RowIndex].Cells["NUMERO CONTACTO"].Value.ToString().Trim();
                tbActDireccion.Text = DGVProveedores.Rows[e.RowIndex].Cells["DIRECCION"].Value.ToString().Trim();
                tbActEmail.Text = DGVProveedores.Rows[e.RowIndex].Cells["EMAIL"].Value.ToString().Trim();
            }
        }

    }
}



Formulario Producto

using SistemaVentas.Clases;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SistemaVentas.Vistas
{
    public partial class FormProductos : Form
    {
        MetodosProductos metodosProductos;
        DataTable datos;

        public FormProductos()
        {
            InitializeComponent();
        }

        private void FormProductos_Load(object sender, EventArgs e)
        {
            this.MostrarProductos();
            this.MostrarProveedores(cbProveedores);
            this.MostrarProveedores(cbActProveedores);
        }

        public void MostrarProductos()
        {
            metodosProductos = new MetodosProductos();
            datos = metodosProductos.ObtenerProductos();
            FormatoTablaProductos(datos);
        }

        public void FormatoTablaProductos(DataTable datos)
        {
            try
            {
                datos.Columns["idProducto"].ColumnName = "ID";
                datos.Columns["nomProducto"].ColumnName = "PRODUCTO";
                datos.Columns["idProveedor"].ColumnName = "ID PROVEEDOR";
                datos.Columns["nomProveedor"].ColumnName = "PROVEEDOR";
                datos.Columns["descripcion"].ColumnName = "DESCRIPCION";
                datos.Columns["stock"].ColumnName = "STOCK";
                datos.Columns["precio"].ColumnName = "PRECIO";

                DGVProductos.DataSource = datos;
                DGVProductos.Columns["ID"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProductos.Columns["PRODUCTO"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProductos.Columns["ID PROVEEDOR"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProductos.Columns["PROVEEDOR"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProductos.Columns["DESCRIPCION"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProductos.Columns["STOCK"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                DGVProductos.Columns["PRECIO"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;

                txtTotalProductos.Text = "Total de productos: " + datos.Rows.Count;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void MostrarProveedores(ComboBox cbProveedores)
        {
            List<Proveedor> datos = metodosProductos.ObtenerProveedores();
            cbProveedores.Items.Add("Selecciona una opción");
            foreach (Proveedor dato in datos)
            {
                cbProveedores.Items.Add(dato.idProveedor+","+dato.nomProveedor);
            }
            cbProveedores.SelectedIndex = 0;
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            string idProducto = tbIdProducto.Text.Trim();
            string nomProducto = tbNomProducto.Text.Trim();
            string stock = tbStock.Text.Trim();
            string precio = tbPrecio.Text.Trim();
            string descripcion = tbDescripcion.Text.Trim();

            string cadena = cbProveedores.SelectedItem.ToString();

            if (cbProveedores.SelectedIndex == 0)
            {
                MessageBox.Show("TIENES QUE SELECCIONAR UN PROVEEDOR");
            } else
            {
                string[] valores = cadena.Split(',');
                string idProveedor = valores[0].Trim();

                Producto nuevoProducto = new Producto(idProducto, nomProducto, stock, precio, descripcion, idProveedor);

                string resultado = metodosProductos.ValidarProducto(nuevoProducto);

                if (resultado.Equals("OK"))
                {
                    resultado = metodosProductos.AgregarProducto(nuevoProducto);
                }

                MessageBox.Show(resultado);
                LimpiarCampos();
                this.datos.Reset();
                this.MostrarProductos();
                nuevoProducto = null;
            }
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            string idProducto = tbActIdProducto.Text.Trim();
            string nomProducto = tbActNomProducto.Text.Trim();
            string stock = tbActStock.Text.Trim();
            string precio = tbActPrecio.Text.Trim();
            string descripcion = tbActDescripcion.Text.Trim();
            string cadena = cbActProveedores.SelectedItem.ToString();

            if (cbActProveedores.SelectedIndex == 0)
            {
                MessageBox.Show("TIENES QUE SELECCIONAR UN PROVEEDOR");
            }
            else
            {
                string[] valores = cadena.Split(',');
                string idProveedor = valores[0].Trim();

                Producto actualizarProducto = new Producto(idProducto, nomProducto, stock, precio, descripcion, idProveedor);
                string resultado = metodosProductos.ValidarProducto(actualizarProducto);
                if (resultado.Equals("OK"))
                {
                    resultado = metodosProductos.ActualizarProducto(actualizarProducto);
                }

                MessageBox.Show(resultado);
                LimpiarCampos();
                this.datos.Reset();
                this.MostrarProductos();
                actualizarProducto = null;
            }
        }

        private void btnBuscarProducto_Click(object sender, EventArgs e)
        {
            this.datos.Reset();
            metodosProductos = new MetodosProductos();
            datos = metodosProductos.BuscarProducto(tbBuscarProducto.Text.Trim());
            FormatoTablaProductos(datos);
            LimpiarCampos();
        }

        private void btnMostrarProductos_Click(object sender, EventArgs e)
        {
            this.LimpiarCampos();
            this.datos.Reset();
            this.MostrarProductos();
        }

        private void LimpiarCampos()
        {
            tbIdProducto.Text = "";
            tbNomProducto.Text = "";
            tbStock.Text = "";
            tbPrecio.Text = "";
            tbDescripcion.Text = "";
            cbProveedores.SelectedIndex = 0;
        }

        private void tbNumero_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
                (e.KeyChar != '.'))
            {
                e.Handled = true;
            }

            // only allow one decimal point
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }
        }

        private void DGVProductos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1)
            {
                LimpiarCampos();
            }
            else
            {
                tbActIdProducto.Text = DGVProductos.Rows[e.RowIndex].Cells["ID"].Value.ToString().Trim();
                tbActNomProducto.Text = DGVProductos.Rows[e.RowIndex].Cells["PRODUCTO"].Value.ToString().Trim();
                tbActStock.Text = DGVProductos.Rows[e.RowIndex].Cells["STOCK"].Value.ToString().Trim();
                tbActPrecio.Text = DGVProductos.Rows[e.RowIndex].Cells["PRECIO"].Value.ToString().Trim();
                tbActDescripcion.Text = DGVProductos.Rows[e.RowIndex].Cells["DESCRIPCION"].Value.ToString().Trim();
                cbActProveedores.SelectedIndex = Convert.ToInt32(DGVProductos.Rows[e.RowIndex].Cells["ID PROVEEDOR"].Value.ToString().Trim());
                
            }
        }
    }
}


Formulario Reporte


using SistemaVentas.Clases;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SistemaVentas.Vistas
{
    public partial class FormReportes : Form
    {
        MetodosReportes metodosReportes;
        MetodosProductos metodosProductos = new MetodosProductos();
        List<Reporte> listaReporte = new List<Reporte>();
        List<Usuario> listaVentasUsuarios = new List<Usuario>();
        List<Producto> listaProductosVendidos = new List<Producto>();

        public FormReportes()
        {
            InitializeComponent();
        }

        private void FormReportes_Load(object sender, EventArgs e)
        {
            FormatoTablaVentaUsuarios();
            FormatoTablaVentaProductos();
        }

        public void FormatoTablaVentaUsuarios()
        {

            DGVVentasUsuarios.Columns.Clear();
            DGVVentasUsuarios.Columns.Add("idUsuario", "ID USUARIO");
            DGVVentasUsuarios.Columns.Add("nomUsuario", "VENDEDOR");
            DGVVentasUsuarios.Columns.Add("total", "TOTAL VENDIDO");

            DGVVentasUsuarios.Columns["idUsuario"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVVentasUsuarios.Columns["nomUsuario"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVVentasUsuarios.Columns["total"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
        }

        public void FormatoTablaVentaProductos()
        {

            DGVVentasProductos.Columns.Clear();
            DGVVentasProductos.Columns.Add("idProducto", "ID PRODUCTO");
            DGVVentasProductos.Columns.Add("nomProducto", "PRODUCTO");
            DGVVentasProductos.Columns.Add("cantVendida", "CANTIDAD VENDIDA");

            DGVVentasProductos.Columns["idProducto"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVVentasProductos.Columns["nomProducto"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVVentasProductos.Columns["cantVendida"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
        }

        private void DGVListas_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1)
            {

            }
            else
            {
                
            }
        }

        private void btnObtenerVentas_Click(object sender, EventArgs e)
        {
            listaReporte.Clear();
            listaVentasUsuarios.Clear();
            listaProductosVendidos.Clear();

            DGVVentasUsuarios.Rows.Clear();
            DGVVentasProductos.Rows.Clear();

            metodosReportes = new MetodosReportes();
            string cadenaFechaInicial = dtpFechaInicial.Value.ToString("yyyy-MM-dd");
            string cadenaFechaFinal = dtpFechaFinal.Value.ToString("yyyy-MM-dd");

            listaReporte = metodosReportes.ObtenerReporteVentas(cadenaFechaInicial, cadenaFechaFinal);

            if (listaReporte.Count() == 0)
            {
                MessageBox.Show("No hay ventas registradas entre esas fechas");
            }
            else
            {
                SepararVentasUsuarios();
                SepararProductosVendidos();
            }
        }

        public void SepararVentasUsuarios()
        {
            Boolean existe;
            for (int i = 0; i < listaReporte.Count; i++)
            {
                existe = false;
                int auxCountUsuario = 0;
                if (listaVentasUsuarios.Count == 0 && existe == false)
                {
                    listaVentasUsuarios.Add(
                        new Usuario(
                            Convert.ToInt32(listaReporte.ElementAt(i).idUsuario),
                            listaReporte.ElementAt(i).nomUsuario,
                            Convert.ToDouble(listaReporte.ElementAt(i).totalVenta)
                            )
                        );
                }
                else
                {
                    for (int j = 0; j < listaVentasUsuarios.Count; j++)
                    {
                        if (Convert.ToInt32(listaReporte.ElementAt(i).idUsuario) == listaVentasUsuarios.ElementAt(j).idUsuario)
                        {
                            existe = true;
                            auxCountUsuario = j;
                            j = listaVentasUsuarios.Count;
                        }
                    }

                    if (existe == true)
                    {
                        listaVentasUsuarios.ElementAt(auxCountUsuario).totalVendido = listaVentasUsuarios.ElementAt(auxCountUsuario).totalVendido + Convert.ToDouble(listaReporte.ElementAt(i).totalVenta);
                    }
                    else
                    {
                        listaVentasUsuarios.Add(
                        new Usuario(
                            Convert.ToInt32(listaReporte.ElementAt(i).idUsuario),
                            listaReporte.ElementAt(i).nomUsuario,
                            Convert.ToDouble(listaReporte.ElementAt(i).totalVenta)
                            )
                        );
                    }
                }
            }
            LlenarDGVVentasUsuarios(listaVentasUsuarios);

            MostrarGraficaVentasUsuarios(listaVentasUsuarios);
        }

        public void SepararProductosVendidos()
        {
            char[] delimitadores = { ',', '-' };
            /*string[] cadenaSeparada = listaReporte.ElementAt(1).idProductos.Split(delimitadores);
            MessageBox.Show(cadenaSeparada[0]+" : "+ cadenaSeparada[1]);*/

            for (int i = 0; i < listaReporte.Count; i++)
            {
                string[] cadenaSeparada = listaReporte.ElementAt(i).idProductos.Trim().Split(delimitadores);
                for(int j = 0; j < cadenaSeparada.Length; j = j+2)
                {
                    if (listaProductosVendidos.Count == 0)
                    {
                        listaProductosVendidos.Add(
                        new Producto(
                            cadenaSeparada[j+1],
                            "Nombre Producto",
                            Convert.ToInt32(cadenaSeparada[j])
                            )
                        );
                    }
                    else
                    {
                        for (int k = 0; k < listaProductosVendidos.Count; k++)
                        {
                            if (cadenaSeparada[j+1].Trim().Equals(listaProductosVendidos.ElementAt(k).idProducto.Trim()))
                            {
                                listaProductosVendidos.ElementAt(k).cantidadVendida = listaProductosVendidos.ElementAt(k).cantidadVendida + Convert.ToInt32(cadenaSeparada[j]);
                                k = listaProductosVendidos.Count;
                            } 
                            else
                            {
                                listaProductosVendidos.Add(
                                new Producto(
                                    cadenaSeparada[j + 1],
                                    "Nombre Producto",
                                    Convert.ToInt32(cadenaSeparada[j])
                                    )
                                );
                                k = listaProductosVendidos.Count;
                            }
                        }
                    }
                }
            }
            ObtenerNombreProductos(listaProductosVendidos);
            LlenarDGVProductosVendidos(listaProductosVendidos);
            MostrarGraficaProductosVendidos(listaProductosVendidos);
        }

        public void ObtenerNombreProductos(List<Producto> listaProductosVendidos)
        {
            for (int i = 0; i < listaProductosVendidos.Count; i++)
            {
                listaProductosVendidos.ElementAt(i).nomProducto = metodosProductos.ObtenerNombreProducto(listaProductosVendidos.ElementAt(i).idProducto.Trim());
            }
        }
        
        public void MostrarConsola(List<Producto> listaProductosVendidos)
        {
            for (int i = 0; i < listaProductosVendidos.Count; i++)
            {
                Console.WriteLine(listaProductosVendidos.ElementAt(i).idProducto+" - "+listaProductosVendidos.ElementAt(i).cantidadVendida);
            }
        }

        public void MostrarGraficaVentasUsuarios(List<Usuario> listaVentasUsuarios)
        {
            chartVentasUsuarios.Series["Series1"].Points.Clear();
            chartVentasUsuarios.Series["Series1"].LegendText = " Total vendido por usuario en el periodo " + dtpFechaInicial.Text + " al " + dtpFechaFinal.Text;

            for(int i = 0; i < listaVentasUsuarios.Count; i++)
            {
                chartVentasUsuarios.Series["Series1"].Points.AddXY(listaVentasUsuarios.ElementAt(i).nomUsuario, listaVentasUsuarios.ElementAt(i).totalVendido);
            }
        }

        public void MostrarGraficaProductosVendidos(List<Producto> listaProductosVendidos)
        {
            chartProductosVendidos.Series["Series1"].Points.Clear();
            chartProductosVendidos.Series["Series1"].LegendText = "Total de productos vendidos en el periodo " + dtpFechaInicial.Text + " al " + dtpFechaFinal.Text;

            for (int i = 0; i < listaProductosVendidos.Count; i++)
            {
                chartProductosVendidos.Series["Series1"].Points.AddXY(listaProductosVendidos.ElementAt(i).idProducto, listaProductosVendidos.ElementAt(i).cantidadVendida);
            }
        }

        public void LlenarDGVVentasUsuarios(List<Usuario> listaVentasUsuarios)
        {
            DGVVentasUsuarios.Rows.Clear();
            for (int i = 0; i < listaVentasUsuarios.Count(); i++)
            {
                DGVVentasUsuarios.Rows.Add(
                listaVentasUsuarios.ElementAt(i).idUsuario,
                listaVentasUsuarios.ElementAt(i).nomUsuario,
                listaVentasUsuarios.ElementAt(i).totalVendido
                );
            }
        }

        public void LlenarDGVProductosVendidos(List<Producto> listaProductosVendidos)
        {
            DGVVentasProductos.Rows.Clear();
            for (int i = 0; i < listaProductosVendidos.Count(); i++)
            {
                DGVVentasProductos.Rows.Add(
                listaProductosVendidos.ElementAt(i).idProducto,
                listaProductosVendidos.ElementAt(i).nomProducto,
                listaProductosVendidos.ElementAt(i).cantidadVendida
                );
            }
        }

        private void btnGenerarReporte_Click(object sender, EventArgs e)
        {
            FormGenerarReporte formGenerarReporte = new FormGenerarReporte();
            formGenerarReporte.listaProductosVendidos = listaProductosVendidos;
            formGenerarReporte.Show();
        }
    }
}


Formulario General Reporte:

using SistemaVentas.Clases;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SistemaVentas.Vistas
{
    public partial class FormReportes : Form
    {
        MetodosReportes metodosReportes;
        MetodosProductos metodosProductos = new MetodosProductos();
        List<Reporte> listaReporte = new List<Reporte>();
        List<Usuario> listaVentasUsuarios = new List<Usuario>();
        List<Producto> listaProductosVendidos = new List<Producto>();

        public FormReportes()
        {
            InitializeComponent();
        }

        private void FormReportes_Load(object sender, EventArgs e)
        {
            FormatoTablaVentaUsuarios();
            FormatoTablaVentaProductos();
        }

        public void FormatoTablaVentaUsuarios()
        {

            DGVVentasUsuarios.Columns.Clear();
            DGVVentasUsuarios.Columns.Add("idUsuario", "ID USUARIO");
            DGVVentasUsuarios.Columns.Add("nomUsuario", "VENDEDOR");
            DGVVentasUsuarios.Columns.Add("total", "TOTAL VENDIDO");

            DGVVentasUsuarios.Columns["idUsuario"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVVentasUsuarios.Columns["nomUsuario"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVVentasUsuarios.Columns["total"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
        }

        public void FormatoTablaVentaProductos()
        {

            DGVVentasProductos.Columns.Clear();
            DGVVentasProductos.Columns.Add("idProducto", "ID PRODUCTO");
            DGVVentasProductos.Columns.Add("nomProducto", "PRODUCTO");
            DGVVentasProductos.Columns.Add("cantVendida", "CANTIDAD VENDIDA");

            DGVVentasProductos.Columns["idProducto"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVVentasProductos.Columns["nomProducto"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DGVVentasProductos.Columns["cantVendida"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
        }

        private void DGVListas_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1)
            {

            }
            else
            {
                
            }
        }

        private void btnObtenerVentas_Click(object sender, EventArgs e)
        {
            listaReporte.Clear();
            listaVentasUsuarios.Clear();
            listaProductosVendidos.Clear();

            DGVVentasUsuarios.Rows.Clear();
            DGVVentasProductos.Rows.Clear();

            metodosReportes = new MetodosReportes();
            string cadenaFechaInicial = dtpFechaInicial.Value.ToString("yyyy-MM-dd");
            string cadenaFechaFinal = dtpFechaFinal.Value.ToString("yyyy-MM-dd");

            listaReporte = metodosReportes.ObtenerReporteVentas(cadenaFechaInicial, cadenaFechaFinal);

            if (listaReporte.Count() == 0)
            {
                MessageBox.Show("No hay ventas registradas entre esas fechas");
            }
            else
            {
                SepararVentasUsuarios();
                SepararProductosVendidos();
            }
        }

        public void SepararVentasUsuarios()
        {
            Boolean existe;
            for (int i = 0; i < listaReporte.Count; i++)
            {
                existe = false;
                int auxCountUsuario = 0;
                if (listaVentasUsuarios.Count == 0 && existe == false)
                {
                    listaVentasUsuarios.Add(
                        new Usuario(
                            Convert.ToInt32(listaReporte.ElementAt(i).idUsuario),
                            listaReporte.ElementAt(i).nomUsuario,
                            Convert.ToDouble(listaReporte.ElementAt(i).totalVenta)
                            )
                        );
                }
                else
                {
                    for (int j = 0; j < listaVentasUsuarios.Count; j++)
                    {
                        if (Convert.ToInt32(listaReporte.ElementAt(i).idUsuario) == listaVentasUsuarios.ElementAt(j).idUsuario)
                        {
                            existe = true;
                            auxCountUsuario = j;
                            j = listaVentasUsuarios.Count;
                        }
                    }

                    if (existe == true)
                    {
                        listaVentasUsuarios.ElementAt(auxCountUsuario).totalVendido = listaVentasUsuarios.ElementAt(auxCountUsuario).totalVendido + Convert.ToDouble(listaReporte.ElementAt(i).totalVenta);
                    }
                    else
                    {
                        listaVentasUsuarios.Add(
                        new Usuario(
                            Convert.ToInt32(listaReporte.ElementAt(i).idUsuario),
                            listaReporte.ElementAt(i).nomUsuario,
                            Convert.ToDouble(listaReporte.ElementAt(i).totalVenta)
                            )
                        );
                    }
                }
            }
            LlenarDGVVentasUsuarios(listaVentasUsuarios);

            MostrarGraficaVentasUsuarios(listaVentasUsuarios);
        }

        public void SepararProductosVendidos()
        {
            char[] delimitadores = { ',', '-' };
            /*string[] cadenaSeparada = listaReporte.ElementAt(1).idProductos.Split(delimitadores);
            MessageBox.Show(cadenaSeparada[0]+" : "+ cadenaSeparada[1]);*/

            for (int i = 0; i < listaReporte.Count; i++)
            {
                string[] cadenaSeparada = listaReporte.ElementAt(i).idProductos.Trim().Split(delimitadores);
                for(int j = 0; j < cadenaSeparada.Length; j = j+2)
                {
                    if (listaProductosVendidos.Count == 0)
                    {
                        listaProductosVendidos.Add(
                        new Producto(
                            cadenaSeparada[j+1],
                            "Nombre Producto",
                            Convert.ToInt32(cadenaSeparada[j])
                            )
                        );
                    }
                    else
                    {
                        for (int k = 0; k < listaProductosVendidos.Count; k++)
                        {
                            if (cadenaSeparada[j+1].Trim().Equals(listaProductosVendidos.ElementAt(k).idProducto.Trim()))
                            {
                                listaProductosVendidos.ElementAt(k).cantidadVendida = listaProductosVendidos.ElementAt(k).cantidadVendida + Convert.ToInt32(cadenaSeparada[j]);
                                k = listaProductosVendidos.Count;
                            } 
                            else
                            {
                                listaProductosVendidos.Add(
                                new Producto(
                                    cadenaSeparada[j + 1],
                                    "Nombre Producto",
                                    Convert.ToInt32(cadenaSeparada[j])
                                    )
                                );
                                k = listaProductosVendidos.Count;
                            }
                        }
                    }
                }
            }
            ObtenerNombreProductos(listaProductosVendidos);
            LlenarDGVProductosVendidos(listaProductosVendidos);
            MostrarGraficaProductosVendidos(listaProductosVendidos);
        }

        public void ObtenerNombreProductos(List<Producto> listaProductosVendidos)
        {
            for (int i = 0; i < listaProductosVendidos.Count; i++)
            {
                listaProductosVendidos.ElementAt(i).nomProducto = metodosProductos.ObtenerNombreProducto(listaProductosVendidos.ElementAt(i).idProducto.Trim());
            }
        }
        
        public void MostrarConsola(List<Producto> listaProductosVendidos)
        {
            for (int i = 0; i < listaProductosVendidos.Count; i++)
            {
                Console.WriteLine(listaProductosVendidos.ElementAt(i).idProducto+" - "+listaProductosVendidos.ElementAt(i).cantidadVendida);
            }
        }

        public void MostrarGraficaVentasUsuarios(List<Usuario> listaVentasUsuarios)
        {
            chartVentasUsuarios.Series["Series1"].Points.Clear();
            chartVentasUsuarios.Series["Series1"].LegendText = " Total vendido por usuario en el periodo " + dtpFechaInicial.Text + " al " + dtpFechaFinal.Text;

            for(int i = 0; i < listaVentasUsuarios.Count; i++)
            {
                chartVentasUsuarios.Series["Series1"].Points.AddXY(listaVentasUsuarios.ElementAt(i).nomUsuario, listaVentasUsuarios.ElementAt(i).totalVendido);
            }
        }

        public void MostrarGraficaProductosVendidos(List<Producto> listaProductosVendidos)
        {
            chartProductosVendidos.Series["Series1"].Points.Clear();
            chartProductosVendidos.Series["Series1"].LegendText = "Total de productos vendidos en el periodo " + dtpFechaInicial.Text + " al " + dtpFechaFinal.Text;

            for (int i = 0; i < listaProductosVendidos.Count; i++)
            {
                chartProductosVendidos.Series["Series1"].Points.AddXY(listaProductosVendidos.ElementAt(i).idProducto, listaProductosVendidos.ElementAt(i).cantidadVendida);
            }
        }

        public void LlenarDGVVentasUsuarios(List<Usuario> listaVentasUsuarios)
        {
            DGVVentasUsuarios.Rows.Clear();
            for (int i = 0; i < listaVentasUsuarios.Count(); i++)
            {
                DGVVentasUsuarios.Rows.Add(
                listaVentasUsuarios.ElementAt(i).idUsuario,
                listaVentasUsuarios.ElementAt(i).nomUsuario,
                listaVentasUsuarios.ElementAt(i).totalVendido
                );
            }
        }

        public void LlenarDGVProductosVendidos(List<Producto> listaProductosVendidos)
        {
            DGVVentasProductos.Rows.Clear();
            for (int i = 0; i < listaProductosVendidos.Count(); i++)
            {
                DGVVentasProductos.Rows.Add(
                listaProductosVendidos.ElementAt(i).idProducto,
                listaProductosVendidos.ElementAt(i).nomProducto,
                listaProductosVendidos.ElementAt(i).cantidadVendida
                );
            }
        }

        private void btnGenerarReporte_Click(object sender, EventArgs e)
        {
            FormGenerarReporte formGenerarReporte = new FormGenerarReporte();
            formGenerarReporte.listaProductosVendidos = listaProductosVendidos;
            formGenerarReporte.Show();
        }
    }
}


Formulario Login


using SistemaVentas.Clases;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SistemaVentas
{
    public partial class FormLogin : Form
    {
        public FormLogin()
        {
            InitializeComponent();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                Usuario usuario;
                MetodosUsuarios metodosUsuarios = new MetodosUsuarios();
                usuario = metodosUsuarios.LoginUsuario(tbUsuario.Text.Trim(), tbContrasena.Text.Trim());

                if (usuario.idUsuario == 0)
                {
                    MessageBox.Show("No se puede acceder, revisa que los datos sean correctos.");
                } else
                {
                    if (usuario.idEstado == 1)
                    {
                        MessageBox.Show("Esta cuenta esta inactiva, contacta al administrador del sistema");
                    } else
                    {
                        MDIPrincipal mdiPrincipal = new MDIPrincipal();
                        mdiPrincipal.idUsuario = usuario.idUsuario;
                        mdiPrincipal.nomUsuario = usuario.nomUsuario;
                        mdiPrincipal.idEstado = usuario.idEstado;
                        mdiPrincipal.idPermiso = usuario.idPermiso;
                        mdiPrincipal.Show();
                        this.Hide();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void FormLogin_Load(object sender, EventArgs e)
        {

        }
    }
}

Glosario de Windows

Computadora:  Es un aparato electrónico, capaz de procesar cualquier tipo de información, de forma rápida y eficiente. La cual es presenta...