Mantenimientoclientes

  • Uploaded by: Alberto Moreno Cueva
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Mantenimientoclientes as PDF for free.

More details

  • Words: 1,654
  • Pages: 14
Mantenimiento de Clientes en 3 Capas

Pag: 1 / 14

Mantenimiento de Clientes en 3 Capas 1.- Crearemos una solución en blanco, para lo cual sobre el menú Archivo (File), Nuevo Proyecto (New Project), seleccionamos Otros tipos de Proyecto, Soluciones de Visual Studio y en plantilla Elegimos Solución en Blanco (Blank Solution) y le damos el nombre de Mantenimiento_3Capas, tal como se muestra en la siguiente figura:

2.- Agregaremos ahora 3 Nuevos proyectos a nuestra aplicación para lo cual en el Explorador de Soluciones (Solution Explorer) seleccionamos la solución Mantenimiento_3Capas, clic derecho Agregar (Add), Nuevo Proyecto (New Project), tal como se muestra a continuación:

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 2 / 14

3.- Luego de esto seleccionaremos el tipo de Proyecto, eligiendo Visual C#, Windows y como plantilla Aplicación para Windows (Windows Application), dándole el nombre de LibNet_Presentacion, tal como se muestra a continuación:

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

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 3 / 14

5.- Ahora crearemos los procedimientos almacenados que utilizaremos en nuestra aplicación:

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 4 / 14

6.- Luego de esto vamos a renombrar los archivos de clases creados de manera predeterminada: En el proyecto: LibNet_Data Nombre Archivo Original Class1.cs

Nuevo Nombre de Archivo Cls_DBCliente.cs

En el proyecto: LibNet_Business Nombre Archivo Original Class1.cs

Nuevo Nombre de Archivo Cls_BCliente.cs

En el proyecto: LibNet_Presentacion Nombre Archivo Original Form1.cs

Nuevo Nombre de Archivo 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 los procedimientos almacenados en el servidor de base de datos, para lo cual ingresaremos al codigo de la clase Cls_DBCliente.cs y lo primero que tenemos que ingresar es el codigo que permita acceder a los componentes de acceso a datos: using System.Data; using System.Data.SqlClient;

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 5 / 14

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; _______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 6 / 14

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"); }

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 7 / 14

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 que tenemos que hacer es establecer la referencia desde el proyecto LibNet_Business con el Proyecto 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

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 8 / 14

10.- Ahora si ingresaremos el codigo que nos permita comunicarnos con nuestra capa de datos desde nuestra capa de negocio, asi es que lo primero que haremos es crear una variable 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 proyecto LibNet_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"); }

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 9 / 14

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 diseño de nuestra capa de presentación, no olvidar que esta capa se debe comunicar con nuestra capa de negocio, por lo cual esta capa necesitara de una referencia con LibNet_Business, así es que deberá realizar antes esta referencia. Luego de haber realizado la referencia desde LibNet_Presentacion hacia LibNet_Business, comenzaremos con el diseño, para lo cual necesitaremos: 6 Labels (Etiquetas) 1 TextBox (Caja de Texto) 2 MaskedTextBox 1 CheckBox 1 DataGridView 1 ToolStrip Propiedades de los controles Control

Propiedad

Valor

Label1 Label2 Label3 Label4 Label5 Label6 Label6

Text Text Text Text Text Text Name

Codigo Nombre Nro de RUC Telefono Estado “” LblCodigo

TextBox1

Text Name

“” TxtNombre

MaskedTextBox1

Name Mask

MskRUC 99999999999

MaskedTextBox2

Name Mask

MskTelefono 999-9999

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 10 / 14

CheckBox1

Name

chkEstado

DataGridView1

Name

dgvClientes

ToolStrip

Items

Agregaremos 3 Botones, 1 separador, 1 boton, 1 separador, 1 etiqueta, 1 ComboBox y un último boton, todos en este orden. Ahora sus propiedades individuales: toolstripButton1

Name Text

tsBtnNuevo Nuevo

toolstripButton2

Name Text

tsBtnGrabar Grabar

toolstripButton3

Name Text

tsBtnEliminar Eliminar

toolstripButton1

Name Text

tsBtnListado Listado

toolstripLabel1

Text

Busqueda

toolstripComboBox1 Name

tsCboBusqueda

toolstripButton1

tsBtnSalir Salir

Name Text

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 11 / 14

13.- El codigo completo de esta capa de presentación se muestra a continuación: 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()); } } _______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 12 / 14

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"); } e)

private void dgvClientes_CellContentClick(object sender, DataGridViewCellEventArgs {

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(); _______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

}

}

}

Pag: 13 / 14

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 presentación (LibNet_Presentacion) con el nombre de Cls_Utiles.cs using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms;

_______________________________________________________________________________ Taller de N-Capas

Mantenimiento de Clientes en 3 Capas

Pag: 14 / 14

namespace LibNet_Presentacion { public class Cls_Utiles { public void LimpiarTextos2(Form frm) { // Limpiando los Controles dentro del Formulario foreach (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 ejecución se muestra a continuación:

_______________________________________________________________________________ Taller de N-Capas

Related Documents


More Documents from "Alberto Moreno Cueva"