26
Mantenimiento de Datos Aplicaciones Windows (ADO Net) 1/26 Prof: Allende Aguilar; Franklin | Email: [email protected] Visual Studio Net FrankDocNet Mantenimiento de Datos Aplicaciones Windows (ADO Net) Prof: Allende Aguilar; Franklin

Mantenimiento de Datos con .Net

Embed Size (px)

DESCRIPTION

Mantenimiento de Datos con .Net con base de Datos SQL server, desde lo basico y Capas,

Citation preview

Page 1: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

1/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

Visual Studio Net 

FrankDocNet

    Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

Prof: Allende Aguilar; Franklin 

 

 

Page 2: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

Mantenimiento de Datos

Conocer el Objeto Command Como pasar parámetros Como ejecutar Comandos Casos prácticos

Objetivos:

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: [email protected] 

 

Page 3: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

Base de Datos “Ventas”

3/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

Page 4: Mantenimiento de Datos con .Net

 

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:

4/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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

Page 5: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

Objeto: Form1 Evento: Load

Objeto: BtnGuardar Evento: Click

'Llamamos al procedimiento CargarDatos CargarDatos()

'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

MsgBox("Producto se Guardo correctamente") 'Llamamos a los Prec CargarDatos() Limpiar()

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

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)

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: [email protected] 

 

Page 6: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

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

Objeto: Form2 Evento: Load

Objeto: BtnInsertar Evento: Click

Dim Con As Control For Each Con In Me.Panel1.Controls If TypeOf Con Is TextBox Then Con.Text = "" Next

End Sub

'Llamamos al procedimiento CargarDatos CargarDatos()

'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

'Llamamos a los Prec CargarDatos() Limpiar()

'Ejecutamos el commando Cmd.ExecuteNonQuery() 'cerramos el Connection Cn.Close() MsgBox("Producto se Guardo correctamente")

Cn.Open()

Sub Limpiar()

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

Objeto: DgvDatos Evento: DoubleClick

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

'Preguntamos si el seleccinado tiene contenido If Not IsDBNull(Me.DgvDatos.SelectedCells(0).Value) Then

'Pasamos los datos de la grilla a los TextBox

6/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

Page 7: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

Objeto: BtnModificar Evento: Click

7/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

CargarDatos() Limpiar()

MsgBox("Producto se Modifico correctamente") 'Llamamos a los Prec

'cerramos el Connection Cn.Close()

'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()

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.

Page 8: Mantenimiento de Datos con .Net

 

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.

8/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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

Page 9: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

Objeto: Form3 Evento: Load

9/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

'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

Objeto: DgvDatos Evento: DoubleClick

Nota: El TextBox TxtCodigo tiene que estar inabilitado (Enabled=False)

'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

'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()

Page 10: Mantenimiento de Datos con .Net

 

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

10/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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

Page 11: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

Objeto: FrmManProducto Evento: Declaraciones

Objeto: FrmManProducto Evento: Load

Objeto: BtnNuevo Evento: Click

Objeto: BtnEditar Evento: Click

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

Dim Cn As New SqlConnection("Server=(local);DataBase=Ventas;Integrated Security=true") Dim Nuevo As Boolean Sub Limpiar()

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

'Llamamos al procedimiento Habilitar Habilitar(True)

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

Dim Con As Control For Each Con In Me.GbTxt.Controls If TypeOf Con Is TextBox Then Con.Text = "" Next End Sub

11/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

Page 12: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

Objeto: TxtBuscar Evento: TextChange

Objeto: BtnCancelar Evento: Click

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)

Habilitar(True) Limpiar()

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

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: [email protected] 

 

Page 13: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

13/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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:

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

As Declare @CodCli varchar(6) Select @CodCli=right('00000' + ltrim(str(count(*)+1)),6) from Cliente

@NomCli varchar(40),@ApeCli varchar (50), @RucCli varchar(11),@TelCli varchar (10), @DirCli varchar(50),@CodDis varchar(4)

Use ventas go --Procedimientos Almacenados de Cliente create Procedure UspGuaCli

Page 14: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

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

Objeto: FrmManCliente Evento: Load

Objeto: BtnNuevo Evento: Click

Objeto: BtnEditar Evento: Click

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

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

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

'Llamamos al procedimiento Habilitar y CargarDatos Habilitar(True) CargarDatos()

Habilitar(False) Limpiar() Me.TxtNombre.Focus()

Next End Sub Sub Habilitar(ByVal Sw As Boolean)

Me.BtnNuevo.Enabled = Sw

14/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

Page 15: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

Objeto: TxtBuscar Evento: TextChange

Objeto: BtnGuardar Evento: Click

Objeto: BtnCancelar Evento: Click

Objeto: BtnBuscar 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

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

Habilitar(True) Limpiar()

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

15/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

Page 16: Mantenimiento de Datos con .Net

 

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

16/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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.

Page 17: Mantenimiento de Datos con .Net

 

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.

17/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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 

Page 18: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

@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 + '%'

Use Ventas Go --Procediemto Almacenado para insertar nuevo Empleado Create Procedure UspGuaEmp @NomEmp varchar(40), @ApeEmp varchar(50), @FecIng datetime, @TelEmp varchar(10),

18/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

Page 19: Mantenimiento de Datos con .Net

 

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.

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 

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

19/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

Page 20: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

20/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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 

Page 21: Mantenimiento de Datos con .Net

 

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

21/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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)

Page 22: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

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

22/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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) 

Page 23: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

Objeto: DgvBuscar Evento: DoubleClick

23/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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) 

Page 24: Mantenimiento de Datos con .Net

 

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.

24/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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 

Page 25: Mantenimiento de Datos con .Net

 

Mantenimiento de Datos Aplicaciones Windows (ADO Net) 

 

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

25/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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 Valor Text Sistema de Ventas IsMdiContainer True BackgroundImage A gusto del alumno BackgroundImageLayaut Stretch WindowsState Maximized

Page 26: Mantenimiento de Datos con .Net

 

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.

26/26  Prof: Allende Aguilar; Franklin           |            Email: [email protected] 

 

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.