Mantenimiento de Datos con .Net

Page 1

Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Visual Studio Net Mantenimiento de Datos Aplicaciones Windows (ADO Net) Prof: Allende Aguilar; Franklin

FrankDocNet

1/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Mantenimiento de Datos Objetivos: 9 Conocer el Objeto Command 9 Como pasar parámetros 9 Como ejecutar Comandos 9 Casos prácticos

Introducción Cuando hablamos de Matenimiento de Datos hablamos de Insersion, Actualizacion y Eliminacion de Registros. Para poder entender y recordando un poco de lo que ya hablamos mostrare la figura de Secuencia de Objetos. En esta parte seguiremos la segunda secuencia que respecta a Matenimiento de Datos. Cuando en el Objeto Command escribimos un Insert, Update o Delete, no crearemos otro objeto mas, tan solo ejecutaremos el commando (ExecuteNonQuery); cabe indicar, que para poder ejecutar, el commando el Objeto Connection tiene que estar abierta (Cn.Open) y luego tendremos que cerrar (Cn.Close)

En la presente separata aprenderemos a utilizar el objeto command, como pasar parametros y como ejecutar. Entraremos por lo mas basico y luego veremos mantenimientos completos e incluso con una capa que nos servira de enlace con el SQL Server. Para porder desarrollar esta presente separata Ud. debera tener la Base de Datos con la que que trabajaremos para las demostraciones. La Base de Datos se llama Ventas y simula ser de una Bodega pequeña donde manejara lo basico. Ahí tiene el diagrama Nota: Si Ud. Desea tener el codigo de la Base de datos consulte con su Instructor de turno.

2/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Base de Datos “Ventas”

3/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Primera Practica 1.- Crear un nuevo Proyecto de Aplicación Windows de nombre “Practica de Mantenimiento I”. 2.- En el Form1 diseñe como sigue:

3.- Agregar los siguientes códigos: Objeto: Form1

Evento: Declaraciones

'Creando mi objeto connection Dim Cn As New SqlConnection("Server=(local);DataBase=Ventas;Integrated security=True") 'Creando el procedimiento de Limpiado de texto Sub Limpiar() Me.TxtCodigo.Clear() Me.TxtNombre.Clear() Me.TxtPrecio.Clear() Me.TxtStock.Clear() Me.TxtCodigo.Focus() End Sub 'Creando el procedimiento para cargar datos a la grilla Sub CargarDatos() Dim Cmd As New SqlCommand("Select * from Producto", Cn) Dim Da As New SqlDataAdapter(Cmd) Dim Dt As New DataTable Da.Fill(Dt) Me.DgvDatos.DataSource = Dt End Sub

4/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Objeto: Form1

Evento: Load

'Llamamos al procedimiento CargarDatos CargarDatos() Objeto: BtnGuardar

Evento: Click

'Escribimos el codigo Insert Dim Cmd As New SqlCommand("Insert into Producto Values(@Cod,@Nom,@Pre,@Sto)", Cn) 'Pasamos los parametros al command y le pasamos valores a cada parametro Cmd.Parameters.Add("@Cod", SqlDbType.VarChar, 6).Value = Me.TxtCodigo.Text Cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 40).Value = Me.TxtNombre.Text Cmd.Parameters.Add("@Pre", SqlDbType.Money).Value = CDec(Me.TxtPrecio.Text) Cmd.Parameters.Add("@Sto", SqlDbType.Int).Value = CInt(Me.TxtStock.Text) 'Para poder ejecutar el commando tenemos que abrir el Connection Cn.Open() 'Ejecutamos el commando Cmd.ExecuteNonQuery() 'cerramos el Connection Cn.Close() MsgBox("Producto se Guardo correctamente") 'Llamamos a los Prec CargarDatos() Limpiar()

4.- Agregar un nuevo Windows Form con el nombre por defecto Form2 y haga le siguiente diseño.

5/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

5.- Agregue los siguientes códigos al Form2 Objeto: Form2

Evento: Declaraciones

Dim Cn As New SqlConnection("Server=(local);DataBase=Ventas;Integrated Security=true") Sub CargarDatos() Dim Cmd As New SqlCommand("Select * from Producto", Cn) Dim Da As New SqlDataAdapter(Cmd) Dim Dt As New DataTable Da.Fill(Dt) Me.DgvDatos.DataSource = Dt End Sub Sub Limpiar() Dim Con As Control For Each Con In Me.Panel1.Controls If TypeOf Con Is TextBox Then Con.Text = "" Next End Sub Objeto: Form2

Evento: Load

'Llamamos al procedimiento CargarDatos CargarDatos() Objeto: BtnInsertar

Evento: Click

'Escribimos el codigo Insert Dim Cmd As New SqlCommand("Insert into Producto Values(@Cod,@Nom,@Pre,@Sto)", Cn) 'Pasamos los parametros al command y le pasamos valores a cada parametro Cmd.Parameters.Add("@Cod", SqlDbType.VarChar, 6).Value = Me.TxtCodigo.Text Cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 40).Value = Me.TxtNombre.Text Cmd.Parameters.Add("@Pre", SqlDbType.Money).Value = CDec(Me.TxtPrecio.Text) Cmd.Parameters.Add("@Sto", SqlDbType.Int).Value = CInt(Me.TxtStock.Text) 'Para poder ejecutar el commando tenemos que abrir el Connection Cn.Open() 'Ejecutamos el commando Cmd.ExecuteNonQuery() 'cerramos el Connection Cn.Close() MsgBox("Producto se Guardo correctamente") 'Llamamos a los Prec CargarDatos() Limpiar() Objeto: DgvDatos

