You are on page 1of 27

Mantenimiento de Datos

Aplicaciones Windows (ADO Net)

Visual Studio
Net

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

FrankDoc Net

Mantenimiento de Datos

Aplicaciones Windows (ADO Net)

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 parmetros 9 Como ejecutar Comandos 9 Casos prcticos

Introduccin 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 pequea 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

frank_allende@hotmail.com

Mantenimiento de Datos Base de Datos Ventas

Aplicaciones Windows (ADO Net)

3 /26 Prof: Allende Aguilar; Franklin

frank_allende@hotmail.com

Mantenimiento de Datos Primera Practica

Aplicaciones Windows (ADO Net)

1.- Crear un nuevo Proyecto de Aplicacin Windows de nombre Practica de Mantenimiento I. 2.- En el Form1 disee como sigue:

3.- Agregar los siguientes cdigos:


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

frank_allende@hotmail.com

Mantenimiento de Datos

Aplicaciones Windows (ADO Net)

Objeto: Form1 'Llamamos al procedimiento CargarDatos CargarDatos() Objeto: BtnGuardar

Evento: Load

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 diseo.

5 /26 Prof: Allende Aguilar; Franklin

frank_allende@hotmail.com

Mantenimiento de Datos 5.- Agregue los siguientes cdigos al Form2


Objeto: Form2

Aplicaciones Windows (ADO Net)

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 'Llamamos al procedimiento CargarDatos CargarDatos() Objeto: BtnInsertar Evento: Click Evento: Load

'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

frank_allende@hotmail.com

Mantenimiento de Datos
Objeto: BtnModificar

Aplicaciones Windows (ADO Net)


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 insercin y modificacin de Datos a travs de Procedimientos Almacenados, entonces disee de la siguiente forma.

7 /26 Prof: Allende Aguilar; Franklin

frank_allende@hotmail.com

Mantenimiento de Datos

Aplicaciones Windows (ADO Net)

7.- Antes de agregar cdigo, 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 cdigos 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

frank_allende@hotmail.com

Mantenimiento de Datos
Objeto: Form3 'Llamamos al procedimiento CargarDatos CargarDatos() Objeto: BtnInsertar

Aplicaciones Windows (ADO Net)


Evento: Load

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

frank_allende@hotmail.com

Mantenimiento de Datos

Aplicaciones Windows (ADO Net)

En las siguientes hojas veremos mantenimientos casi completos, la parte de validacin se lo dejo a Uds, esa parte corresponde al modulo I, cualquier consulta hgalo a su Instructor. Segunda Practica 1.- Crear un nuevo proyecto de Aplicacin Windows de nombre Practica de Mantenimiento II. 2.- Eliminar el Form1, agregar un nuevo formulario y pngale el nombre FrmManProducto y haga el siguiente diseo

3.- Agregar los siguientes cdigos:


Objeto: BtnBuscar Me.TxtBuscar.Text=a Me.TxtBuscar.Clear() Me.Width = 684 Evento: Click

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

frank_allende@hotmail.com

Mantenimiento de Datos
Objeto: FrmManProducto

Aplicaciones Windows (ADO Net)


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 'Llamamos al procedimiento Habilitar Habilitar(True)

Evento: Load

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

Evento: Click

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

Evento: Click

11 /26 Prof: Allende Aguilar; Franklin

frank_allende@hotmail.com

Mantenimiento de Datos
Objeto: TxtBuscar

Aplicaciones Windows (ADO Net)


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 Habilitar(True) Limpiar() Objeto: BtnGuardar Evento: Click 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 cdigo 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 Diseo:

12 /26 Prof: Allende Aguilar; Franklin

frank_allende@hotmail.com

Mantenimiento de Datos

Aplicaciones Windows (ADO Net)

Nota: Los nombre de los controles sern 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

frank_allende@hotmail.com

Mantenimiento de Datos

Aplicaciones Windows (ADO Net)

