MantenimientoClientes

download MantenimientoClientes

of 14

Transcript of MantenimientoClientes

  • 8/14/2019 MantenimientoClientes

    1/14

    Mantenimiento de Clientes en 3 Capas Pag: 1 / 14

    _______________________________________________________________________________ Taller de N-Capas

    Mantenimiento de Clientes en 3 Capas

    1.- Crearemos una solucin en blanco, para lo cual sobre el men Archivo (File), NuevoProyecto (New Project), seleccionamos Otros tipos de Proyecto, Soluciones de VisualStudio y en plantilla Elegimos Solucin en Blanco (Blank Solution) y le damos el nombre deMantenimiento_3Capas, tal como se muestra en la siguiente figura:

    2.- Agregaremos ahora 3 Nuevos proyectos a nuestra aplicacin para lo cual en elExplorador de Soluciones (Solution Explorer) seleccionamos la solucinMantenimiento_3Capas, clic derecho Agregar (Add), Nuevo Proyecto (New Project), tal comose muestra a continuacin:

  • 8/14/2019 MantenimientoClientes

    2/14

    Mantenimiento de Clientes en 3 Capas Pag: 2 / 14

    _______________________________________________________________________________ Taller de N-Capas

    3.- Luego de esto seleccionaremos el tipo de Proyecto, eligiendo Visual C#, Windows ycomo plantilla Aplicacin para Windows (Windows Application), dndole el nombre deLibNet_Presentacion, tal como se muestra a continuacin:

    4.- Siguiendo este mismo proceso agregaremos los 2 proyectos faltantes pero de tipoLibrera de Clases (Class Library) para la Capa de Negocio y la capa de Datos a los cualeslos denominaremos LibNet_Business y LibNet_Data respectivamente.

  • 8/14/2019 MantenimientoClientes

    3/14

  • 8/14/2019 MantenimientoClientes

    4/14

    Mantenimiento de Clientes en 3 Capas Pag: 4 / 14

    _______________________________________________________________________________ Taller de N-Capas

    6.- Luego de esto vamos a renombrar los archivos de clases creados de manerapredeterminada:

    En el proyecto: LibNet_Data

    Nombre Archivo Original Nuevo Nombre de ArchivoClass1.cs Cls_DBCliente.cs

    En el proyecto: LibNet_Business

    Nombre Archivo Original Nuevo Nombre de ArchivoClass1.cs Cls_BCliente.cs

    En el proyecto: LibNet_Presentacion

    Nombre Archivo Original Nuevo Nombre de ArchivoForm1.cs Frm_Mant_Clientes.cs

    Al final el explorador de soluciones quedaria de la siguiente manera:

    7.- Ahora procederemos a escribir el codigo necesario que permita conectar y utilizar losprocedimientos almacenados en el servidor de base de datos, para lo cual ingresaremos alcodigo de la clase Cls_DBCliente.cs y lo primero que tenemos que ingresar es el codigo quepermita acceder a los componentes de acceso a datos:

    using System.Data;using System.Data.SqlClient;

  • 8/14/2019 MantenimientoClientes

    5/14

    Mantenimiento de Clientes en 3 Capas Pag: 5 / 14

    _______________________________________________________________________________ Taller de N-Capas

    Y luego especificamos una cadena de conexion y un objeto SqlConnection que lo utilice:

    const string CadCn = "Server=(local)\\sqlexpress;Database=BDVIDEOS;" +"Integrated Security=yes" ;

    SqlConnection Cn = new SqlConnection (CadCn);

    8.- El codigo completo de nuestra capa de datos se muestra a continuacion:

    using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Windows.Forms;

    namespace LibNet_Data{

    public class Cls_DBCliente{

    const string CadCn = "Server=(local)\\sqlexpress;Database=BDVIDEOS;" +"Integrated Security=yes" ;

    SqlConnection Cn = new SqlConnection (CadCn);

    private void AbrirConexion(){

    try{

    if (Cn.State == ConnectionState .Closed)Cn.Open();

    }catch (SqlException ex){

    MessageBox.Show(ex.Message);}}

    private void CerrarConexion(){

    try{

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

    }catch (SqlException ex){

    MessageBox.Show(ex.Message);}

    }

    public DataTable ListaClientes( string NomSP){

    AbrirConexion();SqlCommand oCmd = Cn.CreateCommand();oCmd.CommandText = NomSP;oCmd.CommandType = CommandType .StoredProcedure;

  • 8/14/2019 MantenimientoClientes

    6/14

    Mantenimiento de Clientes en 3 Capas Pag: 6 / 14

    _______________________________________________________________________________ Taller de N-Capas

    SqlDataAdapter oDap = new SqlDataAdapter (oCmd);

    DataTable oTabla = new DataTable ();oDap.Fill(oTabla);CerrarConexion();return oTabla;

    }

    public int AgregarCliente( string NomSP, string Codigo, string Nombre,string RUC, string Telefono, int Estado)

    {try{

    AbrirConexion();SqlCommand oCmd = new SqlCommand (NomSP, Cn);oCmd.CommandType = CommandType .StoredProcedure;

    oCmd.Parameters.AddWithValue( "@CLI_CODIGO" , Codigo);oCmd.Parameters.AddWithValue( "@CLI_NOMBRE" , Nombre);oCmd.Parameters.AddWithValue( "@CLI_RUC" , RUC);oCmd.Parameters.Add( "@CLI_TELEFONO" , SqlDbType .VarChar, 11).Value =

    Telefono;oCmd.Parameters.Add( "@CLI_ESTADO" , SqlDbType .Bit).Value = Estado;

    int n;n = Convert .ToInt32(oCmd.ExecuteNonQuery());CerrarConexion();return n;

    }catch{

    throw new Exception ("Error de ClsDatos.AgregarCliente" );}

    }

    public int EliminarCliente( string NomSP, string Codigo){

    try{

    AbrirConexion();SqlCommand oCmd = new SqlCommand (NomSP, Cn);oCmd.CommandType = CommandType .StoredProcedure;oCmd.Parameters.Add( "@CLI_CODIGO" , SqlDbType .Char, 5).Value = Codigo;

    int n;n = Convert .ToInt32(oCmd.ExecuteNonQuery());CerrarConexion();return n;

    }catch{

    throw new Exception ("Error de ClsDatos.EliminarCliente" );}

    }

  • 8/14/2019 MantenimientoClientes

    7/14

    Mantenimiento de Clientes en 3 Capas Pag: 7 / 14

    _______________________________________________________________________________ Taller de N-Capas

    public string NuevoCodigoCliente(){

    try{

    AbrirConexion();SqlCommand oCmd = new SqlCommand ("USP_NUEVO_CLIENTE" , Cn);oCmd.CommandType = CommandType .StoredProcedure;oCmd.Parameters.Add( "@CODIGO" , SqlDbType .Char, 5).Direction =

    ParameterDirection .Output;oCmd.ExecuteNonQuery();string NewCodigo = oCmd.Parameters[0].Value.ToString();CerrarConexion();return NewCodigo;

    }catch (Exception ex){

    MessageBox.Show(ex.Message);return ex.Message;

    }}

    }}

    9.- Ahora antes de ingresar el codigo necesario en nuestra capa de negocio, lo primero quetenemos que hacer es establecer la referencia desde el proyecto LibNet_Business con elProyecto LibNet_Data, para lo cual realizaremos lo siguiente:

    Seleccionamos y expandimos el Proyecto LibNet_Business Clic derecho sobre la carpeta References y seleccionamos Agregar Referencia

    Y en la ficha Proyectos (Projects) seleccionaremos el proyecto LibNet_Data

  • 8/14/2019 MantenimientoClientes

    8/14

    Mantenimiento de Clientes en 3 Capas Pag: 8 / 14

    _______________________________________________________________________________ Taller de N-Capas

    10.- Ahora si ingresaremos el codigo que nos permita comunicarnos con nuestra capa dedatos desde nuestra capa de negocio, asi es que lo primero que haremos es crear unavariable de tipo LibNet_Data.Cls_DBCliente para que atraves de ella obtener los metodos(Funciones, procedimientos, etc) de la capa de datos.

    LibNet_Data. Cls_DBCliente objData = new LibNet_Data. Cls_DBCliente ();

    No olvidar que tambien aqui deberemos utilizar los objetos de acceso a datos.

    using System.Data;using System.Data.SqlClient;

    11.- El codigo completo de nuestra capa de negocio Cls_BCliente perteneciente al proyectoLibNet_Business se muestra a continuacion:

    using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;

    namespace LibNet_Business

    { public class Cls_BCliente{

    LibNet_Data. Cls_DBCliente objData = new LibNet_Data. Cls_DBCliente ();

    public DataTable BListarClientes(){

    return objData.ListaClientes( "USP_LISTA_CLIENTE" );}

  • 8/14/2019 MantenimientoClientes

    9/14

    Mantenimiento de Clientes en 3 Capas Pag: 9 / 14

    _______________________________________________________________________________ Taller de N-Capas

    public string BNuevoCodigo(){

    return objData.NuevoCodigoCliente().ToString();}

    public int BAgregarCliente( string Codigo, string Nombre, string RUC,string Telefono, int Estado)

    {return objData.AgregarCliente( "USP_ADD_CLIENTE" , Codigo, Nombre, RUC,

    Telefono, Estado);}

    public int BEliminarCliente( string Codigo){

    return objData.EliminarCliente( "USP_DEL_CLIENTE" , Codigo);}

    }}

    12.- Por ultimo nos queda la parte del diseo de nuestra capa de presentacin, no olvidarque esta capa se debe comunicar con nuestra capa de negocio, por lo cual esta capanecesitara de una referencia con LibNet_Business, as es que deber realizar antes estareferencia.

    Luego de haber realizado la referencia desde LibNet_Presentacion hacia LibNet_Business,comenzaremos con el diseo, para lo cual necesitaremos:

    6 Labels (Etiquetas)1 TextBox (Caja de Texto)2 MaskedTextBox1 CheckBox1 DataGridView

    1 ToolStrip

    Propiedades de los controles

    Control Propiedad Valor

    Label1 Text CodigoLabel2 Text NombreLabel3 Text Nro de RUCLabel4 Text TelefonoLabel5 Text EstadoLabel6 Text Label6 Name LblCodigo

    TextBox1 Text Name TxtNombre

    MaskedTextBox1 Name MskRUCMask 99999999999

    MaskedTextBox2 Name MskTelefonoMask 999-9999

  • 8/14/2019 MantenimientoClientes

    10/14

    Mantenimiento de Clientes en 3 Capas Pag: 10 / 14

    _______________________________________________________________________________ Taller de N-Capas

    CheckBox1 Name chkEstado

    DataGridView1 Name dgvClientes

    ToolStrip Items

    Agregaremos 3 Botones, 1 separador, 1 boton, 1 separador, 1 etiqueta, 1 ComboBox y unltimo boton, todos en este orden.

    Ahora sus propiedades individuales:

    toolstripButton1 Name tsBtnNuevoText Nuevo

    toolstripButton2 Name tsBtnGrabarText Grabar

    toolstripButton3 Name tsBtnEliminarText Eliminar

    toolstripButton1 Name tsBtnListadoText Listado

    toolstripLabel1 Text Busqueda

    toolstripComboBox1 Name tsCboBusqueda

    toolstripButton1 Name tsBtnSalirText Salir

  • 8/14/2019 MantenimientoClientes

    11/14

    Mantenimiento de Clientes en 3 Capas Pag: 11 / 14

    _______________________________________________________________________________ Taller de N-Capas

    13.- El codigo completo de esta capa de presentacin se muestra a continuacin:

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;

    namespace LibNet_Presentacion{

    public partial class Frm_Mant_Cliente : Form{

    public Frm_Mant_Cliente(){ InitializeComponent();}

    LibNet_Business. Cls_BCliente objNeg = new LibNet_Business. Cls_BCliente ();

    private void btnListar_Click( object sender, EventArgs e){

    this .dgvClientes.DataSource = objNeg.BListarClientes();FormatoGrilla(dgvClientes);

    }private void btnNuevo_Click( object sender, EventArgs e){

    this .LblCodigo.Text = objNeg.BNuevoCodigo().ToString();}

    private void tSBtnSalir_Click( object sender, EventArgs e){

    this .Close();

    }

    private void tSBtnNuevo_Click( object sender, EventArgs e){

    this .LblCodigo.Text = objNeg.BNuevoCodigo().ToString();ClsUtiles obj = new ClsUtiles ();obj.LimpiarTextos2( this );

    }

    private void Form1_Load( object sender, EventArgs e){

    LlenarCboClientes();}

    private void LlenarCboClientes(){

    this .tSCboBusqueda.Items.Clear();DataTable oTabla = objNeg.BListarClientes();foreach (DataRow Fila in oTabla.Rows){

    tSCboBusqueda.Items.Add(Fila[0].ToString());}

    }

  • 8/14/2019 MantenimientoClientes

    12/14

    Mantenimiento de Clientes en 3 Capas Pag: 12 / 14

    _______________________________________________________________________________ Taller de N-Capas

    private void FormatoGrilla( DataGridView dgv){

    dgv.Columns[0].HeaderText = "Codigo" ;dgv.Columns[0].Width = 60;dgv.Columns[0].Frozen = true ;dgv.Columns[1].HeaderText = "Nombre del Cliente" ;dgv.Columns[1].Width = 180;dgv.Columns[1].Frozen = true ;dgv.Columns[2].HeaderText = "Nro de RUC" ;dgv.Columns[2].Width = 90;dgv.Columns[3].HeaderText = "Telefono" ;dgv.Columns[3].Width = 80;dgv.Columns[4].HeaderText = "Estado" ;dgv.Columns[4].Width = 70;

    }

    private void tSBtnListado_Click( object sender, EventArgs e){

    this .dgvClientes.DataSource = objNeg.BListarClientes();FormatoGrilla(dgvClientes);

    }

    private void tSBtnGrabar_Click( object sender, EventArgs e){

    int resp=objNeg.BAgregarCliente(LblCodigo.Text, TxtNombre.Text, mskRUC.Text,mskTelefono.Text, Convert .ToInt32(chkEstado.Checked));

    if (resp != 0){

    MessageBox .Show( "Cliente [Agregado/Actualizacion] Satisfactoriamente" );tSBtnListado_Click( null , null );LlenarCboClientes();

    }else

    MessageBox .Show( "Error al Agregar Cliente" );}

    private void dgvClientes_CellContentClick( object sender, DataGridViewCellEventArgs e)

    {int n = e.RowIndex;LblCodigo.Text = dgvClientes.Rows[n].Cells[0].Value.ToString();TxtNombre.Text = dgvClientes.Rows[n].Cells[1].Value.ToString();mskRUC.Text = dgvClientes.Rows[n].Cells[2].Value.ToString();mskTelefono.Text = dgvClientes.Rows[n].Cells[3].Value.ToString();chkEstado.Checked =

    Convert .ToBoolean(dgvClientes.Rows[n].Cells[4].Value.ToString());}

    private void tSCboBusqueda_SelectedIndexChanged( object sender, EventArgs e){

    DataTable oTabla = objNeg.BListarClientes();foreach (DataRow Fila in oTabla.Rows){

    if (Fila[0].ToString() == tSCboBusqueda.Text){

    LblCodigo.Text = Fila[0].ToString();

  • 8/14/2019 MantenimientoClientes

    13/14

    Mantenimiento de Clientes en 3 Capas Pag: 13 / 14

    _______________________________________________________________________________ Taller de N-Capas

    TxtNombre.Text = Fila[1].ToString();mskRUC.Text = Fila[2].ToString();mskTelefono.Text = Fila[3].ToString();chkEstado.Checked = Convert .ToBoolean(Fila[4].ToString());break ;

    }}

    }

    private void tSBtnEliminar_Click( object sender, EventArgs e){

    int n = objNeg.BEliminarCliente(LblCodigo.Text);if (n != 0){

    MessageBox .Show( "Se Elimino al Cliente ==>" + TxtNombre.Text);tSBtnListado_Click( null , null );tSBtnNuevo_Click( null , null );LlenarCboClientes();

    }}

    private void TxtNombre_KeyPress( object sender, KeyPressEventArgs e){

    if (e.KeyChar == Convert .ToChar(13)){

    mskRUC.Focus();}

    }

    private void mskRUC_KeyPress( object sender, KeyPressEventArgs e){

    if (e.KeyChar == Convert .ToChar(13)){

    mskTelefono.Focus();}}

    private void mskTelefono_KeyPress( object sender, KeyPressEventArgs e){

    if (e.KeyChar == Convert .ToChar(13)){

    chkEstado.Focus();}

    }}

    }

    Agregaremos una nueva clase en la capa de presentacin (LibNet_Presentacion) con elnombre de Cls_Utiles.cs

    using System;using System.Collections.Generic;using System.Text;using System.Windows.Forms;

  • 8/14/2019 MantenimientoClientes

    14/14

    Mantenimiento de Clientes en 3 Capas Pag: 14 / 14

    _______________________________________________________________________________ Taller de N-Capas

    namespace LibNet_Presentacion{

    public class Cls_Utiles{

    public void LimpiarTextos2( Form frm){

    // Limpiando los Controles dentro del Formularioforeach (Control x in frm.Controls){

    if (x is TextBox ) x.Text = "" ;if (x.GetType().ToString() == "System.Windows.Forms.CheckBox" ){

    CheckBox chk = ( CheckBox )x;chk.Checked = false ;

    }if (x.GetType().ToString() == "System.Windows.Forms.MaskedTextBox" ){

    MaskedTextBox msk = ( MaskedTextBox )x;msk.Text = "" ;

    }

    if (x.GetType().ToString() == "System.Windows.Forms.ComboBox" ){

    ComboBox cbo = ( ComboBox )x;cbo.SelectedIndex = -1;

    }}

    }}

    }

    Una muestra de nuestro proyecto en ejecucin se muestra a continuacin: