En esta parte del vídeo se creo la ventana para la administración de usuarios, el fin de esta ventana es crear usuarios para el ingreso al software. Existen varios tipos de roles de usuarios para eso al crear el usuario se selecciona el tipo, que pueden ser: Administrador, secretaria o vendedor. Estos son los tipos de roles que se manejaran pero también se creara una ventana para crear Tipos de Usuario así que se pueden crear los roles que se necesiten sin ningún limite.
En el load del formulario se carga la función de llenado de tipos de usuario y se pone el id de usuario a cero.
Private Sub Form_Load() Call LlenarTiposUsuario Id_UsuarioSeleccionado = 0 End Sub
OBSERVACIÓN
En el video cerca al minuto 8 cometí un error al llenar el combobox en su propiedad itemData en la imagen siguiente resalto el error:
El código ya corregido es el siguiente:
Sub LlenarTiposUsuario() Dim RecorsetTempo As New ADODB.Recordset Sql = "Select IdNivelUsuario, nombre_tipo From TiposUsuario Order By nombre_tipo ASC " Set RecorsetTempo = ConexionADO.Execute(Sql) If RecorsetTempo.RecordCount > 0 Then cmdTiposUsuarios.Clear i = 0 Do While Not RecorsetTempo.EOF cmdTiposUsuarios.AddItem RecorsetTempo("nombre_tipo") cmdTiposUsuarios.ItemData(i) = RecorsetTempo("IdNivelUsuario") RecorsetTempo.MoveNext i = i + 1 Loop cmdTiposUsuarios.ListIndex = 0 End If End Sub
Observación se puede usar la forma anterior para asignarle un valor a itemData o puede usar la siguiente forma que es mas corta:
cmdTiposUsuarios.ItemData(cmdTiposUsuarios.NewIndex) = RecorsetTempo("IdNivelUsuario")
Usando cmdTiposUsuarios.NewIndex el mismo combo nos suministra el índice correspondiente.
FINAL DE LA OPSERVACIÓN
Se creo una variable a nivel de formulario que es donde se guarda el id del usuario:
Dim Id_UsuarioSeleccionado As Integer
Los procedimientos de habilitar y inhabilitar quedaron de la siguiente manera:
Sub InabilitarControles() txtUsuario.Enabled = False txtPassword.Enabled = False txtConfirmarPassw.Enabled = False txtIdentificacion.Enabled = False txtNombreApellido.Enabled = False cmdCambiarPassword.Enabled = False cmdGuardar.Enabled = False imgMostrarPassw.Enabled = False cmdCambiarPassword.Enabled = False End Sub Sub HabilitarControles() txtUsuario.Enabled = True txtPassword.Enabled = True txtConfirmarPassw.Enabled = True txtIdentificacion.Enabled = True txtNombreApellido.Enabled = True cmdCambiarPassword.Enabled = True imgMostrarPassw.Enabled = True cmdGuardar.Enabled = True cmdModificar.Enabled = False If Id_UsuarioSeleccionado = 0 Then cmdCambiarPassword.Enabled = False Else cmdCambiarPassword.Enabled = True End If End Sub
Si es un usuario nuevo Id_UsuarioSeleccionado = 0 entonces se deshabilita el botón de cambiar contraseña por que lógicamente no se le puede cambiar la contraseña a un usuario que no existe sino que apenas se esta creando.
El botón de cambio de password quedo de la siguiente manera:
Private Sub cmdCambiarPassword_Click() If txtPassword.Text = "" Then MsgBox "Debe llenar el Campo Contraseña", vbExclamation, "Error" txtPassword.SetFocus Exit Sub End If If txtConfirmarPassw.Text = "" Then MsgBox "Debe llenar el Campo Confirmar Contraseña", vbExclamation, "Error" txtConfirmarPassw.SetFocus Exit Sub End If If Len(txtPassword.Text) < 5 Then MsgBox "Las contraseña debe tener como minimo 5 carácteres", vbExclamation, "Error" txtPassword.SetFocus Exit Sub End If If txtPassword.Text <> txtConfirmarPassw.Text Then MsgBox "Las contraseña no coinciden verifique", vbExclamation, "Error" txtPassword.SetFocus Exit Sub End If Call CambiarPassword End Sub
Con el sub procedimiento de CambiarPassword:
Sub CambiarPassword() Dim Res As VbMsgBoxResult Res = MsgBox("¿Esta seguro de la contraseña?", vbYesNo, "Guardar") If Res = vbYes Then Clave = EncryptString("4mkiujn4", txtPassword.Text, 1) Sql = "UPDATE tblUsuarios as us SET us.password_us='" & Clave & "' Where us.IdUsuario = " & Id_UsuarioSeleccionado ConexionADO.Execute Sql MsgBox "Contraseña Cambiada con exito", vbInformation, "Guardar" End If End Sub
Y para guardar el usuario se tiene en cuenta si ya existo o no existe la que determina esto es la variable Id_UsuarioSeleccionado si esta en cero es un usuario nuevo sino es un usuario que se esta actualizando:
Private Sub cmdGuardar_Click() If txtUsuario.Text = "" Then MsgBox "Debe llenar el Campo Usuario", vbExclamation, "Error" txtUsuario.SetFocus Exit Sub End If If txtIdentificacion.Text = "" Then MsgBox "Debe llenar el Campo Identificación", vbExclamation, "Error" txtIdentificacion.SetFocus Exit Sub End If If txtNombreApellido.Text = "" Then MsgBox "Debe llenar el Campo Nombres y Apellidos", vbExclamation, "Error" txtNombreApellido.SetFocus Exit Sub End If If Id_UsuarioSeleccionado = 0 Then 'Si el usuario es nuevo guarda la contraseña If txtPassword.Text = "" Then MsgBox "Debe llenar el Campo Contraseña", vbExclamation, "Error" txtPassword.SetFocus Exit Sub End If If txtConfirmarPassw.Text = "" Then MsgBox "Debe llenar el Campo Confirmar Contraseña", vbExclamation, "Error" txtConfirmarPassw.SetFocus Exit Sub End If If Len(txtPassword.Text) < 5 Then MsgBox "Las contraseña debe tener como minimo 5 carácteres", vbExclamation, "Error" txtPassword.SetFocus Exit Sub End If If txtPassword.Text <> txtConfirmarPassw.Text Then MsgBox "Las contraseña no coinciden verifique", vbExclamation, "Error" txtPassword.SetFocus Exit Sub End If End If Call GuardarUsuario End Sub
Sub GuardarUsuario() Dim Res As VbMsgBoxResult Dim Password As String IdNivelUsuario = cmdTiposUsuarios.ItemData(cmdTiposUsuarios.ListIndex) If Id_UsuarioSeleccionado = 0 Then 'Si el usuario es nuevo guarda la contraseña UltimoId = UltimoIdUsuario("tblUsuarios", "IdUsuario") Password = EncryptString("4mkiujn4", txtPassword.Text, 1) Sql = "Insert Into tblusuarios (IdUsuario,usuario,password_us,nombres_apellidos,identificacion,IdNivelUsuario) " _ & "Values (" & UltimoId & ", '" & txtUsuario.Text & "','" & Password & "','" & txtNombreApellido.Text & "', '" & txtIdentificacion.Text & "', " & IdNivelUsuario & " )" Else Res = MsgBox("¿Esta seguro de Actualizar los datos de Usuario?", vbYesNo, "Guardar") If Res = vbYes Then Sql = "Update tblUsuarios Set usuario = '" & txtUsuario.Text & "', nombres_apellidos = '" & txtNombreApellido.Text & "', Identificacion = '" & txtIdentificacion.Text & "', IdNivelUsuario = " & IdNivelUsuario & " Where IdUsuario = " & Id_UsuarioSeleccionado End If End If ConexionADO.Execute Sql MsgBox "Usuario Guardado", vbInformation, "Guardar" Call LimpiarControles cmdTiposUsuarios.SetFocus End Sub
Después que se guarda un usuario se limpia el formulario:
Sub LimpiarControles() txtUsuario.Text = "" txtPassword.Text = "" txtConfirmarPassw.Text = "" txtIdentificacion.Text = "" txtNombreApellido.Text = "" End Sub
Siguiente Lección Parte 13 Creación de la Ventana de Tipos de Usuario, uso del control MSHFlexGrid