Usuarios e identificación de registros

Nuevamente Tony, recientemente me ayudaste mucho con una pregunta llamada "uso de tablas vinculadas" ( http://bit.ly/hPCTXm ).
Comenzaré a utilizar la seguridad por usuarios, ¿es posible utilizar esta identificación para la actualización de un campo?
Mis usuarios serían:
Abc
Def
Ghi
Jkl
¿Cómo podría hacer para que dichos usuarios se plasmaran en un campo llamado "usuario" dentro de mi tabla clientes (hago referencia a la pregunta de "uso de tablas vinculadas")?

1 respuesta

Respuesta
1
Claro tienes varias formas de hacerlo.
Por ejemplo si los usuarios tienen sesiones personalizadas de windows, puedes obtener directamente el usuario del que registra la sesión.
Si no es así puedes crear un formulario de entrada donde el usuario deba identificarse (y opcionalmente teclear una contraseña). Esto lo haces con una tabla de usuarios con campos para el nombre o login y otro para la clave (si quieres). En un módulo declaras una variable Global y guardas el valor del control con el nombre del usuario en dicha variable, el valor de esta variable se mantendrá durante toda la sesión de la BBDD, independientemente de que cierres este formulario. El usuario no se va a plasmar en la tabla clientes (de ahí lo sacarás o lo comprobarás), el usuario lo guardarás mejor en una variable como te indiqué.
Si además le pones una contraseña, lo podrás comprobar con una consulta que verifique que el usuario y la contraseña escrita se corresponden y si colocas estos como una condición puedes utilizarlo para abrir otro formulario, desbloquear un control y cualquier otra cosa que se te ocurra.
Hola, los usuarios no tienen posiciones fijas, por lo que la opción 2 sería mejor.
Cuento con un formulario de ingreso de contraseña, no sé que tan lejos estoy de poder correr el código bajo una tabla de usuarios (id, login, contraseña) comprobando como mencionas el login y contraseña.
Option Compare Database
Private Sub Comando2_Click()
On Error GoTo ERR_ACEPTAR_CLICK
Dim STDOCNAME As String
Dim STRMESAGE As String
STRMENSAGE = "CONTRASEÑA INCORRECTA" _
& "INDTRODUZCA NUEVAMENTE LA CONTRASEÑA"
If Me.CONTRASENA <> "2103" Or IsNull(Me.CONTRASENA) Then
MsgBox STRMENSAJE, vbOKOnly, "CONTRASEÑA INVALIDA"
Me.CONTRASENA = ""
Exit Sub
Else
DoCmd.Close
DoCmd.OpenForm "INICIOCAL", acNormal, , , , acWindowNormal
End If
EXIT_ACEPTAR_CLICK:
Exit Sub
ERR_ACEPTAR_CLICK:
MsgBox Err.Description
Resume EXIT_ACEPTAR_CLICK
End Sub
Si me interesa que de queden identificados los registros por el usuario que los cargó modificó etc, debido a que los registros contarán con calificaciones como registros reprogramados.
Una vez que se tenga dicha calificación (reprogramado) quisiera que sólo el usuario que cargó modifico o actualizó pueda accesar a dicho registro. Tal vez con un nuevo nivel de criterios en el form "reprogramaciones" (select * from [clientes] where ([clientes]. [calificacion])="reprogramados"
¿Cómo puedo hacer para que dicha consulta exista un and para un campo llamado login y sea igual a la identificación del usuario?
Mil gracias sds
Si tienes en el primer formulario un control login (puede ser un desplegable o una caja de texto) y otro contraseña (este si sería un cuadro de texto con formato contraseña, para que salgan los asteriscos), puedes añadir el siguiente código en un botón de validar acceso. Y el código sería algo así: (utilizando parte del tuyo)
On Error GoTo ERR_ACEPTAR_CLICK
Dim STDOCNAME As String
Dim STRMESAGE As String
Dim STRCONTRASEÑA As String
STRMENSAGE = "EL LOGIN O LA CONTRASEÑA NO SON VÁLIDOS" _
& "INDTRODUZCA NUEVAMENTE LOS DATOS"
STRCONTRASEÑA=DLookup("[contraseña]", "USUARIOS", "[login] = ' " & LOGIN & " ' ")
If Me.CONTRASENA <> STRCONTRASEÑA Or IsNull(Me.CONTRASENA) Then
    MsgBox STRMENSAJE, vbOKOnly, "LOGIN O CONTRASEÑA INVALIDOS"
    Me.LOGIN=""
    Me.CONTRASENA = ""
    Exit Sub
Else
   DoCmd.Close
   DoCmd.OpenForm "INICIOCAL", acNormal, , , , acWindowNormal
End If
End Sub
ERR_ACEPTAR_CLICK:
MsgBox Err.Description
Exit Sub
Excelente solución y te comparto el cómo hice para plasmar el login para cada registro:
Private Sub Comando2_Click()
On Error GoTo ERR_ACEPTAR_CLICK
Dim STDOCNAME As String
Dim STRMESAGE As String
Dim STRCONTRASEÑA As String
STRMENSAGE = "EL LOGIN O CONTRASEÑA SON INCORRECTOS" _
& "INDTRODUZCA NUEVAMENTE LOS DATOS"
STRCONTRASEÑA = DLookup("[CONTRASEÑA]", "USUARIOS", "[LOGIN]='" & LOGIN & "'")
If Me.CONTRASENA <> STRCONTRASEÑA Or IsNull(Me.CONTRASENA) Then
MsgBox STRMENSAJE, vbOKOnly, "LOGIN O CONTRASEÑA INVALIDOS"
Me.CONTRASENA = ""
Me.LOGIN = ""
Exit Sub
Else
Form.Visible = False
DoCmd.OpenForm "BASE DE DATOS", acNormal, , , , acWindowNormal
End If
EXIT_ACEPTAR_CLICK:
Exit Sub
ERR_ACEPTAR_CLICK:
MsgBox Err.Description
Resume EXIT_ACEPTAR_CLICK
End Sub
Aquí aplico el código que hiciste al igual de hacer un cambio al form "identificacion" visible = false con la finalidad de contar con el login de quien se identifica en la base de datos, posteriormente sólo lo ingrese a la consulta de actualización previa [Formularios]![identificacion]![LOGIN]
En verdad eres excelente, muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas