semana 16.1

Upload: pierre-espinal

Post on 10-Feb-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 Semana 16.1

    1/12

    Trainer: Ing. Mark Castillo

    1

    Carrera Profesional deComputacin e Informtica

    LENGUAJE DE PROGRAMACIN IIPeriodoLectivo

    2012-I

    SEMANA 16 Semestre IDocente: Ing. Marko Castillo Pea

    GUA DE LABORATORIO N 03

    OBJETIVOS:

    Crear aplicaciones para actualizar y/o mantenimiento de tablas, realizando la misma sin elasistente o aadiendo objetos, todo con cdigo para evitar las propiedades de enlace y trabajar enun AMBIENTE DESCONECTADO.

    1. ENTORNO INTEGRADO DE DESARROLLO Proceda a ingresar Visual Studio .NET y realice lo siguiente:

    2. CREACION DE FORMULARIO DE Mantenimiento de Empleados (frmActualizarEmpleado.vb)2.1. Agregue un nuevo formulario a su proyecto y gurdelo con el nombre de frmActualizarEmpleado.vb2.2. Proceda a agregar los siguientes objetos segn se observa a continuacin:

    2.3. Agregando los botones del ToolStrip Barra de Herramientas para actualizacin y Desplazamiento Para ello deber agregar un componente ToolStrip. Luego haga clic derecho sobre el y seleccione Editar Elementos Nos visualizar la Ventana siguiente, en ella debers agregar los elementos miembros del ToolStrip, para ello solo debers hacer clic en el botn Agregar cuantas veces sea necesarios segn

    la imagen.

  • 7/22/2019 Semana 16.1

    2/12

    Trainer: Ing. Mark Castillo

    2

    Una vez que haz agregado todos los miembros del ToolStrip, procede a establecer las propiedadesName, ToolTiptext e Image para c/u de los elementos.

    El Name a establecer a cada elemento es el que se aprecia en la imagen2.4. Ahora procederemos a establecer las propiedades de los dems objetos2.5. Establecer el tamao adecuado a cada control objeto que esta dentro del formulario.2.6. A todas las etiquetas establecer la propiedad Autosize = True

    3. CREAR PROCEDIMIENTOS ALMACENADOS (ABRIR EL Administrador de SQL Server)Ingresar al Analizador de Consultas y Crear los siguientes Procedimientos Almacenados de mantenimientode Datos:

    Procedimiento para Insertar Registros:

    CreateProcedureAgregarEmpleado(@CodEmpchar(5),

    @NomEmpVarchar(20),@ApeEmpVarchar(30),@DirEmpVarchar(40),@SexEmpbit,@TelEmpVarchar(8),@CodCarChar(4),@Activo bit,@ObsEmpVarchar(80),@FotEmpVarchar(50))As

    BeginTransactionInsert Empleados(CodEmp,NomEmp,ApeEmp,DirEmp,SexEmp,TelEmp,CodCar,Activo,ObsEmp,FotEmp)Values(@CodEmp,@NomEmp,@ApeEmp,@DirEmp,@SexEmp,@TelEmp,@CodCar,@Activo,@ObsEmp,@FotEmp)If@@ERROR=0

    CommitTransactionElse

    RollbackTransaction

    Para agregarlo a la BD: Sombree el Procedimiento y pulse F5, o clic en el botn ejecutar.

    Procedimiento para Desactivar un Empleado:

    CREATEPROCEDUREDesactivaEmpleado(@CodEmpvarchar(4),@Activobit)ASBEGINTRANSACTIONUPDATEEMPLEADOSSETCodEmp=@CodEmp,

    Activo=@ActivoWHERECodEmp=@CodEmpIF@@ERROR=0

  • 7/22/2019 Semana 16.1

    3/12

    Trainer: Ing. Mark Castillo

    3

    COMMITTRANSACTIONELSE

    ROLLBACKTRANSACTION

    Procedimiento para Eliminar Registros: (Slo de referencia)

    CREATEPROCEDUREEliminarEmpleado@CodEmpChar(4)ASBEGINTRANSACTIONDELETEFROMEMPLEADOSWHERECodEmp=@CodEmpIF@@ERROR=0

    COMMITTRANSACTIONELSE

    ROLLBACKTRANSACTION

    Procedimiento para Modificar Registros:

    CREATEPROCEDUREModificarEmpleado(@CodEmpchar(5),@NomEmpVarchar(20),@ApeEmpVarchar(30),@DirEmpVarchar(40),@SexEmpbit,@TelEmpVarchar(8),@CodCarChar(4),@Activo bit,@ObsEmpVarchar(80),@FotEmpVarchar(50))ASBEGINTRANSACTIONUPDATEEMPLEADOSSETCodEmp=@CodEmp,NomEmp=@NomEmp,ApeEmp=@ApeEmp,DirEmp=@DirEmp,SexEmp=@SexEmp,TelEmp=@TelEmp,CodCar=@CodCar,Activo=@Activo,ObsEmp=@ObsEmp,FotEmp=@FotEmpWHEREcodemp=@codempIF@@ERROR=0

    COMMITTRANSACTIONELSE

    ROLLBACKTRANSACTION

  • 7/22/2019 Semana 16.1

    4/12

    Trainer: Ing. Mark Castillo

    4

    4. CODIFICACIN DEL FORMULARIO DE ACTUALIZACIN DE EMPLEADOSNo olvide que para este formulario solo se trabaja con Procedimientos Almacenados para realizar elmantenimiento de los registros de Empleados.

    AHORA PROCEDEREMOS A ESCRIBIR EL CODIGO CORRESPONDIENTE:

    Agregar la Biblioteca de Clases SQLClient: Sirve para poder utilizar los objetos SQLconnection, SqlCommand,

    SqlDataAdapter

    Option Compare TextImports System.DataImports System.Data.SqlClientPublicClassForm1

    Dim Cn AsNewSqlConnection("Server=.\SqlExpress;Database=EmpresaMclobely;Integrated Security=True")Dim DaCargo AsSqlDataAdapterDim DaEmpleados AsSqlDataAdapterDim DsEmpleados AsNewDataSetDim DrEmpleados AsDataRow

    Dim Posicion, Flag, Resultado AsInt32

    PrivateSub CargarDatos()Dim Valor AsBooleanTry

    DrEmpleados = DsEmpleados.Tables("EMPLEADOS").Rows(Posicion)TxtCodigo.Text = DrEmpleados("CodEmp")TxtNombre.Text = DrEmpleados("NomEmp")TxtApellidos.Text = DrEmpleados("ApeEmp")TxtDireccion.Text = DrEmpleados("DirEmp")Valor = DrEmpleados("SexEmp")

    IfValor ThenRboMasculino.Checked = TrueRboFemenino.Checked = False

    ElseRboMasculino.Checked = FalseRboFemenino.Checked = True

    EndIfTxtTelefono.Text = DrEmpleados("telemp")CboCargo.SelectedValue = DrEmpleados("codcar")TxtObservacion.Text = DrEmpleados("ObsEmp").ToStringIfDrEmpleados("FotEmp").ToString = NothingThen

    PictureBox1.Image = NothingLblRutaFoto.Text = Nothing

    ElseLblRutaFoto.Text = DrEmpleados("FotEmp")

    EndIfIfDrEmpleados("activo") = TrueThen

    LblActivo.Text = "Activo" : LblActivo.ForeColor = Color.BlueEndIfIfDrEmpleados("activo") = FalseThen

    LblActivo.Text = "Inactivo" : LblActivo.ForeColor = Color.RedEndIf

    TslRegistro.Text = "Registro: " & Posicion + 1 & " de " & DsEmpleados.Tables("EMPLEADOS").Rows.CountActualizaFoto()Catch exc AsException

  • 7/22/2019 Semana 16.1

    5/12

    Trainer: Ing. Mark Castillo

    5

    MessageBox.Show(exc.Message)EndTry

    EndSub

    PrivateSub ActualizaFoto()Dim mifoto AsBitmap

    IfDrEmpleados("FotEmp").ToString = NothingThenPictureBox1.Image = Nothing

    Elsemifoto = NewBitmap(Me.LblRutaFoto.Text)PictureBox1.Image = CType(mifoto, Image)

    EndIfEndSub

    PrivateSub DesconectarCombos()CboCargo.DataBindings.Clear()

    EndSub

    PrivateSub LlenarCombos(ByVal cargo AsBoolean)Cn.Open()DesconectarCombos()DaCargo = NewSqlDataAdapter("SELECT * FROM cargo", Cn)Ifcargo = FalseThen

    DaCargo.Fill(DsEmpleados, "cargo")Else

    DsEmpleados.Tables("cargo").Clear()DaCargo.Fill(DsEmpleados, "cargo")cargo = False

    EndIf

    Cn.Close()CboCargo.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", DsEmpleados,

    "Empleados.CodCar"))CboCargo.DataSource = Me.DsEmpleados.Tables("Cargo")CboCargo.DisplayMember = "NomCar"CboCargo.ValueMember = "CodCar"CboCargo.DropDownStyle = ComboBoxStyle.DropDownList' si es que se ha agregado un nuevo cargo, lo selecionamosIfcargo = FalseThen CboCargo.SelectedIndex = CboCargo.Items.Count - 1

    EndSub

    PrivateSub HabilitarControles(ByVal est AsBoolean)Dim Ctrl AsControlForEach Ctrl InMe.Controls

    IfTypeOfCtrl IsTextBoxThen Ctrl.Enabled = estNextTxtCodigo.ReadOnly = TrueCboCargo.Enabled = estgrbSexo.Enabled = est

    EndSub

    PrivateSub HabilitarBotones(ByVal est AsBoolean)

    Dim oitem As Windows.Forms.ToolStripItemForEach oitem In ToolStrip1.ItemsIfTypeOfoitem IsToolStripButtonThen

  • 7/22/2019 Semana 16.1

    6/12

    Trainer: Ing. Mark Castillo

    6

    oitem.Enabled = estEndIf

    NexttsbGuardar.Enabled = Not esttsbCancelar.Enabled = Not estbtnAgregarFoto.Visible = Not est

    btnNuevoCargo.Visible = Not estEndSub

    PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.LoadTry

    Cn.Open()DaEmpleados = NewSqlDataAdapter("SELECT * FROM EMPLEADOS WHERE activo=1", Cn)DaEmpleados.Fill(DsEmpleados, "EMPLEADOS")Cn.Close()LlenarCombos(False)

    Posicion = (DsEmpleados.Tables("EMPLEADOS").Rows.Count - 1)CargarDatos()LblRutaFoto.Visible = FalseHabilitarControles(False)HabilitarBotones(True)'Estableciendo etiquetas a las cajasTxtCodigo.Tag = "Cdigo" : TxtNombre.Tag = "Nombres"'TxtApellidos.Tag = "Apellidos" : TxtDireccion.Tag = "direccin"'TxtTelefono.Tag = "Telfono" : TxtObservacion.Tag = "Observacion"

    Catch ex AsExceptionMsgBox(ex.Message)

    EndTry

    EndSub

    PublicSub LimpiarTextBox(ByVal ofrm AsForm)ForEach oControl AsControlIn ofrm.Controls

    IfTypeOfoControl IsTextBoxThenoControl.Text = ""

    EndIfNext

    EndSub

    PrivateSub LimpiarControles()LimpiarTextBox(Me)PictureBox1.Image = Nothing

    EndSub

    PrivateSub GeneraCodigo()Dim codi AsStringDim cmd AsNewSqlCommand("select max(codemp) from empleados", Cn)Cn.Open()codi = cmd.ExecuteScalar

    Cn.Close()Me.TxtCodigo.Text = Format(Val(codi) + 1, "0000")EndSub

  • 7/22/2019 Semana 16.1

    7/12

    Trainer: Ing. Mark Castillo

    7

    PrivateSub ToolStrip1_ItemClicked(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked

    Select e.ClickedItem.Name' ActualizacinCase"tsbnuevo"' Botn Nuevo

    Nuevo()Case"tsbguardar"' Botn Guardar

    Guardar()Case"tsbeditar"' Botn Editar

    Editar()Case"tsbcancelar"' Botn Cancelar

    Cancelar()Case"tsbeliminar"' Botn Desactivar Empleado

    Dim rpta AsMsgBoxResultrpta = MsgBox("Esta seguro que desea Desactivar Al Empleado :" & _Chr(13) & Chr(10) & TxtCodigo.Text & " - " & TxtNombre.Text & " " & _

    TxtApellidos.Text, MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Confirmacin")Ifrpta = vbYes Then DesactivaEmpleado(TxtCodigo.Text, 0)

    Case"tsbsalir"' Botn SalirMe.Close()' Desplazamiento

    Case"tsbprimero"' Ir a al PrimeroDesplazar(1)

    Case"tsbanterior"' Ir al AnteriorDesplazar(2)

    Case"tsbsiguiente"' Ir al SiguienteDesplazar(3)

    Case"tsbultimo"' Ir al ltimoDesplazar(4)

    EndSelectEndSub

    Function verificavacios() AsBooleanDim objetos AsObjectForEach objetos InMe.Controls

    IfTypeOfobjetos IsTextBoxThenIfobjetos.name "txtTelefono"And objetos.name "txtObservacion"And

    objetos.TextLength = 0 ThenMsgBox("Debe ingresar: " & objetos.tag)verificavacios = TrueExit Function

    EndIfEndIf

    NextIfCboCargo.SelectedIndex < 0 Then

    MsgBox("Debe seleccionar un cargo")verificavacios = True

    EndIf

    EndFunction

  • 7/22/2019 Semana 16.1

    8/12

    Trainer: Ing. Mark Castillo

    8

    PrivateSub Desplazar(ByVal op AsInteger)SelectCase op

    Case 1Posicion = 0CargarDatos()

    Case 2

    IfPosicion = 0 ThenMessageBox.Show("Primer Registro", "", 0, MessageBoxIcon.Information)

    ElsePosicion -= 1CargarDatos()

    EndIfCase 3

    IfPosicion = (DsEmpleados.Tables("EMPLEADOS").Rows.Count - 1) ThenMessageBox.Show("ltimo Registro", "", 0, MessageBoxIcon.Information)

    ElsePosicion += 1

    CargarDatos()EndIf

    Case 4Posicion = (DsEmpleados.Tables("EMPLEADOS").Rows.Count - 1)CargarDatos()

    EndSelectEndSub

    PrivateSub AgregaCargo(ByVal codi AsString, ByVal nombre AsString)'Agregando el nuevo registro a la tabla cargo

    Dim objcomando AsNewSqlCommand("INSERT INTO Cargo (codcar,NomCar)VALUES(@codcar,@NomCar)", Cn)

    Try'Parmetrosobjcomando.Parameters.Add(NewSqlParameter("@codcar", SqlDbType.VarChar))objcomando.Parameters("@codcar").Value = codiobjcomando.Parameters.Add(NewSqlParameter("@NomCar", SqlDbType.VarChar))objcomando.Parameters("@NomCar").Value = nombreCn.Open()objcomando.ExecuteNonQuery()Cn.Close()

    LlenarCombos(True)Catch ex AsExceptionMsgBox(ex.Message)

    EndTry

    EndSub

    PrivateSub Editar()flag = 2HabilitarControles(True)HabilitarBotones(False)

    TxtNombre.Focus()EndSub

  • 7/22/2019 Semana 16.1

    9/12

    Trainer: Ing. Mark Castillo

    9

    PrivateSub Actualizar()'Para actualizar el DataSetDsEmpleados.Clear()DaEmpleados.Fill(DsEmpleados, "EMPLEADOS")

    EndSub

    PrivateSub Nuevo()flag = 1lblRutaFoto.Text = NothingHabilitarControles(True)HabilitarBotones(False)LimpiarControles()GeneraCodigo()TxtNombre.Focus()

    EndSub

    PrivateSub Cancelar()

    Cn.Open()DsEmpleados.RejectChanges()Cn.Close()HabilitarControles(False)HabilitarBotones(True)Desplazar(4)

    EndSub

    PrivateSub Guardar()Ifverificavacios() = TrueThenExit SubDim objComando AsNewSqlCommand

    Dim oper AsString, valor, activo AsBooleanobjComando.Connection = CnobjComando.CommandType = CommandType.StoredProcedureIfFlag = 1 Then'Agregar

    objComando.CommandText = "AgregarEmpleado"oper = " insertados : "

    Else' EditarobjComando.CommandText = "modificarEmpleado"oper = " modificados : "

    EndIfTry

    'Agregando ParametrosobjComando.Parameters.Add(NewSqlParameter("@codemp", SqlDbType.VarChar))objComando.Parameters.Add(NewSqlParameter("@nomemp", SqlDbType.VarChar))objComando.Parameters.Add(NewSqlParameter("@apeemp", SqlDbType.VarChar))objComando.Parameters.Add(NewSqlParameter("@diremp", SqlDbType.VarChar))objComando.Parameters.Add(NewSqlParameter("@sexemp", SqlDbType.Bit))objComando.Parameters.Add(NewSqlParameter("@telemp", SqlDbType.VarChar))objComando.Parameters.Add(NewSqlParameter("@codcar", SqlDbType.VarChar))objComando.Parameters.Add(NewSqlParameter("@activo", SqlDbType.Bit))objComando.Parameters.Add(NewSqlParameter("@obsemp", SqlDbType.VarChar))objComando.Parameters.Add(NewSqlParameter("@fotemp", SqlDbType.VarChar))

    'asignando valores a parametrosIfRboMasculino.Checked = TrueThenvalor = True

  • 7/22/2019 Semana 16.1

    10/12

    Trainer: Ing. Mark Castillo

    10

    Elsevalor = False

    EndIfactivo = True' Todos los empleados nuevos son activos, activar un empleado?objComando.Parameters("@codemp").Value = TxtCodigo.TextobjComando.Parameters("@nomemp").Value = TxtNombre.Text

    objComando.Parameters("@apeemp").Value = TxtApellidos.TextobjComando.Parameters("@diremp").Value = TxtDireccion.TextobjComando.Parameters("@sexemp").Value = valorobjComando.Parameters("@telemp").Value = TxtTelefono.TextobjComando.Parameters("@codcar").Value = CboCargo.SelectedValueobjComando.Parameters("@activo").Value = activoobjComando.Parameters("@obsemp").Value = TxtObservacion.TextobjComando.Parameters("@fotemp").Value = LblRutaFoto.TextCn.Open()Resultado = objComando.ExecuteNonQueryActualizar()

    Cn.Close()Posicion = (DsEmpleados.Tables("EMPLEADOS").Rows.Count - 1)MessageBox.Show("Registros " & oper & Resultado, "", 0,MessageBoxIcon.Information)

    Catch exc AsExceptionMessageBox.Show(exc.Message)

    EndTryllenarcombos(False)Desplazar(4)HabilitarControles(False)HabilitarBotones(True)

    EndSub

    PrivateSub DesactivaEmpleado(ByVal codi AsString, ByVal estado AsBoolean)Dim objComando AsNewSqlCommandobjComando.Connection = CnobjComando.CommandType = CommandType.StoredProcedureobjComando.CommandText = "DesactivaEmpleado"Try

    'Agregando ParametrosobjComando.Parameters.Add(NewSqlParameter("@codemp", SqlDbType.VarChar))

    objComando.Parameters.Add(NewSqlParameter("@activo", SqlDbType.Bit))'asignando valores a parametrosobjComando.Parameters("@codemp").Value = codiobjComando.Parameters("@activo").Value = estadoCn.Open()resultado = objComando.ExecuteNonQueryActualizar()Cn.Close()MessageBox.Show(resultado & " Empleado Desactivado", "", 0,MessageBoxIcon.Information)Desplazar(1)

    Catch exc AsExceptionMessageBox.Show(exc.Message)EndTry

  • 7/22/2019 Semana 16.1

    11/12

    Trainer: Ing. Mark Castillo

    11

    llenarcombos(False)HabilitarControles(False)HabilitarBotones(True)

    EndSub

    PrivateSub BtnAgregarFoto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    BtnAgregarFoto.ClickDim mifoto AsBitmapDim curfilename AsString = ""Dim opendlg AsOpenFileDialog = NewOpenFileDialogopendlg.Filter = "All Bitmapfiles|*.*"Dim filter AsString = opendlg.Filteropendlg.Title = "open a bitmap file"Ifopendlg.ShowDialog() = Windows.Forms.DialogResult.OK Then

    curfilename = opendlg.FileNameLblRutaFoto.Text = curfilenamemifoto = NewBitmap(curfilename)

    PictureBox1.Image = CType(mifoto, Image)Else

    Exit SubEndIf

    EndSub

    PrivateSub BtnNuevoCargo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesBtnNuevoCargo.Click

    'Generando cdigo para el nuevo cargoDim codi AsString

    Dim cmd AsNewSqlCommand("select max(codcar) from cargo", Cn)Cn.Open()codi = cmd.ExecuteScalarcodi = Format(Val(codi) + 1, "0000")Cn.Close()' Solicitando el nombre del nuevo cargoDim nombre AsStringnombre = InputBox("Ingrese Nombre de nuevo cargo:", "Agregando Nuevo Cargo")Ifnombre.Length < 4 Then

    MsgBox("Debe ingresar mnimo 4 caracteres", MsgBoxStyle.Critical, "Error")Exit Sub

    ElseDim rpta AsMsgBoxResultrpta = MsgBox("Esta seguro que desea agregar el nuevo cargo :" & _Chr(13) & Chr(10) & "codigo: " & codi & Chr(13) & Chr(10) & _"Nombre: " & nombre, MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Confirmacin")Ifrpta = vbYes Then

    AgregaCargo(codi, nombre)Else

    Exit SubEndIf

    EndIf

    EndSub

  • 7/22/2019 Semana 16.1

    12/12

    Trainer: Ing. Mark Castillo

    12

    PrivateSub TsbBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesTsbBuscar.Click

    SelectCase sender.nameCase"tsbbuscar"

    Dim strDato AsStringDim fila AsInteger

    Dim dv AsNewDataViewstrDato = InputBox("Ingrese codigo del Empleado: ", "Buscar")dv.Table = DsEmpleados.Tables("Empleados")dv.Sort = "codemp"fila = dv.Find(strDato)Iffila = -1 Then

    MessageBox.Show("Codigo del Empleado no Existe", "Cuidado")Exit Sub

    EndIfPosicion = filaCargarDatos()

    Case"tsbbuscaravanzado"MessageBox.Show("Proximamente ser implementado", "Busqueda Avanzada",MessageBoxButtons.OK, MessageBoxIcon.Information)

    EndSelectEndSub

    EndClass

    Suerte!