Laboratorio - Crud 2 Tablas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 19

DESARROLLO DE SOLUCIONES

EMPRESARIALES

Carrera Profesional DESARROLLO DE SISTEMAS DE INFORMACIÓN

Semestre Académico III

Módulo II

Docente RICARDO COELLO PALOMINO

Semana 2

Sesión 1

Tema LABORATORIO

Objetivo Construir aplicación utilizando los temas tratados en clase.

Desarrollo de Soluciones Empresariales 1


ADJUNTAR BASE DE DATOS
1.- Copiar los siguientes archivos a la siguiente carpeta:
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA

2.- Click derecho en la carpeta Base de Datos / Adjuntar…

3.- Agregar / Seleccione la base de datos


“comercial” / Aceptar

4.- Revisar el “Explorador de Soluciones”.

Desarrollo de Soluciones Empresariales 2


SCRIPT DE LA BASE DE DATOS
----- CREAR BD Y USAR
create database COMERCIAL
use COMERCIAL
----- CREAR TABLAS
create table categoria
(
id_cat int identity primary key,
nom_cat varchar(50),
est_cat char(1)
)
-----
create table producto
(
id_pro int identity primary key,
id_cat int,
nom_pro varchar(50),
desc_pro varchar(50),
stock_pro int,
pre_com_pro decimal (10,2),
pre_ven_pro decimal(10,2),
fecha_ven_pro date,
est_pro char(1)
)
----- ALTERAR TABLA PARA RELACIONAR

alter table producto


add constraint FK_producto_categoria
foreign key (id_cat)
references categoria(id_cat)

----- NOTA: LLENAR DE REGISTRO LA TABLA CATEGORÍA Y PRODUCTO

----- PROCEDIMIENTOS ALMACENADOS


----- LOS PROCEDIMIENTOS ALMACENADOS SE EJECUTAN CON LA SENTENCIA EXECUTE
exec <NOMBRE_PROCEDIMIENTO> <SIN/CON PARAMETRO>

----- PROCEDIMIENTOS ALMACENADOS LISTAR PRODUCTO


create procedure sp_Listar_Producto
as
select * from producto
where est_pro='A'
go
----- PROCEDIMIENTO BUSCAR PRODUCTO X NOMBRE

create procedure sp_Buscar_Producto


@nom varchar(50)
as
select * from producto
where nom_pro like @nom + '%'
go

Desarrollo de Soluciones Empresariales 3


----- PROCEDIMIENTO PARA CONSULTAR X NOMBRE DE CATEGORIA
create procedure sp_consultarXnombreCategoria
@nom varchar(50)
as
SELECT dbo.producto.id_pro AS Expr1, dbo.producto.nom_pro, dbo.producto.desc_pro,
dbo.producto.stock_pro, dbo.producto.pre_com_pro, dbo.producto.pre_ven_pro,
dbo.producto.fecha_ven_pro, dbo.producto.est_pro, dbo.categoria.nom_cat
FROM dbo.categoria INNER JOIN dbo.producto
ON dbo.categoria.id_cat = dbo.producto.id_cat
where nom_cat=@nom

----- PROCEDIMIENTO REGISTRAR


CREATE PROCEDURE SP_INSERTAR_PRODUCTO
(
@id_cat int,
@nom varchar(50),
@desc varchar(50),
@stock int,
@prec_c decimal(10,2),
@pre_v decimal(10,2),
@fecha date,
@est char(1)
)
as
insert into producto values(@id_cat,@nom,@desc,@stock,@prec_c,@pre_v,@fecha,@est)
go
----- PROCEDIMIENTO ACTUALIZAR

CREATE PROCEDURE SP_ACTUALIZAR_PRODUCTO