Evento: DoubleClick

'Preguntamos si el seleccinado tiene contenido If Not IsDBNull(Me.DgvDatos.SelectedCells(0).Value) Then 'Pasamos los datos de la grilla a los TextBox Me.TxtCodigo.Text = Me.DgvDatos.SelectedCells(0).Value Me.TxtNombre.Text = Me.DgvDatos.SelectedCells(1).Value Me.TxtPrecio.Text = Me.DgvDatos.SelectedCells(2).Value Me.TxtStock.Text = Me.DgvDatos.SelectedCells(3).Value End If

6/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Objeto: BtnModificar

Evento: Click

'Escribimos el codigo Update Dim Cmd As New SqlCommand("Update Producto Set NomPro=@Nom,PrePro=@Pre,StoPro=@Sto where CodPro=@Cod", Cn) 'Pasamos los parametros al command y le pasamos valores a cada parametro Cmd.Parameters.Add("@Cod", SqlDbType.VarChar, 6).Value = Me.TxtCodigo.Text Cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 40).Value = Me.TxtNombre.Text Cmd.Parameters.Add("@Pre", SqlDbType.Money).Value = CDec(Me.TxtPrecio.Text) Cmd.Parameters.Add("@Sto", SqlDbType.Int).Value = CInt(Me.TxtStock.Text) 'Para poder ejecutar el commando tenemos que abrir el Connection Cn.Open() 'Ejecutamos el commando Cmd.ExecuteNonQuery() 'cerramos el Connection Cn.Close() MsgBox("Producto se Modifico correctamente") 'Llamamos a los Prec CargarDatos() Limpiar()

6.- Agregar un nuevo Windows Form con el nombre por defecto (Form3), en esta parte haremos inserción y modificación de Datos a través de Procedimientos Almacenados, entonces diseñe de la siguiente forma.

7/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

7.- Antes de agregar código, lo que tenemos que hacer es crear los Procedimientos Almacenados en le lado del SQL Server; entonces creemos los siguientes Procedimientos.

Use ventas go --Para Insertar datos a Producto con codigo autogerado Create Procedure UspGuaPro @NomPro varchar(45),@PrePro money, @StoPro int as declare @CodPro varchar(6) Select @CodPro=right('00000' + ltrim(str(count(*)+1)),6) from Producto Insert Into Producto Values(@CodPro,@NomPro, @PrePro,@StoPro) go --Para Modificar datos a Producto Create Procedure UspModPro @CodPro varchar(6),@NomPro varchar(45), @PrePro money,@StoPro int as Update Producto Set NomPro=@NomPro, PrePro=@PrePro, StoPro=@StoPro where CodPro=@CodPro go --Para listar producto Create Procedure UspLisPro As Select * from Producto

8.- Ahora ya podemos agregar los siguientes códigos y hacer uso de los procedimientos almacenados: Objeto: Form3

Evento: Declaraciones

Dim Cn As New SqlConnection("Server=(local);DataBase=Ventas;Integrated Security=true") Sub CargarDatos() Dim Cmd As New SqlCommand("UspLisPro", Cn) Cmd.CommandType = CommandType.StoredProcedure Dim Da As New SqlDataAdapter(Cmd) Dim Dt As New DataTable Da.Fill(Dt) Me.DgvDatos.DataSource = Dt End Sub Sub Limpiar() Dim Con As Control For Each Con In Me.Panel1.Controls If TypeOf Con Is TextBox Then Con.Text = "" Next End Sub

8/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Objeto: Form3

Evento: Load

'Llamamos al procedimiento CargarDatos CargarDatos() Objeto: BtnInsertar

Evento: Click

'hacemos uso del Procemiento para Isertar Producto Dim Cmd As New SqlCommand("UspGuaPro)", Cn) 'Tenemos que decrile que es un Procedimiento Cmd.CommandType = CommandType.StoredProcedure 'Pasa los parametros del Procedimiento y sus respectivos valores Cmd.Parameters.Add("@NomPro", SqlDbType.VarChar, 40).Value = Me.TxtNombre.Text Cmd.Parameters.Add("@PrePro", SqlDbType.Money).Value = CDec(Me.TxtPrecio.Text) Cmd.Parameters.Add("@StoPro", SqlDbType.Int).Value = CInt(Me.TxtStock.Text) Cn.Open() Cmd.ExecuteNonQuery() Cn.Close() MsgBox("Producto se Guardo correctamente") CargarDatos() Limpiar() Objeto: BtnModificar

Evento: Click

