Professional Documents
Culture Documents
Visual Studio
Net
Mantenimiento de Datos
Aplicaciones Windows (ADO Net)
Prof: Allende Aguilar; Franklin
FrankDoc Net
Mantenimiento de Datos
Email: frank_allende@hotmail.com
Mantenimiento de Datos
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.
frank_allende@hotmail.com
frank_allende@hotmail.com
1.- Crear un nuevo Proyecto de Aplicacin Windows de nombre Practica de Mantenimiento I. 2.- En el Form1 disee como sigue:
frank_allende@hotmail.com
Mantenimiento de Datos
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.
frank_allende@hotmail.com
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
frank_allende@hotmail.com
Mantenimiento de Datos
Objeto: BtnModificar
'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.
frank_allende@hotmail.com
Mantenimiento de Datos
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
frank_allende@hotmail.com
Mantenimiento de Datos
Objeto: Form3 '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)
frank_allende@hotmail.com
Mantenimiento de Datos
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
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
frank_allende@hotmail.com
Mantenimiento de Datos
Objeto: FrmManProducto
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
Evento: Load
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
frank_allende@hotmail.com
Mantenimiento de Datos
Objeto: TxtBuscar
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:
frank_allende@hotmail.com
Mantenimiento de Datos
Nota: Los nombre de los controles sern igual que el anterior formulario, salvo los nuevo que ingresamos.
frank_allende@hotmail.com
Mantenimiento de Datos
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
frank_allende@hotmail.com
Mantenimiento de Datos
Objeto: TxtBuscar
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
Evento: Click
Evento: Click
frank_allende@hotmail.com
Mantenimiento de Datos
Objeto: DgvBuscar
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.
frank_allende@hotmail.com
Mantenimiento de Datos
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
frank_allende@hotmail.com
Mantenimiento de Datos
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 + '%'
frank_allende@hotmail.com
Mantenimiento de Datos
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
frank_allende@hotmail.com
Mantenimiento de Datos
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
frank_allende@hotmail.com
Mantenimiento de Datos
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)
frank_allende@hotmail.com
Mantenimiento de Datos
Objeto: TxtBuscar
Evento: TextChange
Me.DgvBuscar.DataSource = Obj.FiltrarEmpleado(Me.TxtBuscar.Text)
frank_allende@hotmail.com
Mantenimiento de Datos
Objeto: DgvBuscar
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)
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.
frank_allende@hotmail.com
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
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.
frank_allende@hotmail.com