Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GUIA DE LABORATORIO:
MANTENIMIENTO DE REGISTROS DE EQUIPOS
2017
Página 1 de 14
Problema:
Implementar una aplicación Windows Forms que permita el mantenimiento de la tabla Equipo.
Implementar en SQL Server procedimientos almacenados que permitan listar, insertar, modificar y eliminar
registros de la tabla Equipo, además de implementar procedimientos almacenados que permitan listar los
datos de los tipos y estados de los esquipos.
Crear la clase Conexión e implementar el método getConecta, el cual permita asociarse a la cadena de
conexión especificada en app.config.
Crear la clase LogicaNegocio e implementar los métodos necesarios para asociarse a todos los
procedimientos almacenados necesarios para el mantenimiento de registros de la tabla Equipo.
Usar un control ToolStrip para las opciones que permita el mantenimiento de registro de equipos.
GUI propuesto
Página 2 de 14
Solución:
1.- Seleccione Archivo > Nuevo Proyecto > Visual C# > Windows > Aplicación Windows Forms y asigne el
nombre al proyecto pjMantenimientoEquipo.
2.- Agregue la referencia System.Configuration, presionando clic derecho sobre el proyecto, luego en Agregar
> Referencia. Después, active el check en System.Configuration:
USE master
GO
Página 3 de 14
4.2.- Script de creación de tablas: EQUIPO, TIPO_EQUIPO y ESTADO_EQUIPO
/* CREACION DE TABLAS */
USE CONTRATO
GO
4.4.- Script de creación de la FK de las tablas: EQUIPO, TIPO_EQUIPO y ESTADO_EQUIPO y establecer las
relaciones entre ellas
ALTER TABLE EQUIPO
ADD FOREIGN KEY (COD_TIP_EQU)
REFERENCES TIPO_EQUIPO
GO
Página 4 de 14
4.5.- Script ingreso de datos en las tablas: EQUIPO, TIPO_EQUIPO y ESTADO_EQUIPO
-- REGISTROS DE LA TABLA: TIPO DE EQUIPO
INSERT INTO TIPO_EQUIPO VALUES
('TIP001','MONITOR'),
('TIP002','MOUSE'),
('TIP003','PARLANTES'),
('TIP004','TECLADO'),
('TIP005','CPU'),
('TIP006','LAPTOP'),
('TIP007','AUDIFONOS'),
('TIP008','PROYECTOR'),
('TIP009','IMPRESORA'),
('TIP010','FOTOCOPIADORA')
GO
Página 5 de 14
IF OBJECT_ID('SP_LISTATIPOEQUIPOS') IS NOT NULL
DROP PROC SP_LISTATIPOEQUIPOS
PRINT 'PROC SP_LISTATIPOEQUIPOS, HA SIDO PROCESADO'
GO
Página 6 de 14
CREATE PROC SP_ACTUALIZAEQUIPO
(
@COD CHAR(6), @TIP CHAR(6), @DES VARCHAR(40), @PRE MONEY, @EST INT
)
AS
UPDATE EQUIPO SET
COD_TIP_EQU = @TIP,
DESC_EQU = @DES,
PRE_EQU = @PRE,
COD_EST = @EST
GO
GO
5.- Configuración del archivo de configuración app.config con la cadena de conexión desde el explorador de
soluciones.
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="cn"
connectionString="Data Source=.;Initial Catalog=CONTRATO;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Página 7 de 14
6.- Agregar la clase Conexión y coloque el siguiente código:
Conexión.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace pjMantenimientoEquipo
{
class Conexion
{
public SqlConnection getConecta()
{
SqlConnection cn = new SqlConnection(ConfigurationManager.
ConnectionStrings["cn"].ConnectionString);
return cn;
}
}
}
LogicaNegocio.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace pjMantenimientoEquipo
{
class LogicaNegocio
{
// Defnicion global
Conexion objCon = new Conexion();
SqlConnection cn = new SqlConnection();
string mensaje;
Página 8 de 14
// Método que lista los estados
public DataTable listaEstado()
{
cn = objCon.getConecta();
SqlDataAdapter da = new SqlDataAdapter("SP_LISTAESTADOS",cn);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
try
{
int n = cmd.ExecuteNonQuery();
mensaje = n.ToString()+" EQUIPO REGISTRADO CORRECTAMENTE";
}
catch (SqlException ex)
{
mensaje = ex.Message;
}
finally
{
cn.Close();
}
return mensaje;
}
Página 9 de 14
// Método que actualiza los datos de un equipo
public string actualizaEquipo(string codigo, string tipo, string descripcion,
double precio, string estado)
{
mensaje = "";
cn = objCon.getConecta();
cn.Open();
SqlCommand cmd = new SqlCommand("SP_ACTUALIZAEQUIPO", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("cod", SqlDbType.Char).Value = codigo;
cmd.Parameters.Add("tip", SqlDbType.Char).Value = tipo;
cmd.Parameters.Add("des", SqlDbType.VarChar).Value = descripcion;
cmd.Parameters.Add("pre", SqlDbType.Money).Value = precio;
cmd.Parameters.Add("est", SqlDbType.Char).Value = estado;
try
{
int n = cmd.ExecuteNonQuery();
mensaje = n.ToString() + " EQUIPO ACTUALIZADO CORRECTAMENTE";
}
catch (SqlException ex)
{
mensaje = ex.Message;
}
finally
{
cn.Close();
}
return mensaje;
}
try
{
int n = cmd.ExecuteNonQuery();
mensaje = n.ToString() + " EQUIPO ELIMINADO CORRECTAMENTE";
}
catch (SqlException ex)
{
mensaje = ex.Message;
}
finally
{
cn.Close();
}
return mensaje;
}
}
}
Página 10 de 14
8.- Coloque el siguiente código para el formulario frmMantenimientoEquipo:
frmMantenimientoEquipo.cs[Design]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;
using System.Threading;
namespace pjMantenimientoEquipo
{
public partial class frmMantenimientoEquipo : Form
{
LogicaNegocio objL = new LogicaNegocio();
public frmMantenimientoEquipo()
{
InitializeComponent();
}
Página 11 de 14
private void frmMantenimientoEquipo_Load(object sender, EventArgs e)
{
llenaTipo();
llenaEstado();
llenaEquipos();
lblCodigo.Text=generaCodigo();
}
void llenaTipo()
{
cboTipo.DataSource = objL.listaTipoEquipos();
cboTipo.DisplayMember = "TIPO";
cboTipo.ValueMember = "CODIGO";
}
void llenaEstado()
{
cboEstado.DataSource = objL.listaEstado();
cboEstado.DisplayMember = "TIPO";
cboEstado.ValueMember = "CODIGO";
}
void llenaEquipos()
{
dgEquipos.DataSource=objL.listaTipoEquipos();
}
string generaCodigo()
{
return objL.generaCodigo();
}
void limpiarControles()
{
txtDescripcion.Clear();
cboEstado.SelectedIndex = -1;
cboTipo.SelectedIndex=-1;
txtPrecio.Clear();
txtDescripcion.Focus();
}
Página 12 de 14
private void mnuGrabar_Click(object sender, EventArgs e)
{
if (valida() == "")
{
// Capturando los datos del formulario
string codigo = lblCodigo.Text;
string descripcion = txtDescripcion.Text;
string tipo = cboTipo.SelectedValue.ToString();
string estado = cboEstado.SelectedIndex.ToString();
double precio = double.Parse(txtPrecio.Text);
// Eliminado
string mensaje = objL.eliminaEquipo(codigo);
MessageBox.Show(mensaje);
llenaEquipos();
}
Página 13 de 14
private void dgEquipos_MouseDoubleClick(object sender, MouseEventArgs e)
{
lblCodigo.Text = dgEquipos.CurrentRow.Cells[0].Value.ToString();
txtDescripcion.Text = dgEquipos.CurrentRow.Cells[1].Value.ToString();
cboTipo.Text = dgEquipos.CurrentRow.Cells[2].Value.ToString();
cboEstado.Text = dgEquipos.CurrentRow.Cells[4].Value.ToString();
txtPrecio.Text = dgEquipos.CurrentRow.Cells[3].Value.ToString();
}
string valida()
{
if(txtDescripcion.Text.Trim().Length==0)
{
txtDescripcion.Clear();
txtDescripcion.Focus();
return " la descripcion del equipo";
}
else if (cboTipo.SelectedIndex==-1)
{
cboTipo.Focus();
return " el tipo de equipo";
}
else if(cboEstado.SelectedIndex==-1)
{
cboEstado.Focus();
return " el estado del equipo";
}
else if(txtPrecio.Text.Trim().Length == 0)
{
txtPrecio.Clear();
txtPrecio.Focus();
return " el precio del equipo";
}
else
return "";
}
}
}
Página 14 de 14