'hacemos uso del Procemiento para Modificar Producto Dim Cmd As New SqlCommand("UspModPro", Cn) 'Tenemos que decrile que es un Procedimiento Cmd.CommandType = CommandType.StoredProcedure 'Pasa los parametros del Procedimiento y sus respectivos valores Cmd.Parameters.Add("@CodPro", SqlDbType.VarChar, 6).Value = Me.TxtCodigo.Text Cmd.Parameters.Add("@NomPro", SqlDbType.VarChar, 40).Value = Me.TxtNombre.Text Cmd.Parameters.Add("@PrePro", SqlDbType.Money).Value = CDec(Me.TxtPrecio.Text) Cmd.Parameters.Add("@StoPro", SqlDbType.Int).Value = CInt(Me.TxtStock.Text) Cn.Open() Cmd.ExecuteNonQuery() Cn.Close() MsgBox("Producto se Modifico correctamente") CargarDatos() Limpiar()

Objeto: DgvDatos

Evento: DoubleClick

'Preguntamos si el seleccinado tiene contenido If Not IsDBNull(Me.DgvDatos.SelectedCells(0).Value) Then 'Pasamos los datos de la grilla a los TextBox Me.TxtCodigo.Text = Me.DgvDatos.SelectedCells(0).Value Me.TxtNombre.Text = Me.DgvDatos.SelectedCells(1).Value Me.TxtPrecio.Text = Me.DgvDatos.SelectedCells(2).Value Me.TxtStock.Text = Me.DgvDatos.SelectedCells(3).Value End If Nota: El TextBox TxtCodigo tiene que estar inabilitado (Enabled=False)

9/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

En las siguientes hojas veremos mantenimientos casi completos, la parte de validación se lo dejo a Uds, esa parte corresponde al modulo I, cualquier consulta hágalo a su Instructor. Segunda Practica 1.- Crear un nuevo proyecto de Aplicación Windows de nombre “Practica de Mantenimiento II”. 2.- Eliminar el Form1, agregar un nuevo formulario y póngale el nombre FrmManProducto y haga el siguiente diseño

3.- Agregar los siguientes códigos: Objeto: BtnBuscar

Evento: Click

Me.TxtBuscar.Text=”a” Me.TxtBuscar.Clear() Me.Width = 684

Objeto: DgvBuscar

Evento: DoubleClick

If Not IsDBNull(Me.DgvBuscar.SelectedCells(0).Value) Then Me.TxtCodigo.Text = Me.DgvBuscar.SelectedCells(0).Value Me.TxtNombre.Text = Me.DgvBuscar.SelectedCells(1).Value Me.TxtPrecio.Text = Me.DgvBuscar.SelectedCells(2).Value Me.TxtStock.Text = Me.DgvBuscar.SelectedCells(3).Value End If Me.Width = 338

10/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Objeto: FrmManProducto

Evento: Declaraciones

Dim Cn As New SqlConnection("Server=(local);DataBase=Ventas;Integrated Security=true") Dim Nuevo As Boolean Sub Limpiar() Dim Con As Control For Each Con In Me.GbTxt.Controls If TypeOf Con Is TextBox Then Con.Text = "" Next End Sub Sub Habilitar(ByVal Sw As Boolean) Me.BtnNuevo.Enabled = Sw Me.BtnEditar.Enabled = Sw Me.BtnGuardar.Enabled = Not Sw Me.BtnBuscar.Enabled = Sw Me.BtnCancelar.Enabled = Not Sw Me.GbTxt.Enabled = Not Sw End Sub Sub GenerarNuevoCodigo() Dim Cmd As New SqlCommand("Select right('00000' + ltrim(Str(count(*)+1)),6) from Producto", Cn) Cn.Open() Me.TxtCodigo.Text = Cmd.ExecuteScalar Cn.Close() End Sub

Objeto: FrmManProducto

Evento: Load

'Llamamos al procedimiento Habilitar Habilitar(True)

Objeto: BtnNuevo

Evento: Click

Habilitar(False) Limpiar() GenerarNuevoCodigo() Me.TxtNombre.Focus() Nuevo = True

Objeto: BtnEditar

Evento: Click

If Me.TxtCodigo.Text.Trim = "" Then MsgBox("Seleccione el Producto a Modificar") Else Habilitar(False) Nuevo = False End If

11/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Objeto: TxtBuscar

Evento: TextChange

Dim Cmd As New SqlCommand("Select * from Producto where NomPro like @Nom + '%'", Cn) Cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 30).Value = Me.TxtBuscar.Text.Trim Dim Da As New SqlDataAdapter(Cmd) Dim Dt As New DataTable Da.Fill(Dt) Me.DgvBuscar.DataSource = Dt Objeto: BtnCancelar

Evento: Click

Habilitar(True) Limpiar() Objeto: BtnGuardar

Evento: Click

