semana 16.1
Post on 10-Feb-2018
227 Views
Preview:
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!
top related