TUTORIAL DE LA APLICACIÓN
1. Base de Datos
1.1 Creando la Tabla Empleado
CREATE TABLE [Empleado]( [CodEmpleado] [char](10) NOT NULL, [Nombres] [varchar](100) NULL, [ApePaterno] [varchar](50) NULL, [ApeMaterno] [varchar](50) NULL, [FecNacimiento] [date] NULL, [CodSexo] [char](3) NULL, [Foto] [image] NULL, [CodEstado] [char](3) NULL, [Terminal] [varchar](15) NULL, [FechaRegi] [datetime] NULL, [UsuarioRegi] [varchar](15) NULL, [FechaModi] [datetime] NULL, [UsuarioModi] [varchar](15) NULL, CONSTRAINT [PK_Empleado] PRIMARY KEY CLUSTERED ( [CodEmpleado] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
1.2 Procedimientos Almacenados para Generar Codigo, Insertar, Actualizar, Eliminar y Listar
--STORED PROCEDURE PARA GENERAR CODIGO DE EMPLEADO
CREATE PROCEDURE [dbo].[USP_Empleado_GenerarCodigo]
AS
BEGIN
select
'EMP' +
RIGHT('0000000'+CONVERT(VARCHAR(20),ISNULL(MAX(RIGHT(CodEmpleado,7)),0)+1),7)
from Empleado
END
GO
-- STORED PROCEDURE PARA INSERTAR
CREATE PROCEDURE [dbo].[USP_Empleado_Insertar]
(
@CodEmpleado char(10),
@Nombres varchar(100) = NULL,
@ApePaterno varchar(50) = NULL,
@ApeMaterno varchar(50) = NULL,
@FecNacimiento date = NULL,
@CodSexo char(3) = NULL,
@Foto image = NULL,
@CodEstado char(3) = NULL,
@Terminal varchar(15) = NULL,
@UsuarioRegi varchar(15) = NULL)
AS
BEGIN
INSERT
INTO [Empleado]
(
[CodEmpleado],
[Nombres],
[ApePaterno],
[ApeMaterno],
[FecNacimiento],
[CodSexo],
[Foto],
[CodEstado],
[Terminal],
[FechaRegi],
[UsuarioRegi]
)
VALUES
(
@CodEmpleado,
@Nombres,
@ApePaterno,
@ApeMaterno,
@FecNacimiento,
@CodSexo,
@Foto,
@CodEstado,
@Terminal,
GETDATE(),
@UsuarioRegi
)
END
GO
--STORED PROCEDURE PARA ACTUALIZAR
CREATE PROCEDURE [USP_Empleado_Actualizar]
(
@CodEmpleado char(10),
@Nombres varchar(100) = NULL,
@ApePaterno varchar(50) = NULL,
@ApeMaterno varchar(50) = NULL,
@FecNacimiento date = NULL,
@CodSexo char(3) = NULL,
@Foto image = NULL,
@CodEstado char(3) = NULL,
@Terminal varchar(15) = NULL,
@UsuarioModi varchar(15) = NULL)
AS
BEGIN
UPDATE [Empleado]
SET
[CodEmpleado] = @CodEmpleado,
[Nombres] = @Nombres,
[ApePaterno] = @ApePaterno,
[ApeMaterno] = @ApeMaterno,
[FecNacimiento] = @FecNacimiento,
[CodSexo] = @CodSexo,
[Foto] = @Foto,
[CodEstado] = @CodEstado,
[Terminal] = @Terminal,
[FechaModi] = GETDATE(),
[UsuarioModi] = @UsuarioModi
WHERE
[CodEmpleado] = @CodEmpleado
END
GO
--STORED PROCEDURE PARA ELIMINAR
CREATE PROCEDURE [USP_Empleado_Eliminar]
(
@CodEmpleado char(10)
)
AS
BEGIN
DELETE FROM Empleado
WHERE [CodEmpleado] = @CodEmpleado
END
GO
--PROCEDURE PARA LISTAR REGISTROS POR CRITERIO DE BUSQUEDA
CREATE PROCEDURE [dbo].[USP_Empleado_Listar]
@Criterio varchar(150)
AS
begin
select Empleado=ApePaterno+' '+ApeMaterno+' '+Nombres,* from Empleado
where (ApePaterno+''+ApeMaterno+''+Nombres) like '%'+@Criterio+'%'
end
2. Visual Studio 2008
2.1 Creando una solución en blanco
2.2 Añadiendo la Capa de Entidades
Una tabla es una entidad que en nuestro caso sera la tabla "Empleado". Esta entidad es la que recorrerá las distintas capas llevando o trayendo información.
Pasos:
- Click derecho en la solución("Tutorial_NCapas") creada previamente y elegir la opcion agregar nuevo proyecto.
- Seleccionar Librería de Clases y nombrarla "BusinessEntities" para identificar que dentro de ese proyecto estarán todas nuestras entidades.
2.2.1 Creando la Clase EmpleadoBE
Pasos:
- Click derecho en el proyecto "BusinessEntities" y agregar una nueva clase con el nombre de "EmpleadoBE"
- Agregar el siguiente codigo dentro de la clase "EmpleadoBE"
Public Class EmpleadoBE
'Campos de la entidad
Private _CodEmpleado As String
Private _Nombres As String
Private _ApePaterno As String
Private _ApeMaterno As String
Private _FecNacimiento As Date
Private _CodSexo As String
Private _Foto As Byte()
Private _CodEstado As String
Private _Terminal As String
Private _FechaRegi As Date
Private _UsuarioRegi As String
Private _FechaModi As Date
Private _UsuarioModi As String
'Propiedades de la entidad
Public Property CodEmpleado() As String
Get
Return _CodEmpleado
End Get
Set(ByVal value As String)
_CodEmpleado = value
End Set
End Property
Public Property Nombres() As String
Get
Return _Nombres
End Get
Set(ByVal value As String)
_Nombres = value
End Set
End Property
Public Property ApePaterno() As String
Get
Return _ApePaterno
End Get
Set(ByVal value As String)
_ApePaterno = value
End Set
End Property
Public Property ApeMaterno() As String
Get
Return _ApeMaterno
End Get
Set(ByVal value As String)
_ApeMaterno = value
End Set
End Property
Public Property FecNacimiento() As Date
Get
Return _FecNacimiento
End Get
Set(ByVal value As Date)
_FecNacimiento = value
End Set
End Property
Public Property CodSexo() As String
Get
Return _CodSexo
End Get
Set(ByVal value As String)
_CodSexo = value
End Set
End Property
Public Property Foto() As Byte()
Get
Return _Foto
End Get
Set(ByVal value As Byte())
_Foto = value
End Set
End Property
Public Property CodEstado() As String
Get
Return _CodEstado
End Get
Set(ByVal value As String)
_CodEstado = value
End Set
End Property
Public Property Terminal() As String
Get
Return _Terminal
End Get
Set(ByVal value As String)
_Terminal = value
End Set
End Property
Public Property FechaRegi() As Date
Get
Return _FechaRegi
End Get
Set(ByVal value As Date)
_FechaRegi = value
End Set
End Property
Public Property UsuarioRegi() As String
Get
Return _UsuarioRegi
End Get
Set(ByVal value As String)
_UsuarioRegi = value
End Set
End Property
Public Property FechaModi() As Date
Get
Return _FechaModi
End Get
Set(ByVal value As Date)
_FechaModi = value
End Set
End Property
Public Property UsuarioModi() As String
Get
Return _UsuarioModi
End Get
Set(ByVal value As String)
_UsuarioModi = value
End Set
End Property
End Class
2.3 Añadiendo la Capa de Acceso a Datos
Es la encargada de acceder a los datos. Aqui se reciben las solicitudes de almacenamiento o recuperación de información desde la capa de negocio
Pasos:
- Click derecho en la solución("Tutorial_NCapas") creada previamente y elegir la opcion agregar nuevo proyecto.
- Seleccionar Biblioteca de Clases y nombrarla "DataAccess" para identificar que dentro de ese proyecto estarán todas las clases que van interactuar con la base datos
- Click Derecho en el proyecto("DataAccess") y seleccionar "Agregar Referencia".
- Ubicar la pestaña "Proyectos" y seleccionar como referencia "BusinessEntities" para poder heredar todas las clases creadas en la Capa de Entidades.
Agregar como Referencia la Capa de Entidades
2.3.1 Creando la Clase Conexion
Pasos:
- Crear una Clase llamada "Conexion" para agregar la cadena de conexion necesaria y poder tener comunicación con la base de datos (SQL Server).
La Clase Conexion.vb
Imports System.Data
Imports System.Data.SqlClient
Public Class Conexion
Public Function Conexion() As SqlConnection
'Cambiar la Base de Datos y el Password de acuerdo a su configuracion
Dim cadconex As String = "Server=.;DATABASE=xxx;User ID=sa;Password=xxx"
Dim cn As New SqlConnection(cadconex)
Return cn
End Function
End Class
2.3.2 Creando la Clase EmpleadoDA
Pasos:
- Click derecho en el proyecto "DataAccess" y agregar una nueva clase con el nombre de "EmpleadoDA"
- Agregar el siguiente codigo dentro de la clase "EmpleadoDA"
La Clase EmpleadoDA.vb
Imports BusinessEntities 'Importamos la capa de entidades, si tienen error es porque no se agrego la referencia
Imports System.Data
Imports System.Data.SqlClient
Public Class EmpleadoDA
'Instanciamos el objeto _Conexion de la clase Conexion para obtener la cadena de conexion a la BD
Dim _Conexion As New Conexion
'Funcion que me ve permitir generar el codigo del empleado
Private Function GenerarCorrelativo() As String
Dim cmd As New SqlCommand
Dim da As New SqlDataAdapter
Dim dt As New DataTable
cmd.Connection = _Conexion.Conexion
cmd.CommandText = "USP_Empleado_GenerarCodigo"
cmd.CommandType = CommandType.StoredProcedure
da.SelectCommand = cmd
da.Fill(dt)
Return dt.Rows(0).Item(0)
End Function
'Metodo para registrar un nuevo empleado
Private Sub Registrar(ByVal EmpleadoBE As EmpleadoBE, ByVal sqlCon As SqlConnection, _
ByVal sqlTrans As SqlTransaction)
Try
Dim cmd As New SqlCommand
cmd.CommandText = "USP_Empleado_Insertar"
cmd.Connection = sqlCon
cmd.Transaction = sqlTrans
cmd.CommandType = CommandType.StoredProcedure
'Los parametros que va recibir son las propiedades de la clase Empleado
cmd.Parameters.Add("@CodEmpleado", SqlDbType.Char).Value = EmpleadoBE.CodEmpleado
cmd.Parameters.Add("@Nombres", SqlDbType.VarChar).Value = EmpleadoBE.Nombres
cmd.Parameters.Add("@ApePaterno", SqlDbType.VarChar).Value = EmpleadoBE.ApePaterno
cmd.Parameters.Add("@ApeMaterno", SqlDbType.VarChar).Value = EmpleadoBE.ApeMaterno
cmd.Parameters.Add("@FecNacimiento", SqlDbType.Date).Value = EmpleadoBE.FecNacimiento
cmd.Parameters.Add("@CodSexo", SqlDbType.Char).Value = EmpleadoBE.CodSexo
cmd.Parameters.Add("@Foto", SqlDbType.Image).Value = EmpleadoBE.Foto
cmd.Parameters.Add("@CodEstado", SqlDbType.Char).Value = EmpleadoBE.CodEstado
cmd.Parameters.Add("@Terminal", SqlDbType.VarChar).Value = EmpleadoBE.Terminal
cmd.Parameters.Add("@UsuarioRegi", SqlDbType.VarChar).Value = EmpleadoBE.UsuarioRegi
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
'Metodo para Modificar un empleado
Private Sub Modificar(ByVal EmpleadoBE As EmpleadoBE, ByVal sqlCon As SqlConnection, _
ByVal sqlTrans As SqlTransaction)
Try
Dim cmd As New SqlCommand
cmd.CommandText = "USP_Empleado_Actualizar"
cmd.Connection = sqlCon
cmd.Transaction = sqlTrans
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@CodEmpleado", SqlDbType.Char).Value = EmpleadoBE.CodEmpleado
cmd.Parameters.Add("@Nombres", SqlDbType.VarChar).Value = EmpleadoBE.Nombres
cmd.Parameters.Add("@ApePaterno", SqlDbType.VarChar).Value = EmpleadoBE.ApePaterno
cmd.Parameters.Add("@ApeMaterno", SqlDbType.VarChar).Value = EmpleadoBE.ApeMaterno
cmd.Parameters.Add("@FecNacimiento", SqlDbType.Date).Value = EmpleadoBE.FecNacimiento
cmd.Parameters.Add("@CodSexo", SqlDbType.Char).Value = EmpleadoBE.CodSexo
cmd.Parameters.Add("@Foto", SqlDbType.Image).Value = EmpleadoBE.Foto
cmd.Parameters.Add("@CodEstado", SqlDbType.Char).Value = EmpleadoBE.CodEstado
cmd.Parameters.Add("@Terminal", SqlDbType.VarChar).Value = EmpleadoBE.Terminal
cmd.Parameters.Add("@UsuarioModi", SqlDbType.VarChar).Value = EmpleadoBE.UsuarioModi
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
'Metodo para Eliminar un empleado
Private Sub Eliminar(ByVal EmpleadoBE As EmpleadoBE, ByVal sqlCon As SqlConnection, _
ByVal sqlTrans As SqlTransaction)
Try
Dim cmd As New SqlCommand
cmd.CommandText = "USP_Empleado_Eliminar"
cmd.Connection = sqlCon
cmd.Transaction = sqlTrans
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@CodEmpleado", SqlDbType.Char).Value = EmpleadoBE.CodEmpleado
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
'Funcion Principal que hara toda la logica para grabar la data
Public Function GrabarEmpleado(ByVal EmpleadoBE As EmpleadoBE, ByVal flagAccion As String) As Boolean
Dim resultado As Boolean = True
Dim cn As New SqlConnection
Dim sqlTrans As SqlTransaction
Dim correlativo As String
cn = _Conexion.Conexion
cn.Open()
sqlTrans = cn.BeginTransaction
Try
'N:Nuevo M:Modificar E:Eliminar
If flagAccion = "N" Then
correlativo = GenerarCorrelativo()
EmpleadoBE.CodEmpleado = correlativo
Registrar(EmpleadoBE, cn, sqlTrans)
End If
If flagAccion = "M" Then
Modificar(EmpleadoBE, cn, sqlTrans)
End If
If flagAccion = "E" Then
Eliminar(EmpleadoBE, cn, sqlTrans)
End If
sqlTrans.Commit()
resultado = True
Catch ex As SqlException
sqlTrans.Rollback()
resultado = False
Catch ex As Exception
sqlTrans.Rollback()
resultado = False
Finally
cn.Close()
sqlTrans = Nothing
End Try
Return resultado
End Function
'Funcion que me va permitir capturar la lista de registros en la tabla empleado y que me va retornar
'un Datatable
Public Function ListarEmpleados(ByVal Criterio As String) As DataTable
Dim cmd As New SqlCommand
Dim da As New SqlDataAdapter
Dim dt As New DataTable
cmd.Connection = _Conexion.Conexion
cmd.CommandText = "USP_Empleado_Listar"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@Criterio", SqlDbType.VarChar).Value = Criterio
da.SelectCommand = cmd
da.Fill(dt)
Return dt
End Function
End Class
2.4 Añadiendo la Capa Lógica
En esta capa es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envían las respuestas tras el proceso.
Pasos:
- Click derecho en la solución("Tutorial_NCapas") creada previamente y elegir la opcion agregar nuevo proyecto.
- Seleccionar Biblioteca de Clases y nombrarla "BusinessLogic" para identificar que dentro de ese proyecto estará toda la logica del negocio
- Click Derecho en el proyecto("BusinessLogic") y seleccionar "Agregar Referencia".
- Ubicar la pestaña "Proyectos" y seleccionar como referencia "BusinessEntities" para poder heredar todas las clases creadas en la Capa de Entidades y "DataAccess" para poder heredar todas las clases creadas en la Capa de Acceso a Datos
Agregar como Referencia la Capa de Entidades y de Acceso a Datos
2.4.1 Creando la Clase EmpleadoBL
Pasos:
- Click derecho en el proyecto "BusinessLogic" y agregar una nueva clase con el nombre de "EmpleadoBL"
- Agregar el siguiente codigo dentro de la clase "EmpleadoBL"
La Clase EmpleadoBL.vb
Imports BusinessEntities 'Importamos la capa de entidades
Imports DataAccess 'Importamos la capa de acceso a datos
Public Class EmpleadoBL
'Instanciamos el objeto _EmpleadoDA de la Clase EmpleadoDA
Dim _EmpleadoDA As New EmpleadoDA
Public Function GrabarEmpleado(ByVal EmpleadoBE As EmpleadoBE, _
ByVal flagAccion As String) As Boolean
Return _EmpleadoDA.GrabarEmpleado(EmpleadoBE, flagAccion)
End Function
Public Function ListarEmpleados(ByVal Criterio As String) As DataTable
Return _EmpleadoDA.ListarEmpleados(Criterio)
End Function
End Class
2.5 Añadiendo la Capa de Presentación
Esta capa es la que contiene las interfaces en las que el usuario interactua con el sistema.
Pasos:
- Click derecho en la solución("Tutorial_NCapas") creada previamente y elegir la opcion agregar nuevo proyecto.
- Seleccionar Windows Forms Application y nombrarla "Presentacion" para identificar que dentro de ese proyecto estarán todos los formularios.
- Click Derecho en el proyecto("Presentacion") y seleccionar "Agregar Referencia".
- Ubicar la pestaña "Proyectos" y seleccionar como referencia "BusinessEntities" para poder heredar todas las clases creadas en la Capa de Entidades y "Business Logic" para poder heredar todas las clases creadas en la Capa Lógica
Agregar como Referencia la Capa de Entidades y la Capa Lógica
2.5.1 Creando el Formulario FrmTutorial
Pasos:
- Click derecho en el proyecto "Presentacion" y agregar una nuevo formulario con el nombre de "FrmTutorial"
- SOLO configurar las propiedades indicadas en cada uno de los controles del formulario(Ver Cuadro de Controles), lo que no se indica dejarlo tal como está.
| Cuadro de Controles | |||
| Botones | TextFields | ComboBox y DateTimePicker | DataGridView y PictureBox |
Para el boton "Nuevo":
|
Para el Campo "Codigo":
|
Para el Combo "Estado":
|
Para el DataGridView:
|
Ingresar el siguiente codigo dentro del Formulario FrmTutorial
'Importando la Capa de Entidades y la Capa Logica
Imports BusinessEntities
Imports BusinessLogic
'Importacion necesaria para trabajar con las imagenes
Imports System.IO
Public Class FrmTutorial
'************** DECLARACION DE VARIABLES GLOBALES ****************'
Dim _EmpleadoBL As New EmpleadoBL
Dim flagAccion As String = ""
'******************** METODOS *************************************'
Private Sub NueModEli()
btnNuevo.Enabled = False
btnModificar.Enabled = False
btnEliminar.Enabled = False
btnGrabar.Enabled = True
btnCancelar.Enabled = True
End Sub
Private Sub CancelarGrabar()
btnNuevo.Enabled = True
btnModificar.Enabled = True
btnEliminar.Enabled = True
btnGrabar.Enabled = False
btnCancelar.Enabled = False
End Sub
Private Sub Habilitar()
cboEstado.Enabled = True
txtApePaterno.ReadOnly = False
txtApeMaterno.ReadOnly = False
txtNombres.ReadOnly = False
dtpFecNac.Enabled = True
cboSexo.Enabled = True
btnAgregarFoto.Enabled = True
btnQuitarFoto.Enabled = True
End Sub
Private Sub Deshabilitar()
cboEstado.Enabled = False
txtApePaterno.ReadOnly = True
txtApeMaterno.ReadOnly = True
txtNombres.ReadOnly = True
dtpFecNac.Enabled = False
cboSexo.Enabled = False
btnAgregarFoto.Enabled = False
btnQuitarFoto.Enabled = False
End Sub
Private Sub Limpiar()
txtCodigo.Clear()
cboEstado.SelectedIndex = -1
txtApePaterno.Clear()
txtApeMaterno.Clear()
txtNombres.Clear()
pbFoto.Image = Nothing
dtpFecNac.Value = Now.Date
cboSexo.SelectedIndex = -1
End Sub
Private Sub ListarEmpleados()
Dim dtEmpleados As DataTable
dtEmpleados = _EmpleadoBL.ListarEmpleados(txtBusqueda.Text)
dgvEmpleados.DataSource = dtEmpleados
FormatoGrilla()
End Sub
Private Function Validar() As Boolean
If cboEstado.SelectedIndex = -1 Then
MsgBox("Seleccione Estado", MsgBoxStyle.Critical)
cboEstado.Focus()
Return False
End If
If txtApePaterno.Text = "" Then
MsgBox("Ingrese Apellido Paterno", MsgBoxStyle.Critical)
txtApePaterno.Focus()
Return False
End If
If txtApeMaterno.Text = "" Then
MsgBox("Ingrese Apellido Materno", MsgBoxStyle.Critical)
txtApeMaterno.Focus()
Return False
End If
If txtNombres.Text = "" Then
MsgBox("Ingrese Nombres", MsgBoxStyle.Critical)
txtNombres.Focus()
Return False
End If
If cboSexo.SelectedIndex = -1 Then
MsgBox("Seleccione Sexo", MsgBoxStyle.Critical)
cboSexo.Focus()
Return False
End If
Return True
End Function
Private Sub FormatoGrilla()
With dgvEmpleados
.Columns(0).Visible = True
.Columns(0).Width = 410
.Columns(1).Visible = False
.Columns(2).Visible = False
.Columns(3).Visible = False
.Columns(4).Visible = False
.Columns(5).Visible = False
.Columns(6).Visible = False
.Columns(7).Visible = False
.Columns(8).Visible = False
.Columns(9).Visible = False
.Columns(10).Visible = False
.Columns(11).Visible = False
.Columns(12).Visible = False
.Columns(13).Visible = False
End With
End Sub
Private Sub RecuperarDatosGrilla()
With dgvEmpleados.CurrentRow
txtCodigo.Text = .Cells("CodEmpleado").Value
If (.Cells("CodEstado").Value) = "001" Then cboEstado.SelectedIndex = 0 Else cboEstado.SelectedIndex = 1
If IsDBNull(.Cells("Nombres").Value) Then txtNombres.Text = "" Else txtNombres.Text = .Cells("Nombres").Value
If IsDBNull(.Cells("ApePaterno").Value) Then txtApePaterno.Text = "" Else txtApePaterno.Text = .Cells("ApePaterno").Value
If IsDBNull(.Cells("ApeMaterno").Value) Then txtApeMaterno.Text = "" Else txtApeMaterno.Text = .Cells("ApeMaterno").Value
If (.Cells("CodSexo").Value) = "001" Then cboSexo.SelectedIndex = 0 Else cboSexo.SelectedIndex = 1
If IsDBNull(.Cells("FecNacimiento").Value) Then dtpFecNac.Value = "" Else dtpFecNac.Value = .Cells("FecNacimiento").Value
'''' Recuperando Imagen
If (.Cells("Foto").Value) IsNot DBNull.Value Then
Dim byteFoto() As Byte = .Cells("Foto").Value
Dim recuperaFoto As New IO.MemoryStream(byteFoto)
pbFoto.Image = System.Drawing.Image.FromStream(recuperaFoto)
Else
pbFoto.Image = Nothing
End If
''''''''''''''''''''''''
If IsDBNull(.Cells("FechaRegi").Value) Then dtpFechaRegistro.Value = "01/01/1900" Else dtpFechaRegistro.Value = Trim(.Cells("FechaRegi").Value)
If IsDBNull(.Cells("UsuarioRegi").Value) Then txtUsuarioRegistra.Text = "" Else txtUsuarioRegistra.Text = Trim(.Cells("UsuarioRegi").Value)
If IsDBNull(.Cells("FechaModi").Value) Then dtpFechaModificacion.Value = "01/01/1900" Else dtpFechaModificacion.Value = Trim(.Cells("FechaModi").Value)
If IsDBNull(.Cells("UsuarioModi").Value) Then txtUsuarioModifica.Text = "" Else txtUsuarioModifica.Text = Trim(.Cells("UsuarioModi").Value)
End With
End Sub
'********** EL EVENTO LOAD DEL FORMULARIO**********************'
Private Sub FrmTutorial_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call ListarEmpleados()
End Sub
'********** EL EVENTO CLICK DEL BOTON AGREGAR FOTO*************'
Private Sub btnAgregarFoto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregarFoto.Click
Dim Buscar As New OpenFileDialog
Buscar.Multiselect = False
Buscar.Filter = "Archivo de Imagen (*.jpg)|*.jpg|Archivo de Imagen (*.gif)|*.gif|Archivo de Imagen (*.png)|*.png|Todos los archivos|*.*"
Buscar.Title = "Seleccionar archivos"
If Buscar.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.pbFoto.Image = Image.FromFile(Buscar.FileName)
End If
End Sub
'********** EL EVENTO CLICK DEL BOTON QUITAR FOTO************'
Private Sub btnQuitarFoto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnQuitarFoto.Click
pbFoto.Image = Nothing
End Sub
'********** EL EVENTO CLICK DEL BOTON NUEVO********************'
Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click
NueModEli()
Limpiar()
Habilitar()
cboEstado.SelectedIndex = 0
flagAccion = "N"
End Sub
'********** EL EVENTO CLICK DEL BOTON MODIFICAR****************'
Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click
If txtCodigo.Text = "" Then
MsgBox("Seleccione un Registro", MsgBoxStyle.Critical)
Exit Sub
End If
NueModEli()
Habilitar()
flagAccion = "M"
End Sub
'********** EL EVENTO CLICK DEL BOTON ELIMINAR****************'
Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
If txtCodigo.Text = "" Then
MsgBox("Seleccione un Registro", MsgBoxStyle.Critical)
Exit Sub
End If
If MessageBox.Show("Esta seguro de Eliminar el Registro", _
"Tutorial", MessageBoxButtons.YesNo, MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button1) = DialogResult.Yes Then
flagAccion = "E"
Dim _EmpleadoBE As New EmpleadoBE
_EmpleadoBE.CodEmpleado = RTrim(txtCodigo.Text)
If _EmpleadoBL.GrabarEmpleado(_EmpleadoBE, flagAccion) Then
MsgBox("Se Eliminó El Registro Correctamente", MsgBoxStyle.Information)
Call ListarEmpleados()
flagAccion = ""
CancelarGrabar()
Deshabilitar()
Limpiar()
Else
MsgBox("Error al Grabar", MsgBoxStyle.Critical)
End If
Else
MsgBox("Se Cancelo la operacion.", MsgBoxStyle.Exclamation)
End If
End Sub
'********** EL EVENTO CLICK DEL BOTON GRABAR***************'
Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click
If Validar() = False Then
Exit Sub
End If
Dim _EmpleadoBE As New EmpleadoBE
_EmpleadoBE.CodEmpleado = RTrim(txtCodigo.Text)
_EmpleadoBE.ApePaterno = RTrim(txtApePaterno.Text)
_EmpleadoBE.ApeMaterno = RTrim(txtApeMaterno.Text)
_EmpleadoBE.Nombres = RTrim(txtNombres.Text)
_EmpleadoBE.FecNacimiento = dtpFecNac.Value.Date
'001:MASCULINO - 002: FEMENINO
_EmpleadoBE.CodSexo = IIf(cboSexo.SelectedIndex = 0, "001", "002")
'Capturando la Imagen'
Dim data() As Byte
If Not Me.pbFoto.Image Is Nothing Then
Dim ms As New MemoryStream
Me.pbFoto.Image.Save(ms, Imaging.ImageFormat.Jpeg)
data = ms.ToArray
Else
data = Nothing
End If
_EmpleadoBE.Foto = data
''''''''''''''''''''''''''
'001:ACTIVO - 002: ANULADO
_EmpleadoBE.CodEstado = IIf(cboEstado.SelectedIndex = 0, "001", "002")
_EmpleadoBE.Terminal = System.Environment.MachineName
_EmpleadoBE.UsuarioRegi = "ADM"
_EmpleadoBE.UsuarioModi = "ADM"
If _EmpleadoBL.GrabarEmpleado(_EmpleadoBE, flagAccion) Then
MsgBox("Datos Grabados Correctamente", MsgBoxStyle.Information)
flagAccion = ""
NueModEli()
CancelarGrabar()
Deshabilitar()
Call ListarEmpleados()
Else
MsgBox("Error al Grabar", MsgBoxStyle.Critical)
End If
End Sub
'********** EL EVENTO CLICK DEL BOTON CANCELAR***************'
Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
CancelarGrabar()
Limpiar()
Deshabilitar()
End Sub
'********** EL EVENTO CLICK DEL BOTON SALIR********************'
Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
Me.Close()
End Sub
'********** EL EVENTO TEXCHANGED DEL TEXTFIELD txtBusqueda ********************'
Private Sub txtBusqueda_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBusqueda.TextChanged
Call ListarEmpleados()
End Sub
'********** EL EVENTO CELLCLICK DE LA GRILLA dgvEmpleados ********************'
Private Sub dgvEmpleados_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvEmpleados.CellClick
RecuperarDatosGrilla()
End Sub
End Class
- Doble Click en "My Project"(que está dentro del proyecto "Presentacion") y seleccionar la opción "Application" (está en la parte laterial izquierda), luego seleccionar a "FrmTutorial" como formulario de inicio (Ver figura)
- La Estructura de la Solucion "Tutorial_NCapas" debe quedar con la estructura que a continuación se muestra en la figura:
FINALMENTE:
- Click derecho en la solución "Tutorial_NCapas" y seleccionar lo opcion "Establecer Proyecto de Inicio", luego seleccionar como proyecto de inicio a "Presentacion" (Ver figura).
Video Demostrativo de la Aplicación