If Nuevo = True Then Dim Cmd As New SqlCommand("Insert Into Producto Values(@Cod,@Nom,@Pre,@Sto)", Cn) Cmd.Parameters.Add("@Cod", SqlDbType.VarChar, 6).Value = Me.TxtCodigo.Text Cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 40).Value = Me.TxtNombre.Text Cmd.Parameters.Add("@Pre", SqlDbType.Money).Value = CDec(Me.TxtPrecio.Text) Cmd.Parameters.Add("@Sto", SqlDbType.Int).Value = CInt(Me.TxtStock.Text) Cn.Open() Cmd.ExecuteNonQuery() Cn.Close() MsgBox("Producto se Guardo correctamente") Else Dim Cmd As New SqlCommand("Update Producto Set NomPro=@Nom,PrePro=@Pre,StoPro=@Sto where CodPro=@Cod", Cn) Cmd.Parameters.Add("@Cod", SqlDbType.VarChar, 6).Value = Me.TxtCodigo.Text Cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 40).Value = Me.TxtNombre.Text Cmd.Parameters.Add("@Pre", SqlDbType.Money).Value = CDec(Me.TxtPrecio.Text) Cmd.Parameters.Add("@Sto", SqlDbType.Int).Value = CInt(Me.TxtStock.Text) Cn.Open() Cmd.ExecuteNonQuery() Cn.Close() MsgBox("Producto se Modifico correctamente") End If Limpiar() Habilitar(True)

Nota: el TxtCodigo tiene que estar inhabilitado (Enabled=False) e incluso en el siguiente Form

El Mantenimiento que acabamos de hacer es usando código nato SQL, en la siguiente trabajaremos con solo con procedimientos almacenados, entonces empecemos. 4.- Agregar un nuevo Formulario de Nombre “FrmManCliente” y haga el siguiente Diseño:

12/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Nota: Los nombre de los controles serán igual que el anterior formulario, salvo los nuevo que ingresamos.

5.- Abrir el SQL y crear los siguientes Procedimientos: Use ventas go --Procedimientos Almacenados de Cliente create Procedure UspGuaCli @NomCli varchar(40),@ApeCli varchar (50), @RucCli varchar(11),@TelCli varchar (10), @DirCli varchar(50),@CodDis varchar(4) As Declare @CodCli varchar(6) Select @CodCli=right('00000' + ltrim(str(count(*)+1)),6) from Cliente Insert Into Cliente Values(@CodCli,@NomCli,@ApeCli,@RucCli,@TelCli, @DirCli,@CodDis) go create Procedure UspModCli @CodCli varchar(6),@NomCli varchar(40), @ApeCli varchar (50),@RucCli varchar (11), @TelCli varchar (10),@DirCli varchar(50), @CodDis varchar(4) as Update Cliente Set NomCli=@NomCli,ApeCli=@ApeCli,RucCli=@RucCli,TelCli=@TelCli, DirCli=@DirCli,CodDis=@CodDis where CodCli=@CodCli go create Procedure UspFilCli @ApeCli varchar(30) as SELECT C.CodCli as Codigo, C.NomCli as Nombre, C.ApeCli as Apellido, C.RucCli as Ruc,C.TelCli as Telefono, C.DirCli as Direccion, D.NomDis as Distrito FROM Cliente C INNER JOIN Distrito D ON C.CodDis = D.CodDis WHERE C.ApeCli like @ApeCli + '%' Go Create Procedure UspLisDis as select * from Distrito

13/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

6.- Agregar los siguientes códigos: Objeto: FrmManCliente

Evento: Declaraciones

Dim Cn As New SqlConnection("Server=(local);DataBase=Ventas;Integrated Security=true") Sub Limpiar() Dim Con As Control For Each Con In Me.GbTxt.Controls If TypeOf Con Is TextBox Then Con.Text = "" Next End Sub Sub Habilitar(ByVal Sw As Boolean) Me.BtnNuevo.Enabled = Sw Me.BtnEditar.Enabled = Sw Me.BtnGuardar.Enabled = Not Sw Me.BtnBuscar.Enabled = Sw Me.BtnCancelar.Enabled = Not Sw Me.GbTxt.Enabled = Not Sw End Sub Sub CargarDatos() Dim Cmd As New SqlCommand("UspLisDis", Cn) Cmd.CommandType = CommandType.StoredProcedure Dim Da As New SqlDataAdapter(Cmd) Dim Dt As New DataTable Da.Fill(Dt) Me.CboDistrito.DataSource = Dt Me.CboDistrito.DisplayMember = "NomDis" Me.CboDistrito.ValueMember = "CodDis" End Sub

Objeto: FrmManCliente

Evento: Load

'Llamamos al procedimiento Habilitar y CargarDatos Habilitar(True) CargarDatos() Objeto: BtnNuevo

Evento: Click

Habilitar(False) Limpiar() Me.TxtNombre.Focus() Objeto: BtnEditar

Evento: Click

If Me.TxtCodigo.Text.Trim = "" Then MsgBox("Seleccione el Producto a Modificar") Else Habilitar(False) End If

14/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Objeto: TxtBuscar

Evento: TextChange

Dim Cmd As New SqlCommand("UspFilCli", Cn) Cmd.CommandType = CommandType.StoredProcedure Cmd.Parameters.Add("@ApeCli", SqlDbType.VarChar, 30).Value = Me.TxtBuscar.Text.Trim Dim Da As New SqlDataAdapter(Cmd) Dim Dt As New DataTable Da.Fill(Dt) Me.DgvBuscar.DataSource = Dt Objeto: BtnGuardar

Evento: Click

