Usuario
Consultar y denegar acceso a usuario bloqueado Access

Pregunta
-
Buenas tardes.
Tengo en un programarla que ando haciendo una duda que no logro meter en camino.
Al intentar acceder el usuario 3 veces se muestra mensaje de bloqueo de usuario y en la BB.DD se cambia el check de actvico a bloqueado.
Hasta ahí bien todo.
Ahora el problema esta que al entrar de nuevo si meter mal la contraseña te hace el mismo proceso pero si la metes bien te deja entrar al programa aun estando bloqueado en la BB.DD.
Cómo tendría que hacer para poder consultar antes de abrir la aplicación si el usuario introducido está bloqueado o no independientemente de si pone bien la pass.
Si la pone bien y está bloqueado pues mensaje Bloqueado!
Gracias por la ayuda.
Todas las respuestas
-
Hola:
Como NO pones la estructura ni el nombre de la tabla donde controlas el acceso a el programa, voy a suponer que la tabla se llama usuario y el campo donde se controla se llama situacion.Private Sub btnXXX_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXXX.Click
Dim Acceso As Boolean=lF_bControlUsuarios()
If Acceso=False Then
MessageBox.Show("Acceso Denegado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End If
End SubPrivate Function lF_bControlUsuarios() As Boolean
Try
Dim Retorno As Boolean=False
Dim Situacion As Integer
Using loConexion As New OleDbConnection(TU_CADENA_DE_CONEXION)
loConexion.Open() ' abrir conexión
Dim lsQuery As String = "SELECT situacion FROM usuario WHERE cod_usuario=@CodUsuario AND password=@Password"
Using loComando As New OleDbCommand(lsQuery, loConexion)
'añadir parametros al comando
loComando.Parameters.Add(New OleDbParameter("@CodUsuario", txtCodUsuario.Text))
loComando.Parameters.Add(New OleDbParameter("@Password", lsPassword))
Situacion = Convert.ToInt32(loComando.ExecuteScalar)
End Using
If Situacion=1
Retorno=True
End If
End Using
Catch ex As Exception
MessageBox.Show(ex.Message, "lF_bControlUsuarios", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
Return Retorno
End FunctionUn saludo dsde Bilbo
Carlos -
Hola:
Como NO pones la estructura ni el nombre de la tabla donde controlas el acceso a el programa, voy a suponer que la tabla se llama usuario y el campo donde se controla se llama situacion.Private Sub btnXXX_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXXX.Click
Dim Acceso As Boolean=lF_bControlUsuarios()
If Acceso=False Then
MessageBox.Show("Acceso Denegado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End If
End SubPrivate Function lF_bControlUsuarios() As Boolean
Try
Dim Retorno As Boolean=False
Dim Situacion As Integer
Using loConexion As New OleDbConnection(TU_CADENA_DE_CONEXION)
loConexion.Open() ' abrir conexión
Dim lsQuery As String = "SELECT situacion FROM usuario WHERE cod_usuario=@CodUsuario AND password=@Password"
Using loComando As New OleDbCommand(lsQuery, loConexion)
'añadir parametros al comando
loComando.Parameters.Add(New OleDbParameter("@CodUsuario", txtCodUsuario.Text))
loComando.Parameters.Add(New OleDbParameter("@Password", lsPassword))
Situacion = Convert.ToInt32(loComando.ExecuteScalar)
End Using
If Situacion=1
Retorno=True
End If
End Using
Catch ex As Exception
MessageBox.Show(ex.Message, "lF_bControlUsuarios", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
Return Retorno
End FunctionUn saludo dsde Bilbo
CarlosPerdona, con las prisas se me olvidó dejar lo que tengo hecho para el acceso de la aplicación.
Esto es lo que tengo ahora mismo y que quisiera que verifique si está bloqueado y tenga en cuenta mayúsculas o minúsculas.
Public Sub Access_Pass() 'Conecta a la bbdd BD.ClassConecta.Conecta() Dim Cmd As OleDbCommand = New OleDbCommand("SELECT * FROM SC_Users_P WHERE [User]='" & Form_User_Pass.TB_User.Text & "' and [PssCon]='" & Form_User_Pass.TB_Pass.Text & "'", BD.ClassConecta.Cs) Dim Loginrd_i As OleDbDataReader = Cmd.ExecuteReader Dim Cmd_B As OleDbCommand = New OleDbCommand("SELECT User_Bloqueado FROM SC_Users_P", BD.ClassConecta.Cs) Dim Loginrd_B As OleDbDataReader = Cmd_B.ExecuteReader If Loginrd_i.Read() = True Then Form_User_Pass.Hide() Form_User_Pass.Dispose() Form_Principal.Show() BD.ClassConecta.Desconecta() Loginrd_i.Close() Cmd.Dispose() Else X = X + 1 If X < 3 Then MsgBox("Acceso incorrecto, revise sus datos por favor.", MsgBoxStyle.Critical) Mod_Func_Inicio.LimpiaDatos_User_pass() 'Después de 3 intentos bloquea usuario y se cierra la plataforma Else 'Muestra mensaje de bloqueo MessageBox.Show(" USUARIO BLOQUEADO" & vbNewLine & "Por favor, pongase en contacto con el administrador", "SEGCAN CONTROL", MessageBoxButtons.OK, MessageBoxIcon.Error) 'Conecta a la bbdd 'BD.ClassConecta.Conecta() 'Actualiza la bbdd bloqueando al usuario que intentó 3 veces acceso fallido Cmd = New OleDbCommand("UPDATE SC_Users_P SET User_Activo=0, User_Bloqueado=1 WHERE User=@User", BD.ClassConecta.Cs) Cmd.Parameters.AddWithValue("@User", Form_User_Pass.TB_User.Text) Cmd.ExecuteNonQuery() 'Desconecta bbdd 'BD.ClassConecta.Desconecta() Loginrd_i.Close() Cmd.Dispose() 'Pone la variable a 0 nuevamente X = 0 Mod_Func_Inicio.LimpiaDatos_User_pass() 'Al bloquear usuario cierra la plataforma End End If End If End Sub
Gracias por la respuesta, un saludo.
- Editado Aguila6 sábado, 29 de febrero de 2020 11:29
-
Hola:
> Perdona, con las prisas se me olvidó dejar lo que tengo hecho para el acceso de la aplicación <
Pero sigues sin poner las estructuras de las tablas implicadas en el proceso.
Sin esa informacion tienes que estar suponiendo cosas con lo que estas dando "palos de ciego"Un saludo desde Bilbo
Carlos -
No entiendo a que te refieres con la estructura de las tablas.
En el código que te dejé se refleja donde el usuario queda bloqueado.
User_Activo=0, User_Bloqueado=1
Y también los campos de datos de este.
SELECT * FROM SC_Users_P WHERE [User]='" & Form_User_Pass.TB_User.Text & "' and [PssCon]='" & Form_User_Pass.TB_Pass.Text
Tabla
SC_Users_P
Campos de datos
Usuario: User
Contraseña: PssCon
Activo: User_Activo
Bloqueado: User_Bloqueado
A esto te refieres?
-