En esta lección ya entramos al manejo de base datos y aprenderán como se insertan datos en una base de datos MS Access.
Iniciando
En un modulo de Visual Basic se van a crear los sub procedimientos necesarios para hacer la consulta a la base de datos y validar el usuario. Se va a usar una función para encriptar la contraseña de la base de datos, de esta manera en caso de que alguien entre a nuestra base de datos no pueda saber cual es la contraseña. Lo que hace este software muy seguro.
Se creo un registro en la tabla Usuarios que son los datos del administrador.
En Visual Basic, se tomo una función de la página recursosvisualbasic.com.ar para encripdar datos, esta se uso para encriptar la contraseña de los usuarios.
PublicFunctionEncryptString(UserKey AsString, Text AsString, Action AsSingle)AsString
Dim UserKeyX AsString
Dim Temp AsInteger
Dim Times AsInteger
Dim i AsInteger
Dim j AsInteger
Dim n AsInteger
Dim rtn AsString
'//Get UserKey characters
n = Len(UserKey)
ReDimUserKeyASCIIS(1To n)
For i = 1To n
UserKeyASCIIS(i) = Asc(Mid$(UserKey, i, 1))
Next
'//Get Text characters
ReDimTextASCIIS(Len(Text))AsInteger
For i = 1ToLen(Text)
TextASCIIS(i) = Asc(Mid$(Text, i, 1))
Next
'//Encryption/Decryption
If Action = ENCRYPT Then
For i = 1ToLen(Text)
j = IIf(j + 1>= n, 1, j + 1)
Temp = TextASCIIS(i) + UserKeyASCIIS(j)
If Temp >255Then
Temp = Temp - 255
EndIf
rtn = rtn + Chr$(Temp)
Next
ElseIf Action = DECRYPT Then
For i = 1ToLen(Text)
j = IIf(j + 1>= n, 1, j + 1)
Temp = TextASCIIS(i) - UserKeyASCIIS(j)
If Temp <0Then
Temp = Temp + 255
EndIf
rtn = rtn + Chr$(Temp)
Next
EndIf
'//Return
EncryptString = rtn
EndFunction
'---------------------------------------------------------------------
' EncryptString
' Modificado por Harvey T.
'---------------------------------------------------------------------
'El parámetro UserKey es la clave.
'El parámetro Text es el texto a encriptar o desencriptar.
'El parámetro Action indica QUE hacer, ..es decir Encriptar o desencriptar. ( El valor ENCRYPT es para encriptar y el valor DECRYPT para desencriptar)
'url: http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/269-encriptar-desencriptar.htm
'//For Action parameter in EncryptString
Const ENCRYPT = 1
Const DECRYPT = 2
Public Function EncryptString(UserKey As String, Text As String, Action As Single) As String
Dim UserKeyX As String
Dim Temp As Integer
Dim Times As Integer
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim rtn As String
'//Get UserKey characters
n = Len(UserKey)
ReDim UserKeyASCIIS(1 To n)
For i = 1 To n
UserKeyASCIIS(i) = Asc(Mid$(UserKey, i, 1))
Next
'//Get Text characters
ReDim TextASCIIS(Len(Text)) As Integer
For i = 1 To Len(Text)
TextASCIIS(i) = Asc(Mid$(Text, i, 1))
Next
'//Encryption/Decryption
If Action = ENCRYPT Then
For i = 1 To Len(Text)
j = IIf(j + 1 >= n, 1, j + 1)
Temp = TextASCIIS(i) + UserKeyASCIIS(j)
If Temp > 255 Then
Temp = Temp - 255
End If
rtn = rtn + Chr$(Temp)
Next
ElseIf Action = DECRYPT Then
For i = 1 To Len(Text)
j = IIf(j + 1 >= n, 1, j + 1)
Temp = TextASCIIS(i) - UserKeyASCIIS(j)
If Temp < 0 Then
Temp = Temp + 255
End If
rtn = rtn + Chr$(Temp)
Next
End If
'//Return
EncryptString = rtn
End Function
'---------------------------------------------------------------------
' EncryptString
' Modificado por Harvey T.
'---------------------------------------------------------------------
'El parámetro UserKey es la clave.
'El parámetro Text es el texto a encriptar o desencriptar.
'El parámetro Action indica QUE hacer, ..es decir Encriptar o desencriptar. ( El valor ENCRYPT es para encriptar y el valor DECRYPT para desencriptar)
'url: http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/269-encriptar-desencriptar.htm
'//For Action parameter in EncryptString
Const ENCRYPT = 1
Const DECRYPT = 2
Public Function EncryptString(UserKey As String, Text As String, Action As Single) As String
Dim UserKeyX As String
Dim Temp As Integer
Dim Times As Integer
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim rtn As String
'//Get UserKey characters
n = Len(UserKey)
ReDim UserKeyASCIIS(1 To n)
For i = 1 To n
UserKeyASCIIS(i) = Asc(Mid$(UserKey, i, 1))
Next
'//Get Text characters
ReDim TextASCIIS(Len(Text)) As Integer
For i = 1 To Len(Text)
TextASCIIS(i) = Asc(Mid$(Text, i, 1))
Next
'//Encryption/Decryption
If Action = ENCRYPT Then
For i = 1 To Len(Text)
j = IIf(j + 1 >= n, 1, j + 1)
Temp = TextASCIIS(i) + UserKeyASCIIS(j)
If Temp > 255 Then
Temp = Temp - 255
End If
rtn = rtn + Chr$(Temp)
Next
ElseIf Action = DECRYPT Then
For i = 1 To Len(Text)
j = IIf(j + 1 >= n, 1, j + 1)
Temp = TextASCIIS(i) - UserKeyASCIIS(j)
If Temp < 0 Then
Temp = Temp + 255
End If
rtn = rtn + Chr$(Temp)
Next
End If
'//Return
EncryptString = rtn
End Function
Luego en el modulo de mod_consultas se creo una función de validar Usuarios:
Nota: Visual Basic y MS Access tiene problemas para aceptar el campo password en la base de datos por lo cual debe cambiarlo a otro en mi caso lo llamare password_us debe hacer este cambio en la base de datos.
MsgBox "Usuario no válido", vbCritical, "Erro de Usuario"
EndIf
EndSub
Function Validar_Usuario(usuario As String, password As String) As Boolean
Dim RecorsetTemp As New ADODB.Recordset
Dim Sql As String
Dim Clave As String
Clave = EncryptString("4mkiujn4", password, 1)
Sql = "Select * from tblUsuarios where usuario = '" & usuario & "' and password_us = '" & Clave & "'"
RecorsetTemp.Open Sql, ConexionADO
If RecorsetTemp.RecordCount > 0 Then
Glo_NombreUsuario = RecorsetTemp("nombres_apellidos")
Glo_IdUsuario = RecorsetTemp("IdUsuario")
Glo_IdentifUsuario = RecorsetTemp("identificacion")
Validar_Usuario = True
Else
Validar_Usuario = False
End If
End Function
En el formulario de frmLogin en el evento clic del boton ingresar se coloco el siguiente código:
Private Sub cmdIngresar_Click()
If Validar_Usuario(txtUsuario.Text, txtPassword.Text) = True Then
frmPrincipal.Show
Unload Me
Else
MsgBox "Usuario no válido", vbCritical, "Erro de Usuario"
End If
End Sub
Function Validar_Usuario(usuario As String, password As String) As Boolean
Dim RecorsetTemp As New ADODB.Recordset
Dim Sql As String
Dim Clave As String
Clave = EncryptString("4mkiujn4", password, 1)
Sql = "Select * from tblUsuarios where usuario = '" & usuario & "' and password_us = '" & Clave & "'"
RecorsetTemp.Open Sql, ConexionADO
If RecorsetTemp.RecordCount > 0 Then
Glo_NombreUsuario = RecorsetTemp("nombres_apellidos")
Glo_IdUsuario = RecorsetTemp("IdUsuario")
Glo_IdentifUsuario = RecorsetTemp("identificacion")
Validar_Usuario = True
Else
Validar_Usuario = False
End If
End Function
En el formulario de frmLogin en el evento clic del boton ingresar se coloco el siguiente código:
Private Sub cmdIngresar_Click()
If Validar_Usuario(txtUsuario.Text, txtPassword.Text) = True Then
frmPrincipal.Show
Unload Me
Else
MsgBox "Usuario no válido", vbCritical, "Erro de Usuario"
End If
End Sub
Se creo el formulario MDI frmPrincipal que sera la ventana principal de la aplicación.