If Me.TxtCodigo.Text.Trim = "" Then Dim Cmd As New SqlCommand("UspGuaCli", Cn) Cmd.CommandType = CommandType.StoredProcedure Cmd.Parameters.Add("@NomCli", SqlDbType.VarChar, 40).Value = Me.TxtNombre.Text Cmd.Parameters.Add("@ApeCli", SqlDbType.VarChar, 50).Value = Me.TxtApellidos.Text Cmd.Parameters.Add("@RucCli", SqlDbType.VarChar, 11).Value = Me.TxtRuc.Text Cmd.Parameters.Add("@TelCli", SqlDbType.VarChar, 10).Value = Me.TxtTelefono.Text Cmd.Parameters.Add("DirCli", SqlDbType.VarChar, 60).Value = Me.TxtDireccion.Text Cmd.Parameters.Add("CodDis", SqlDbType.VarChar, 4).Value = Me.CboDistrito.SelectedValue Cn.Open() Cmd.ExecuteNonQuery() Cn.Close() MsgBox("Cliente se Guardo correctamente") Else Dim Cmd As New SqlCommand("UspModCli", Cn) Cmd.CommandType = CommandType.StoredProcedure Cmd.Parameters.Add("@CodCli", SqlDbType.VarChar, 6).Value = Me.TxtCodigo.Text Cmd.Parameters.Add("@NomCli", SqlDbType.VarChar, 40).Value = Me.TxtNombre.Text Cmd.Parameters.Add("@ApeCli", SqlDbType.VarChar, 50).Value = Me.TxtApellidos.Text Cmd.Parameters.Add("@RucCli", SqlDbType.VarChar, 11).Value = Me.TxtRuc.Text Cmd.Parameters.Add("@TelCli", SqlDbType.VarChar, 10).Value = Me.TxtTelefono.Text Cmd.Parameters.Add("DirCli", SqlDbType.VarChar, 60).Value = Me.TxtDireccion.Text Cmd.Parameters.Add("CodDis", SqlDbType.VarChar, 4).Value = Me.CboDistrito.SelectedValue Cn.Open() Cmd.ExecuteNonQuery() Cn.Close() MsgBox("Cliente se Modificar correctamente") End If Limpiar() Habilitar(True) End Sub

Objeto: BtnCancelar

Evento: Click

Habilitar(True) Limpiar() Objeto: BtnBuscar

Evento: Click

Me.TxtBuscar_TextChanged(sender, e) Me.Width = 684

15/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Objeto: DgvBuscar

Evento: DoubleClick

If Not IsDBNull(Me.DgvBuscar.SelectedCells(0).Value) Then Me.TxtCodigo.Text = Me.DgvBuscar.SelectedCells(0).Value Me.TxtNombre.Text = Me.DgvBuscar.SelectedCells(1).Value Me.TxtApellidos.Text = Me.DgvBuscar.SelectedCells(2).Value Me.TxtRuc.Text = Me.DgvBuscar.SelectedCells(3).Value Me.TxtTelefono.Text = Me.DgvBuscar.SelectedCells(4).Value Me.TxtDireccion.Text = Me.DgvBuscar.SelectedCells(5).Value Me.CboDistrito.Text = Me.DgvBuscar.SelectedCells(6).Value End If Me.Width = 338

En la siguiente practica a desarrollar haremos un mantenimiento con una capa intermedia (Biblioteca de Clases), en ella estará todas las funciones que necesitemos para nuestro proyecto, e aquí el gráfico para que entiendan mejor.

Tercera Practica: 1.- Antes de desarrollar la Practica tendremos que configurar algunas cosas del Visual para eso Abra Visual y vaya al menú Herramientas/Opciones y les mostrara la siguiente pantalla.

16/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

2.- En la ficha de Proyectos y Soluciones Chekear las dos opciones señaladas en el gráfico. 3.- Agregar un nuevo Proyecto de Aplicación Windows de nombre “Sistema de Ventas” y a la solución póngale el nombre “Sistema Integrado” como se muestra en el gráfico.

4.- Un rato dejamos visual y abrimos SQL server para poder crear los siguientes procedimientos almacenados. Create Procedure UspLisCar as select * from Cargo go Create procedure UspLisAre as select * from Area go --Si Ud. esta siguiendo la practica desde el inicio ya no es necesario --que cree este Procedimiento (UspLisDis) porque ya lo creamos anteriormente Create Procedure UspLisDis as select * from Distrito

