Productos
Para realizar la parte de agregar productos a nuestro punto de venta las caracteristicas que va a tener son las siguientes:- Agregar productos
- Buscar productos
- Eliminar productos
- Actualizar productos
Antes comenzar a codificar agregamos otro Windows Forms y los nombramos AgregarProducto.cs a nuestro formulario lo nombramos frmAgregarProducto y en el texto escribimos Agregar Producto
Nos vamos al formulario del menú y hacemos doble clic en el botón de Productos y el método que se genera escribimos el siguiente código:
private void BtnProductos_Click(object sender, EventArgs e) { this.Hide(); frmAgregarProducto agregarProducto = new frmAgregarProducto(); agregarProducto.Show(); }
Quedando el archivo Menu.cs de manera parcial de la siguiente forma:
namespace GatoAbarrotero { public partial class frmMenu : Form { public frmMenu() { InitializeComponent(); } private void BtnProductos_Click(object sender, EventArgs e) { this.Hide(); frmAgregarProducto agregarProducto = new frmAgregarProducto(); agregarProducto.Show(); } } }
Agregar Producto
Nos posicionamos en el formulario de Agregar ProductoNos vamos al Cuadro de Herramientas y en donde dice Menú y barras de heramientas seleccionamos MenuStripUna vez selecionado nuestro MenuStrip en el encabezado nombramos Opciones y las opciones que se le agregaran después del encabezado:
- Buscar Producto Pantalla para buscar nuestros productos.
- Eliminar Producto Pantalla para eliminar nuestros productos.
- Actualizar Producto Pantalla para actualizar nuestros productos.
- MenúRetorno al menú principal.
Agregamos un Label y en el texto ponemos Agregar Producto
Integramos 3 Label y en el texto escribimos lo siguiente:
- Código de Barras
- Nombre del Producto
- Precio
De lado derecho agegamos TextBox para cada opción y lo nombramos:
- txtCodigoBarras
- txtNombreProducto
- txtPrecio
Lo que sigue es agregar un Button y lo nombramos btnGuardarProducto y en texto escribimos Guardar Producto
Hacemos doble clic en btnGaurdarProducto y en el archivo AgregarProducto.cs escribmos el siguiente código:
using MySql.Data.MySqlClient; 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 GatoAbarrotero { public partial class frmAgregarProducto : Form { MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb"); public frmAgregarProducto() { InitializeComponent(); } private void BtnGuardarProducto_Click(object sender, EventArgs e) { try { conexion.Open(); string insertarQuery = "INSERT INTO producto (idProducto,codigoBarras,nombre,precio) VALUES(null,?codigoBarras,?nombre,?precio)"; MySqlCommand cmd = new MySqlCommand(insertarQuery, conexion); cmd.Parameters.Add("?codigoBarras", MySqlDbType.VarChar, 60).Value = txtCodigoBarras.Text; cmd.Parameters.Add("?nombre", MySqlDbType.VarChar, 60).Value = txtNombreProducto.Text; cmd.Parameters.Add("?precio", MySqlDbType.Decimal, 60).Value = txtPrecio.Text; cmd.ExecuteNonQuery(); MessageBox.Show("Registro Exitoso"); txtCodigoBarras.Text = " "; txtNombreProducto.Text = " "; txtPrecio.Text = " "; conexion.Close(); } catch { MessageBox.Show("Inserción fallida"); } } } }
No olvidar que este archivo queda de manera parcial falta darle funcionalidad al ménu. Corremos nuestro ejemplo:
Agregamos un producto
Le damos en Guardar Producto
Presionamos aceptar
Nota: Les dejo de tarea las validaciones para no realizar registros en blanco.
Buscar Productos
Para iniciar con esta opción agregamos otro Windows Forms y lo nombamos BuscarProducto.cs al formulario lo nombramos frmVerProducto.Nos vamos al formulario AgregarProducto y el menú hacemos doble clic en BuscarProducto y ahí escribimos el siguiente código.
private void BuscarProductoToolStripMenuItem_Click(object sender, EventArgs e) { frmVerProducto verProducto = new frmVerProducto(); verProducto.Show(); }
El archivo AgregarProducto.csNos queda de manera temporal de la siguiente forma:
using MySql.Data.MySqlClient; 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 GatoAbarrotero { public partial class frmAgregarProducto : Form { MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb"); public frmAgregarProducto() { InitializeComponent(); } private void BtnGuardarProducto_Click(object sender, EventArgs e) { try { conexion.Open(); string insertarQuery = "INSERT INTO producto (idProducto,codigoBarras,nombre,precio) VALUES(null,?codigoBarras,?nombre,?precio)"; MySqlCommand cmd = new MySqlCommand(insertarQuery, conexion); cmd.Parameters.Add("?codigoBarras", MySqlDbType.VarChar, 60).Value = txtCodigoBarras.Text; cmd.Parameters.Add("?nombre", MySqlDbType.VarChar, 60).Value = txtNombreProducto.Text; cmd.Parameters.Add("?precio", MySqlDbType.Decimal, 60).Value = txtPrecio.Text; cmd.ExecuteNonQuery(); MessageBox.Show("Registro Exitoso"); txtCodigoBarras.Text = " "; txtNombreProducto.Text = " "; txtPrecio.Text = " "; conexion.Close(); } catch { MessageBox.Show("Inserción fallida"); } } private void BuscarProductoToolStripMenuItem_Click(object sender, EventArgs e) { frmVerProducto verProducto = new frmVerProducto(); verProducto.Show(); } } }
Ahora volvamos al formulario BuscarProducto comenzemos por agregar un Label en el texto vamos a escribir Buscar Productos
Agregamos otro Label en el texto escribimos Nombre Producto
A lado derecho de Nombre Producto agregamos un TextBox y lo nombramos txtNombreProducto
En la parte de abajo agregamos un Button y lo nombramos btnBuscarProducto y en el texto escribimos Buscar Producto
Ahora nos vamos al Cuadro de herramientas y en Datos seleccionamos DataGridView
Lo dibujamos y deseleccionamos las opciones de:
- Habilitar acción de agregar
- Habilitar edición
- Habilitar eliminación
Hacemos doble clic en el botón de Buscar Producto y escribimos el siguien código:
using MySql.Data.MySqlClient; 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 GatoAbarrotero { public partial class frmVerProducto : Form { MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb"); public frmVerProducto() { InitializeComponent(); } private void BtnBuscarProducto_Click(object sender, EventArgs e) { try { conexion.Open(); string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' "; MySqlCommand cmd = new MySqlCommand(selectQuery, conexion); MySqlDataAdapter selecionnar = new MySqlDataAdapter(); selecionnar.SelectCommand = cmd; DataTable datosProducto = new DataTable(); selecionnar.Fill(datosProducto); dtgvProductos.DataSource = datosProducto; conexion.Close(); } catch { MessageBox.Show("Error al conectar"); } } } }
Probamos:
Buscamos sin meter ningun texto en el textlabel, vemos que aparecen todos los productos aqui queda al criterio del programador en poner una validación para el texto en blanco porque da la casualidad que pasa si tienes mil productos o más.
Ahora buscamos como sidral
Eliminar Producto
Comenzamos agregando un Windows Forms y lo nombramos EliminarProducto.cs y al formulario lo nombramos frmEliminarProducto.Nos vamos al formulario AgregarProducto y el menú hacemos doble clic en EliminarProducto y ahí escribimos el siguiente código.private void EliminarProductoToolStripMenuItem_Click(object sender, EventArgs e) { this.Hide(); frmEliminarProducto eliminarProdcuto = new frmEliminarProducto(); eliminarProdcuto.Show(); }
El archivo AgregarProducto.csNos queda de manera temporal de la siguiente forma:
using MySql.Data.MySqlClient; 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 GatoAbarrotero { public partial class frmAgregarProducto : Form { MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb"); public frmAgregarProducto() { InitializeComponent(); } private void BtnGuardarProducto_Click(object sender, EventArgs e) { try { conexion.Open(); string insertarQuery = "INSERT INTO producto (idProducto,codigoBarras,nombre,precio) VALUES(null,?codigoBarras,?nombre,?precio)"; MySqlCommand cmd = new MySqlCommand(insertarQuery, conexion); cmd.Parameters.Add("?codigoBarras", MySqlDbType.VarChar, 60).Value = txtCodigoBarras.Text; cmd.Parameters.Add("?nombre", MySqlDbType.VarChar, 60).Value = txtNombreProducto.Text; cmd.Parameters.Add("?precio", MySqlDbType.Decimal, 60).Value = txtPrecio.Text; cmd.ExecuteNonQuery(); MessageBox.Show("Registro Exitoso"); txtCodigoBarras.Text = " "; txtNombreProducto.Text = " "; txtPrecio.Text = " "; conexion.Close(); } catch { MessageBox.Show("Inserción fallida"); } } private void BuscarProductoToolStripMenuItem_Click(object sender, EventArgs e) { frmVerProducto verProducto = new frmVerProducto(); verProducto.Show(); } private void EliminarProductoToolStripMenuItem_Click(object sender, EventArgs e) { this.Hide(); frmEliminarProducto eliminarProdcuto = new frmEliminarProducto(); eliminarProdcuto.Show(); } } }
Ahora comezemos por el formulario EliminarProducto Escribimos un Label y en el texto escribmos Eliminar Productos
Agregamos otro Label en el texto escribimos Nombre Producto
A lado derecho de Nombre Producto agregamos un TextBox y lo nombramos txtNombreProducto
En la parte de abajo agregamos un Button y lo nombramos btnBuscarProducto y en el texto escribimos Buscar Producto
Agregamos otro Button y lo nombramos btnEliminarProducto y en el texto escribmos Eliminar Producto
Ahora nos vamos al Cuadro de herramientas y en Datos seleccionamos DataGridView
Lo dibujamos y deseleccionamos las opciones de:
- Habilitar acción de agregar
- Habilitar edición
- Habilitar eliminación
Nos vamos al Cuadro de Herramientas y en donde dice Menú y barras de heramientas seleccionamos MenuStrip
Una vez selecionado nuestro MenuStrip en el encabezado nombramos Opciones y las opciones que se le agregaran después del encabezado:
- Agregar Producto
- Actualizar Producto
- Menú
Hacemos doble clic en el botón de Buscar Producto y escribimos el siguien código:
using MySql.Data.MySqlClient; 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 GatoAbarrotero { public partial class frmEliminarProducto : Form { MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb"); public frmEliminarProducto() { InitializeComponent(); } private void Label2_Click(object sender, EventArgs e) { } private void BtnBuscarProducto_Click(object sender, EventArgs e) { try { conexion.Open(); string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' "; MySqlCommand cmd = new MySqlCommand(selectQuery, conexion); MySqlDataAdapter selecionnar = new MySqlDataAdapter(); selecionnar.SelectCommand = cmd; DataTable datosProducto = new DataTable(); selecionnar.Fill(datosProducto); dtgvProductos.DataSource = datosProducto; conexion.Close(); btnEliminarProducto.Enabled = true; } catch { MessageBox.Show("Error al conectar"); } } private void FrmEliminarProducto_Load(object sender, EventArgs e) { btnEliminarProducto.Enabled = false; } } }
Hacemos doble click en botón Eliminar Productos y el formulario quedaría de la siguiente forma:
using MySql.Data.MySqlClient;
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 GatoAbarrotero
{
public partial class frmEliminarProducto : Form
{
MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
public frmEliminarProducto()
{
InitializeComponent();
}
private void Label2_Click(object sender, EventArgs e)
{
}
private void BtnBuscarProducto_Click(object sender, EventArgs e)
{
try
{
conexion.Open();
string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' ";
MySqlCommand cmd = new MySqlCommand(selectQuery, conexion);
MySqlDataAdapter selecionnar = new MySqlDataAdapter();
selecionnar.SelectCommand = cmd;
DataTable datosProducto = new DataTable();
selecionnar.Fill(datosProducto);
dtgvProductos.DataSource = datosProducto;
conexion.Close();
btnEliminarProducto.Enabled = true;
}
catch
{
MessageBox.Show("Error al conectar");
}
}
private void FrmEliminarProducto_Load(object sender, EventArgs e)
{
btnEliminarProducto.Enabled = false;
}
private void BtnEliminarProducto_Click(object sender, EventArgs e)
{
if (dtgvProductos.CurrentRow == null)
{
MessageBox.Show("Selecionar fila");
return;
}
int idProducto = Convert.ToInt32(dtgvProductos.CurrentRow.Cells["idProducto"].Value);
try
{
conexion.Open();
string eliminarQuery = "DELETE FROM producto WHERE idProducto = @idProducto ";
MySqlCommand cmd = new MySqlCommand(eliminarQuery, conexion);
cmd.Parameters.AddWithValue("@idProducto", idProducto);
cmd.ExecuteNonQuery();
MessageBox.Show("Eliminación Exitosa");
dtgvProductos.Rows.Remove(dtgvProductos.CurrentRow);
conexion.Close();
}
catch
{
MessageBox.Show("Eliminación fallida");
}
}
}
}
Ahora habilitamos la opción de menú Agregar Producto haciendo click.
using MySql.Data.MySqlClient;
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 GatoAbarrotero
{
public partial class frmEliminarProducto : Form
{
MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
public frmEliminarProducto()
{
InitializeComponent();
}
private void Label2_Click(object sender, EventArgs e)
{
}
private void BtnBuscarProducto_Click(object sender, EventArgs e)
{
try
{
conexion.Open();
string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' ";
MySqlCommand cmd = new MySqlCommand(selectQuery, conexion);
MySqlDataAdapter selecionnar = new MySqlDataAdapter();
selecionnar.SelectCommand = cmd;
DataTable datosProducto = new DataTable();
selecionnar.Fill(datosProducto);
dtgvProductos.DataSource = datosProducto;
conexion.Close();
btnEliminarProducto.Enabled = true;
}
catch
{
MessageBox.Show("Error al conectar");
}
}
private void FrmEliminarProducto_Load(object sender, EventArgs e)
{
btnEliminarProducto.Enabled = false;
}
private void BtnEliminarProducto_Click(object sender, EventArgs e)
{
if (dtgvProductos.CurrentRow == null)
{
MessageBox.Show("Selecionar fila");
return;
}
int idProducto = Convert.ToInt32(dtgvProductos.CurrentRow.Cells["idProducto"].Value);
try
{
conexion.Open();
string eliminarQuery = "DELETE FROM producto WHERE idProducto = @idProducto ";
MySqlCommand cmd = new MySqlCommand(eliminarQuery, conexion);
cmd.Parameters.AddWithValue("@idProducto", idProducto);
cmd.ExecuteNonQuery();
MessageBox.Show("Eliminación Exitosa");
dtgvProductos.Rows.Remove(dtgvProductos.CurrentRow);
conexion.Close();
}
catch
{
MessageBox.Show("Eliminación fallida");
}
}
private void AgregarProductoToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
frmAgregarProducto agregarProducto = new frmAgregarProducto();
agregarProducto.Show();
}
}
}
Por último habilitamos la opción menú
using MySql.Data.MySqlClient;
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 GatoAbarrotero
{
public partial class frmEliminarProducto : Form
{
MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
public frmEliminarProducto()
{
InitializeComponent();
}
private void Label2_Click(object sender, EventArgs e)
{
}
private void BtnBuscarProducto_Click(object sender, EventArgs e)
{
try
{
conexion.Open();
string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' ";
MySqlCommand cmd = new MySqlCommand(selectQuery, conexion);
MySqlDataAdapter selecionnar = new MySqlDataAdapter();
selecionnar.SelectCommand = cmd;
DataTable datosProducto = new DataTable();
selecionnar.Fill(datosProducto);
dtgvProductos.DataSource = datosProducto;
conexion.Close();
btnEliminarProducto.Enabled = true;
}
catch
{
MessageBox.Show("Error al conectar");
}
}
private void FrmEliminarProducto_Load(object sender, EventArgs e)
{
btnEliminarProducto.Enabled = false;
}
private void BtnEliminarProducto_Click(object sender, EventArgs e)
{
if (dtgvProductos.CurrentRow == null)
{
MessageBox.Show("Selecionar fila");
return;
}
int idProducto = Convert.ToInt32(dtgvProductos.CurrentRow.Cells["idProducto"].Value);
try
{
conexion.Open();
string eliminarQuery = "DELETE FROM producto WHERE idProducto = @idProducto ";
MySqlCommand cmd = new MySqlCommand(eliminarQuery, conexion);
cmd.Parameters.AddWithValue("@idProducto", idProducto);
cmd.ExecuteNonQuery();
MessageBox.Show("Eliminación Exitosa");
dtgvProductos.Rows.Remove(dtgvProductos.CurrentRow);
conexion.Close();
}
catch
{
MessageBox.Show("Eliminación fallida");
}
}
private void AgregarProductoToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
frmAgregarProducto agregarProducto = new frmAgregarProducto();
agregarProducto.Show();
}
private void MenuToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
frmMenu menu = new frmMenu();
menu.Show();
}
}
}
Probamos:
Buscamos un producto y presionamos Buscar producto
Seleccionamos y presionamos Eliminar Producto
Presionamos Aceptar
El resultado final es este