6.- Agregar los siguientes cdigos:


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 'Llamamos al procedimiento Habilitar y CargarDatos Habilitar(True) CargarDatos() Objeto: BtnNuevo Habilitar(False) Limpiar() Me.TxtNombre.Focus() Objeto: BtnEditar If Me.TxtCodigo.Text.Trim = "" Then MsgBox("Seleccione el Producto a Modificar") Else Habilitar(False) End If

Evento: Load

Evento: Click

Evento: Click

14 /26 Prof: Allende Aguilar; Franklin

frank_allende@hotmail.com

Mantenimiento de Datos
Objeto: TxtBuscar

Aplicaciones Windows (ADO Net)


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 Habilitar(True) Limpiar() Objeto: BtnBuscar Me.TxtBuscar_TextChanged(sender, e) Me.Width = 684

Evento: Click

Evento: Click

15 /26 Prof: Allende Aguilar; Franklin

frank_allende@hotmail.com

Mantenimiento de Datos
Objeto: DgvBuscar

Aplicaciones Windows (ADO Net)


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 grfico 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

frank_allende@hotmail.com

Mantenimiento de Datos

Aplicaciones Windows (ADO Net)

2.- En la ficha de Proyectos y Soluciones Chekear las dos opciones sealadas en el grfico. 3.- Agregar un nuevo Proyecto de Aplicacin Windows de nombre Sistema de Ventas y a la solucin pngale el nombre Sistema Integrado como se muestra en el grfico.

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

frank_allende@hotmail.com

Mantenimiento de Datos
Use Ventas Go

Aplicaciones Windows (ADO Net)

--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

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 importacin 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

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

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 grfico y click en Aceptar.

9.- Al Proyecto Sistema de Ventas agregar un modulo de nombre ModSistema y agregue el siguiente cdigo.
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 diseo.

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

frank_allende@hotmail.com

Mantenimiento de Datos

Aplicaciones Windows (ADO Net)

11.- Al formulario FrmManEmpleado agregar los siguientes cdigos.


Objeto: FrmManEmpleado 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 Habilitar(True) CargarDatos() Objeto: BtnNuevo Habilitar(False) Limpiar() Me.DtpFecIng.Value = Today Me.TxtNombre.Focus() Objeto: BtnEditar If Me.TxtCodigo.Text.Trim = "" Then MsgBox("Seleccione el Empleado a Modificar") Else Habilitar(False) End If Evento: Click Evento: Click Evento: Load Evento: Click

Objeto: TxtBuscar

Evento: TextChange

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

22 /26 Prof: Allende Aguilar; Franklin

frank_allende@hotmail.com

Mantenimiento de Datos
Objeto: DgvBuscar

Aplicaciones Windows (ADO Net)


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 Habilitar(True) Limpiar() Objeto: BtnBuscar Me.TxtBuscar_TextChanged(sender, e) Me.Width = 684 Objeto: BtnGuardar Evento: Click Evento: Click 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

frank_allende@hotmail.com

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 diseo.

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

frank_allende@hotmail.com

4.- Al formulario FrmIngreso agregar los siguientes cdigos


Objeto: FrmIngreso Dim Correcto As Boolean = True Objeto: FrmIngreso e.Cancel = Correcto Objeto: FrmIngreso Me.LstUsuario.DataSource = Obj.ListarUsuario Me.LstUsuario.ValueMember = "NomUsu" Me.LstUsuario.DisplayMember = "NomUsu" Objeto: BtnBuscar Me.Width = 469 Objeto: LstUsuario Me.TxtUsuario.Text = Me.LstUsuario.SelectedValue Me.Width = 326 Me.TxtPassword.Focus() Objeto: BtnIngresar Evento: Click Evento: DoubleClick Evento: Click Evento: Load Evento: FormClosing Evento: Declaraciones

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 Dispose() End Evento: Click

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

frank_allende@hotmail.com

5.- Al MDIPrincipal agregar un control MenuStrip y disee 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 cdigo.
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 dems tablas, crear las consultas que cree necesarias para el sistema, tambin 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

frank_allende@hotmail.com

You might also like