17/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Use Ventas Go --Procediemto Almacenado para insertar nuevo Empleado Create Procedure UspGuaEmp @NomEmp varchar(40), @ApeEmp varchar(50), @FecIng datetime, @TelEmp varchar(10), @DirEmp varchar(50), @CodDis varchar(4), @CodAre varchar(4), @CodCar varchar(4) as Declare @CodEmp varchar(6) select @CodEmp=right('00000' + ltrim(str(count(*)+1)),6) from Empleado Insert into Empleado Values(@CodEmp, @NomEmp, @ApeEmp,@FecIng,@TelEmp,@DirEmp, @CodDis,@CodAre, @CodCar) Go --Procediemto Almacenado para Modificar Empleado Create Procedure UspModEmp @CodEmp varchar(6), @NomEmp varchar(40), @ApeEmp varchar(50), @FecIng datetime, @TelEmp varchar(10), @DirEmp varchar(50), @CodDis varchar(4), @CodAre varchar(4), @CodCar varchar(4) as Update Empleado Set NomEmp=@NomEmp,ApeEmp=@ApeEmp, FecIng=@FecIng,TelEmp=@TelEmp,DirEmp=@DirEmp, CodDis=@CodDis, CodAre=@CodAre, CodCar=@CodCar where CodEmp=@CodEmp go --Procediemto Almacenado para Filtrar a Empleado por Apellido create Procedure UspFilEmp @ApeEmp varchar(30) as SELECT E.CodEmp as Codigo, E.NomEmp as Nombre, E.ApeEmp as Apellidos,E.FecIng as [Fec Ingreso], E.TelEmp as Telefono, E.DirEmp as Direccion, D.NomDis as Distrito, A.NomAre as Area, C.NomCar as Cargo FROM Empleado E INNER JOIN Distrito D ON E.CodDis = D.CodDis INNER JOIN Cargo C ON E.CodCar = C.CodCar INNER JOIN Area A ON E.CodAre = A.CodAre Where E.ApeEmp like @ApeEmp + '%'

18/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

5.- Volviendo al Visual desde el menú Archivo/Agregar/Nuevo Proyecto, de tipo Biblioteca de Clases de nombre “Capa de Negocio”. 6.- Elimina el Class1 y agregar una nueva clase de nombre “ClsOperaciones”. 7.- En la nueva clase (ClsOperaciones) crearemos las funciones y procedimientos que necesita el proyecto “Sistema de Ventas”, entonces los primero que haremos es la importación del proveedor de datos de SQL (Imports System.Data.SqlClient) luego agregaremos las siguientes funciones.

Dim Cn As New SqlConnection("Server=(local);DataBase=Ventas;Integrated Security=true") Public Function ListarDistrito() As DataTable Dim Cmd As New SqlCommand("UspLisDis", Cn) Cmd.CommandType = CommandType.StoredProcedure Dim Da As New SqlDataAdapter(Cmd) ListarDistrito = New DataTable Da.Fill(ListarDistrito) End Function Public Function ListarCargo() As DataTable Dim Cmd As New SqlCommand("UspLisCar", Cn) Cmd.CommandType = CommandType.StoredProcedure Dim Da As New SqlDataAdapter(Cmd) ListarCargo = New DataTable Da.Fill(ListarCargo) End Function Public Function ListarArea() As DataTable Dim Cmd As New SqlCommand("UspLisAre", Cn) Cmd.CommandType = CommandType.StoredProcedure Dim Da As New SqlDataAdapter(Cmd) ListarArea = New DataTable Da.Fill(ListarArea) End Function Public Function FiltrarEmpleado(ByVal Apellido_a_Buscar As String) As DataTable Dim Cmd As New SqlCommand("UspFilEmp", Cn) Cmd.CommandType = CommandType.StoredProcedure Cmd.Parameters.Add("@ApeEmp", SqlDbType.VarChar, 50).Value = Apellido_a_Buscar Dim Da As New SqlDataAdapter(Cmd) FiltrarEmpleado = New DataTable Da.Fill(FiltrarEmpleado) End Function

19/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Public Function GuardarEmpleado(ByVal Nombre As String, ByVal Apellidos As String, ByVal Fec_Ingreso As Date, ByVal Telefono As String, ByVal Direccion As String, ByVal Distrito As String, ByVal Area As String, ByVal Cargo As String) As Boolean Try Dim Cmd As New SqlCommand("UspGuaEmp", Cn) Cmd.CommandType = CommandType.StoredProcedure Cmd.Parameters.Add("@NomEmp", SqlDbType.VarChar, 40).Value = Nombre Cmd.Parameters.Add("@ApeEmp", SqlDbType.VarChar, 50).Value = Apellidos Cmd.Parameters.Add("@FecIng", SqlDbType.DateTime).Value = Fec_Ingreso Cmd.Parameters.Add("@TelEmp", SqlDbType.VarChar, 10).Value = Telefono Cmd.Parameters.Add("@DirEmp", SqlDbType.VarChar, 60).Value = Direccion Cmd.Parameters.Add("@CodDis", SqlDbType.VarChar, 4).Value = Distrito Cmd.Parameters.Add("@CodAre", SqlDbType.VarChar, 4).Value = Area Cmd.Parameters.Add("@CodCar", SqlDbType.VarChar, 4).Value = Cargo Cn.Open() Cmd.ExecuteNonQuery() GuardarEmpleado = True Catch ex As Exception GuardarEmpleado = False Finally Cn.Close() End Try End Function