(
@id_pro int,
@id_cat int,
@nom varchar(50),
@desc varchar(50),
@stock int,
@prec_c decimal(10,2),
@pre_v decimal(10,2),
@fecha date,
@est char(1)
)
as
UPDATE producto
SET id_cat=@id_cat,nom_pro=@nom,desc_pro=@desc,stock_pro=@stock,
pre_com_pro=@prec_c,pre_ven_pro=@pre_v,fecha_ven_pro=@fecha,est_pro=@est
where id_pro=@id_pro
GO

----- PROCEDIMIENTO ELIMINAR

CREATE PROCEDURE SP_ELIMINAR_PRODUCTO


(
@id_pro int
)
as
DELETE FROM producto
where id_pro=@id_pro

create proc sp_ListarCategoria


as
select * from categoria

Desarrollo de Soluciones Empresariales 4


PROYECTO EN VISUAL STUDIO

1. Abrir el Visual Studio, Seleccione “Aplicación de Windows Form (.NET Framework)”, luego
“Siguiente”

2. Escriba el nombre del proyecto, la ubicación y “Crear”

3.- Luego de crear el proyecto, agregamos proyectos y


clases como se ve en la imagen.

Desarrollo de Soluciones Empresariales 5


4. Menú Archivo / Agregar / Nuevo Proyecto

5.- Seleccione “Biblioteca de clases (.NET Framework)”, luego “Siguiente”.


Nota: si no encuentra tendrá que en el cuadro Buscar plantilla.

6.- Escribir el nombre del Proyecto “CapaDatos”, luego “Crear”

Nota: Repetir los pasos 4, 5 y 6, para


añadir los proyectos (CapaEntidad,
CapaNegocio)

- En cada capa creada observará una clase llamada “Class1”,


tendrá que renombrar de acuerdo a la imagen. Por ejemplo,
en la capa “CapaDatos”, renombramos por ProductoDAO”.
- En la CapaEntidad tiene que agregar una clase. CapaEntidad
/ Agregar / Clase … / escribir el nombre.

Desarrollo de Soluciones Empresariales 6


REALIZANDO REFERENCIAS ENTRE CAPAS

El objetivo de realizar referencias es para que las capas compartan


sus clases.

1. A la capa “CapaDatos” dar click derecho / Agregar Referencias…

2. En la siguiente ventana “Administrador de referencias:”Seleccione


Proyectos / Marque CapaEntidad / Aceptar

3. Realice los siguientes pasos para las capas (CapaNegocio, CRUD_PRODUCTO), observar las
imágenes.

Desarrollo de Soluciones Empresariales 7


CAPA ENTIDAD
Codificando en la clase “Categoria”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CapaEntidad
{
public class Categoria
{

public int cod_cat { get; set; }

public String nom_cat { get; set; }


public String des_cat { get; set; }
}
}

Codificando en la clase “Producto”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CapaEntidad
{
public class Producto
{
public int cod_pro { get; set; }
public int cod_cat { get; set; }
public String nom_pro { get; set; }
public String des_pro { get; set; }
public int stock { get; set; }
public double pre_com { get; set; }
public double pre_ven { get; set; }
public DateTime fecha { get; set; }
public String estado { get; set; }

}
}

Desarrollo de Soluciones Empresariales 8


CAPA DATOS

1.- En la capa CRUD_PRODUCTO, abrir el archivo “App.Config”, añadir el siguiente código:

<?xml version="1.0" encoding="utf-8" ?>


<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>

<connectionStrings>
<add name="cone" connectionString="Data Source=.;Initial Catalog=comercial;Integrated
Security=True" />
</connectionStrings>

</configuration>

2.- Añadir “System.Configuration”, “System.Windows.Forms”, click derecho a la Capa Datos / Agregar /


Referencia… / Ensamblados
3.- Busque y seleccione “System.Configuration” y “System.Windows.Forms”, luego Aceptar.

Codificando en la clase “ProductoDAO”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using CapaEntidad;

using System.Windows.Forms;