Public Function ModificarEmpleado(ByVal Codigo As String, ByVal Nombre As String, ByVal Apellidos As String, ByVal Fec_Ingreso As Date, ByVal Telefono As String, ByVal Direccion As String, ByVal Distrito As String, ByVal Area As String, ByVal Cargo As String) As Boolean Try Dim Cmd As New SqlCommand("UspModEmp", Cn) Cmd.CommandType = CommandType.StoredProcedure Cmd.Parameters.Add("@CodEmp", SqlDbType.VarChar, 6).Value = Codigo Cmd.Parameters.Add("@NomEmp", SqlDbType.VarChar, 40).Value = Nombre Cmd.Parameters.Add("@ApeEmp", SqlDbType.VarChar, 50).Value = Apellidos Cmd.Parameters.Add("@FecIng", SqlDbType.DateTime).Value = Fec_Ingreso Cmd.Parameters.Add("@TelEmp", SqlDbType.VarChar, 10).Value = Telefono Cmd.Parameters.Add("@DirEmp", SqlDbType.VarChar, 60).Value = Direccion Cmd.Parameters.Add("@CodDis", SqlDbType.VarChar, 4).Value = Distrito Cmd.Parameters.Add("@CodAre", SqlDbType.VarChar, 4).Value = Area Cmd.Parameters.Add("@CodCar", SqlDbType.VarChar, 4).Value = Cargo Cn.Open() Cmd.ExecuteNonQuery() ModificarEmpleado = True Catch ex As Exception ModificarEmpleado = False Finally Cn.Close() End Try End Function

20/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

8.- Ahora las funciones que hemos creado, utilizara el proyecto “Sistemas de Ventas” entonces tendremos que hacer referencia. Desde el explorador de Soluciones click derecho sobre el proyecto “Sistemas de Ventas” , seleccione “Agregar referencia…”, le mostrara la siguiente ventana, vaya a la ficha Proyectos en donde debe de seleccionar el Proyecto “Capa de Negocio”, como se muestra en el gráfico y click en “Aceptar”.

9.- Al Proyecto “Sistema de Ventas” agregar un modulo de nombre “ModSistema” y agregue el siguiente código. Public Obj As New Capa_de_Negocio.ClsOperaciones

10.- Al Proyecto “Sistema de Ventas” agregar un Windows form de nombre “FrmManEmpleado” y haga el siguiente diseño.

Nota: Los nombres de los controles son iguales al anterior formulario de mantenimiento que creamos en le anterior proyecto, la única novedad es la de fecha que es un control DateTimePicker(DtpFecIng)

21/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

11.- Al formulario “FrmManEmpleado” agregar los siguientes códigos. Objeto: FrmManEmpleado

Evento: Click

Sub Limpiar() Dim Con As Control For Each Con In Me.GbTxt.Controls If TypeOf Con Is TextBox Then Con.Text = "" Next End Sub Sub Habilitar(ByVal Sw As Boolean) Me.BtnNuevo.Enabled = Sw Me.BtnEditar.Enabled = Sw Me.BtnGuardar.Enabled = Not Sw Me.BtnBuscar.Enabled = Sw Me.BtnCancelar.Enabled = Not Sw Me.GbTxt.Enabled = Not Sw End Sub Sub CargarDatos() Me.CboDistrito.DataSource = Obj.ListarDistrito Me.CboDistrito.DisplayMember = "NomDis" Me.CboDistrito.ValueMember = "CodDis" Me.CboCargo.DataSource = Obj.ListarCargo Me.CboCargo.DisplayMember = "NomCar" Me.CboCargo.ValueMember = "CodCar" Me.CboArea.DataSource = Obj.ListarArea Me.CboArea.DisplayMember = "NomAre" Me.CboArea.ValueMember = "CodAre" End Sub Objeto: FrmManEmpleado

Evento: Load

Habilitar(True) CargarDatos() Objeto: BtnNuevo

Evento: Click

Habilitar(False) Limpiar() Me.DtpFecIng.Value = Today Me.TxtNombre.Focus() Objeto: BtnEditar

Evento: Click

If Me.TxtCodigo.Text.Trim = "" Then MsgBox("Seleccione el Empleado a Modificar") Else Habilitar(False) End If

Objeto: TxtBuscar

Evento: TextChange

Me.DgvBuscar.DataSource = Obj.FiltrarEmpleado(Me.TxtBuscar.Text)

22/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Objeto: DgvBuscar

Evento: DoubleClick

If Not IsDBNull(Me.DgvBuscar.SelectedCells(0).Value) Then Me.TxtCodigo.Text = Me.DgvBuscar.SelectedCells(0).Value Me.TxtNombre.Text = Me.DgvBuscar.SelectedCells(1).Value Me.TxtApellidos.Text = Me.DgvBuscar.SelectedCells(2).Value Me.DtpFecIng.Value = Me.DgvBuscar.SelectedCells(3).Value Me.TxtTelefono.Text = Me.DgvBuscar.SelectedCells(4).Value Me.TxtDireccion.Text = Me.DgvBuscar.SelectedCells(5).Value Me.CboDistrito.Text = Me.DgvBuscar.SelectedCells(6).Value Me.CboArea.Text = Me.DgvBuscar.SelectedCells(7).Value Me.CboCargo.Text = Me.DgvBuscar.SelectedCells(8).Value End If Me.Width = 338 Objeto: BtnCancelar

Evento: Click

Habilitar(True) Limpiar() Objeto: BtnBuscar

Evento: Click

Me.TxtBuscar_TextChanged(sender, e) Me.Width = 684 Objeto: BtnGuardar

Evento: Click

If Me.TxtCodigo.Text.Trim = "" Then If Obj.GuardarEmpleado(Me.TxtNombre.Text, Me.TxtApellidos.Text, Me.DtpFecIng.Value, Me.TxtTelefono.Text, Me.TxtDireccion.Text, Me.CboDistrito.SelectedValue, Me.CboArea.SelectedValue, Me.CboCargo.SelectedValue) Then MsgBox("Empleado se Guardo correctamente") Else MsgBox("Problemas al Guardar Empleado") End If Else If Obj.ModificarEmpleado(Me.TxtCodigo.Text, Me.TxtNombre.Text, Me.TxtApellidos.Text, Me.DtpFecIng.Value, Me.TxtTelefono.Text, Me.TxtDireccion.Text, Me.CboDistrito.SelectedValue, Me.CboArea.SelectedValue, Me.CboCargo.SelectedValue) Then MsgBox("Empleado se Modifico correctamente") Else MsgBox("Problemas al Modificar Empleado") End If End If Limpiar() Habilitar(True)

23/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

Para terminar crearemos un formulario de Ingreso al Sistemas. 1.- Al Proyecto “Sistemas de Ventas” Agregar un nuevo formulario de nombre “FrmIngreso” y tendrá el siguiente diseño.

2.- En el SQL Server crear los siguientes procedimientos. use Ventas go Create Procedure UspLisUsu as Select * from Usuario go Create Procedure UspVerUsu @NomUsu varchar(30), @PasUsu varchar(30) as Select count(*) from Usuario where NomUsu=@NomUsu and PasUsu=@PasUsu

3.- Volviendo al visual, en la clase ClsOperaciones agregar las siguientes funciones. Public Function ListarUsuario() As DataTable Dim Cmd As New SqlCommand("UspLisUsu", Cn) Cmd.CommandType = CommandType.StoredProcedure Dim Da As New SqlDataAdapter(Cmd) ListarUsuario = New DataTable Da.Fill(ListarUsuario) End Function Public Function VerificarUsuario(ByVal Usuario As String, ByVal Password As String) As Boolean Dim Cmd As New SqlCommand("UspVerUsu", Cn) Cmd.CommandType = CommandType.StoredProcedure Cmd.Parameters.Add("@NomUsu", SqlDbType.VarChar, 30).Value = Usuario Cmd.Parameters.Add("@PasUsu", SqlDbType.VarChar, 30).Value = Password Cn.Open() If Cmd.ExecuteScalar = 1 Then VerificarUsuario = True Else VerificarUsuario = False End If End Function

24/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

4.- Al formulario “FrmIngreso” agregar los siguientes códigos Objeto: FrmIngreso

Evento: Declaraciones

Dim Correcto As Boolean = True Objeto: FrmIngreso

Evento: FormClosing

e.Cancel = Correcto Objeto: FrmIngreso

Evento: Load

Me.LstUsuario.DataSource = Obj.ListarUsuario Me.LstUsuario.ValueMember = "NomUsu" Me.LstUsuario.DisplayMember = "NomUsu" Objeto: BtnBuscar

Evento: Click

Me.Width = 469 Objeto: LstUsuario

Evento: DoubleClick

Me.TxtUsuario.Text = Me.LstUsuario.SelectedValue Me.Width = 326 Me.TxtPassword.Focus() Objeto: BtnIngresar

Evento: Click

If Obj.VerificarUsuario(Me.TxtUsuario.Text.Trim, Me.TxtPassword.Text.Trim) Then MsgBox("Bienvenido al Sistema") Correcto = False Me.Close() Else MsgBox("Usuario Icorrecto") Static Con As Short Con += 1 If Con = 3 Then End Me.TxtUsuario.Clear() Me.TxtPassword.Clear() Me.TxtUsuario.Focus() End If Objeto: BtnCancelar

Evento: Click

Dispose() End

4.- Por ultimo agregar un nuevo formulario de nombre “MDIPrincipal” y cambie las siguientes propiedades. Propiedad Text IsMdiContainer BackgroundImage BackgroundImageLayaut WindowsState

Valor Sistema de Ventas True A gusto del alumno Stretch Maximized

25/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Mantenimiento de Datos Aplicaciones Windows (ADO Net)

5.- Al “MDIPrincipal” agregar un control “MenuStrip” y diseñe su menú de acorde a su requerimientos de sistema para poder llamar a las ventanas que tiene el sistema. 6.- En el evento load del “MDIPrincipal” agregar el siguiente código. FrmIngreso.ShowDialog()

7.- Establezca como formulario de inicio al MDIPrincipal, pruebe y se vera como sigue.

Practica Calificada. Ud. Deberá completar el sistema de ventas, desarrollar los mantenimientos para las demás tablas, crear las consultas que cree necesarias para el sistema, también deberá llamar a cada formulario desde cada elemento de menú. Ojito: Alumno que no complete el Sistema con todo lo antes indicado, pierde derecho a examen final, por ende, desaprueba el curso.

26/26 Prof: Allende Aguilar; Franklin | Email: frank_allende@hotmail.com


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.