namespace CapaDatos
{
public class ProductoDAO
{

SqlConnection cn = new
SqlConnection(ConfigurationManager.ConnectionStrings["cone"].ConnectionString);
private SqlDataReader LeerFilas;

Desarrollo de Soluciones Empresariales 9


public DataTable ListarProducto()
{
SqlCommand cmd = new SqlCommand("sp_Listar_Producto",cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}

public DataTable BuscarProducto(Producto pro)


{
SqlCommand cmd = new SqlCommand("sp_Buscar_Producto", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@nom",pro.nom_pro);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}

public DataTable BuscarProductoXcategoria(Categoria cat)


{
SqlCommand cmd = new SqlCommand("sp_consultarXnombreCategoria", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@nom", cat.nom_cat);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}

public DataTable ListarCategoriaxNombre()


{
cn.Open();
DataTable tabla = new DataTable();
SqlCommand cmd = new SqlCommand("sp_ListarCategoria", cn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
LeerFilas = cmd.ExecuteReader();
tabla.Load(LeerFilas);
LeerFilas.Close();
cn.Close();
return tabla;
}

public void Listar(ListBox lista)


{
cn.Open();

SqlDataReader dr;
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "select * from categoria";
dr = cmd.ExecuteReader();
while (dr.Read())
{
lista.Items.Add(dr["nom_cat"].ToString());
}
dr.Close();
cn.Close();
}

Desarrollo de Soluciones Empresariales 10


public void registrar(Producto pro)
{

SqlCommand cmd = new SqlCommand("SP_INSERTAR_PRODUCTO", cn);


cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id_cat", pro.cod_cat);
cmd.Parameters.AddWithValue("@nom", pro.nom_pro);
cmd.Parameters.AddWithValue("@desc", pro.des_pro);
cmd.Parameters.AddWithValue("@stock", pro.stock);
cmd.Parameters.AddWithValue("@prec_c", pro.pre_com);
cmd.Parameters.AddWithValue("@pre_v", pro.pre_ven);
cmd.Parameters.AddWithValue("@fecha", pro.fecha);
cmd.Parameters.AddWithValue("@est", pro.estado);

if (cn.State == ConnectionState.Open) cn.Close();

cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}

public void actualizar(Producto pro)


{

SqlCommand cmd = new SqlCommand("SP_ACTUALIZAR_PRODUCTO", cn);


cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id_pro", pro.cod_pro);
cmd.Parameters.AddWithValue("@id_cat", pro.cod_cat);
cmd.Parameters.AddWithValue("@nom", pro.nom_pro);
cmd.Parameters.AddWithValue("@desc", pro.des_pro);
cmd.Parameters.AddWithValue("@stock", pro.stock);
cmd.Parameters.AddWithValue("@prec_c", pro.pre_com);
cmd.Parameters.AddWithValue("@pre_v", pro.pre_ven);
cmd.Parameters.AddWithValue("@fecha", pro.fecha);
cmd.Parameters.AddWithValue("@est", pro.estado);

if (cn.State == ConnectionState.Open) cn.Close();

cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}

public void eliminar(Producto pro)


{

SqlCommand cmd = new SqlCommand("SP_ELIMINAR_PRODUCTO", cn);


cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id_pro", pro.cod_pro);

if (cn.State == ConnectionState.Open) cn.Close();

cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
}
}

Desarrollo de Soluciones Empresariales 11


CAPA NEGOCIO: Nproductos

using CapaDatos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using CapaEntidad;
using System.Windows.Forms;

namespace CapaNegocio
{
public class Nproducto
{

ProductoDAO proDAO = new ProductoDAO();

public DataTable ListarProducto()


{
return proDAO.ListarProducto();
}

public DataTable BuscarProducto(Producto pro)


{
return proDAO.BuscarProducto(pro);
}
public DataTable BuscarProductoXcategoria(Categoria cat)
{
return proDAO.BuscarProductoXcategoria(cat);
}

public void Listar(ListBox lista)


{
proDAO.Listar(lista);
}

public void registrar(Producto pro)


{
proDAO.registrar(pro);
}

public void actualizar(Producto pro)


{
proDAO.actualizar(pro);
}

public void eliminar(Producto pro)


{
proDAO.eliminar(pro);
}
}
}

public DataTable ListarCategoriaxNombre()


{
return proDAO.ListarCategoriaxNombre();
}

Desarrollo de Soluciones Empresariales 12


CAPA PRESENTACIÓN: CRUD_PRODUCTO

1.- Agregar el control “TabControl” en el formulario, luego realice los cambios en la ventana propiedades.

CONTROL PROPIEDADES VALOR


TABCONTROL TagPages (Colección) ….

2.- Dar un click en los 3 puntos.


3.- Agregar dos TabPage, a cada tabpage en la propieda Text, escriba un título.

TABPAGE LISTADO DE PRODUCTOS

Desarrollo de Soluciones Empresariales 13


Agregar los siguientes controles:

CONTROL PROPIEDADES VALOR


button Text Agregar Producto
Name btnAgregarProducto
Label Text Buscar Producto
Textbox Text
Name txtbuscar
DataGridView Name TablaProducto

Nota:En el DataGridView deshabilitar los casilleros como en la figura.


1.- Dar un click izquierdo en el triángulo / Editar columnas…

2.- Se mostrara la ventana ”Editar columnas”.Dar un click en el boton “Agregar…”

3.- Realizar cambios en la ventana “Agregar columna”, luego dar click en “Agregar” Retornara a la ventana
”Editar columnas”.
4.- En la ventana ”Editar columnas”.
Realizar cambios en Apariencia:
- Text : Actualizar
- UseColumnTextForButton : true
5.- dar click en el boton “Aceptar”.

Nota: repetir los pasos del 2 al 5 para el botón


Eliminar.

Desarrollo de Soluciones Empresariales 14


TABPAGE MANTENIMIENTO DE PRODUCTOS

Agregar los siguientes controles:

CONTROL PROPIEDADES VALOR


button Text Agregar
Name btnAgregar
button Text Modificar
Name btnModificar
Textbox1 Name txtCodigo
Textbox2 Name txtnom
Textbox3 Name txtdesc
Textbox4 Name txtprec
Textbox5 Name txtprev
Textbox6 Name txtstock
Textbox7 Name txtestado
Label1 Text Codigo
Label2 Text Nombre
Label3 Text Descripción
Label4 Text Precio Compra
Label5 Text Precio Venta
Label6 Text Stock
Label7 Text Estado
Label8 Text Fecha
Label9 Text Categoria
DateTimePicker Name fecha
ComboBox Name cmbCategoria
DropDownStyle DropDownList

Desarrollo de Soluciones Empresariales 15


TABPAGE CONSULTA DE PRODUCTOS

1.- Agregar los siguientes controles:

CONTROL PROPIEDADES VALOR


DataGridView Name TablaProducto2
ListBox Name lstCategoria

2.-En el DataGridView, dar un click izquierdo en el triángulo


Nota: deshabilitar los casilleros como en la figura.

3.- Codificar:

using CapaDatos;
using CapaEntidad;
using CapaNegocio;
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;

Desarrollo de Soluciones Empresariales 16


namespace CRUD_PRODUCTO
{
public partial class Form1 : Form
{
Nproducto nPro = new Nproducto();
Producto pro = new Producto();
Categoria cat = new Categoria();

public Form1()
{
InitializeComponent();
}

private void btnAgregarProducto_Click(object sender, EventArgs e)


{
tabControl1.SelectedTab = tabPage2;
btnAgregar.Enabled = true;
}

private void Form1_Load(object sender, EventArgs e)


{
TablaProducto.DataSource= nPro.ListarProducto();
TablaProducto2.DataSource = nPro.ListarProducto();

ListarCategoria();

nPro.Listar(lstProducto);

btnAgregar.Enabled = false;
btnModificar.Enabled = false;
}

Dar doble click al textBox llamado txtBuscar:

private void txtBuscar_TextChanged(object sender, EventArgs e)


{
pro.nom_pro = txtbuscar.Text;
DataTable dt = new DataTable();
dt = nPro.BuscarProducto(pro);
TablaProducto.DataSource= dt;

Dar doble clic al listBox


private void lstCategoria_SelectedIndexChanged(object sender, EventArgs e)
{
cat.nom_cat = lstCategoria.Text;
DataTable dt = new DataTable();
dt = nPro.BuscarProductoXcategoria(cat);
TablaProducto2.DataSource = dt;
}

Nota: Crear el método listar categoría

private void ListarCategoria()


{
ProductoDAO pro = new ProductoDAO();
cmbCategoria.DataSource = pro.ListarCategoriaxNombre();
cmbCategoria.DisplayMember = "nom_cat";
cmbCategoria.ValueMember = "id_cat";
}

Desarrollo de Soluciones Empresariales 17


private void btnAgregar_Click(object sender, EventArgs e)
{
pro.cod_cat = Convert.ToInt32 (cmbCategoria.SelectedValue);
pro.nom_pro = txtnom.Text;
pro.des_pro = txtdesc.Text;
pro.stock =Convert.ToInt32(txtstock.Text);
pro.pre_com =Convert.ToDouble(txtprec.Text);
pro.pre_ven = Convert.ToDouble(txtprev.Text);
pro.fecha = fecha.Value;
pro.estado = txtestado.Text;

nPro.registrar(pro);

tabControl1.SelectedTab = tabPage1;
TablaProducto.DataSource = nPro.ListarProducto();

btnAgregar.Enabled = false;
btnModificar.Enabled = false;
}

private void TablaProducto_CellContentClick(object sender, DataGridViewCellEventArgs e)


{
int fila = TablaProducto.CurrentCell.RowIndex;
int pos = TablaProducto.Columns[e.ColumnIndex].Index;

if (pos==0) {
txtCodigo.Text = TablaProducto[2, fila].Value.ToString();
cmbCategoria.Text = TablaProducto[3, fila].Value.ToString();
txtnom.Text = TablaProducto[4, fila].Value.ToString();
txtdesc.Text = TablaProducto[5, fila].Value.ToString();
txtstock.Text = TablaProducto[6, fila].Value.ToString();
txtprec.Text = TablaProducto[7, fila].Value.ToString();
txtprev.Text = TablaProducto[8, fila].Value.ToString();
fecha.Text = TablaProducto[9, fila].Value.ToString();
txtestado.Text = TablaProducto[10, fila].Value.ToString();
tabControl1.SelectedTab = tabPage2;

btnAgregar.Enabled = false;
btnModificar.Enabled = true;
}
if (pos == 1)
{
pro.cod_pro =Convert.ToInt32( TablaProducto[2, fila].Value.ToString());
nPro.eliminar(pro);
TablaProducto.DataSource = nPro.ListarProducto();
}
}

Desarrollo de Soluciones Empresariales 18


private void btnModificar_Click(object sender, EventArgs e)
{
pro.cod_pro = Convert.ToInt32(txtCodigo.Text);
pro.cod_cat = Convert.ToInt32(cmbCategoria.SelectedValue);
pro.nom_pro = txtnom.Text;
pro.des_pro = txtdesc.Text;
pro.stock = Convert.ToInt32(txtstock.Text);
pro.pre_com = Convert.ToDouble(txtprec.Text);
pro.pre_ven = Convert.ToDouble(txtprev.Text);
pro.fecha = fecha.Value;
pro.estado = txtestado.Text;
nPro.actualizar(pro);

tabControl1.SelectedTab = tabPage1;
TablaProducto.DataSource = nPro.ListarProducto();

btnAgregar.Enabled = false;
btnModificar.Enabled = false;

}
}
}

Desarrollo de Soluciones Empresariales 19

También podría gustarte