Crear login para formulario access

Bueno en mi base de datos en access tengo un formulario con 2 cuadros de texto (usuario y contraseña) y necesito saber como puedo hacer algún código en visual que desde una tabla que tengo de Usuarios, la cual tiene los campos nombre y contraseña ademas de otros 5 campos que son casillas de verificación (que corresponden a los perfiles del usuario, ejemplo administrador, contable, producto, ventas y operaciones)
La idea es que yo al ingresar el nombre y la contraseña me habrá un formulario access de acuerdo al perfil que marque en la casilla de verificación que tengo que se llama
Por ejemplo ingrese
Usuario: daniel
Contraseña:1779
Una vez hecho click en el botón aceptar(que es el que genera el evento), como en la tabla de usuarios a este lo tengo con perfil de administrador, me abre el formulario de "menu de administrador"

1 respuesta

Respuesta
3
Para poder ayudarte quiero preguntarte algo primero, si tienes un tabla con los campos usuario y contraseña con 5 casillas de verficación para idetificar el tipo de usuario, ¿ya estas validando que el usuario solo puede tener de las cinco casillas de verificación solo una en verdadero y las demás en falso?.
Te pregunto esto por que la rutina debería abrir solo un formulario por usuario dependiendo de la casilla de verficación que este en verdadero (solo una), de lo contrario se abrirían varios formularios si el usuario tiene más de una casilla de verificación en verdadero.
Que tal gracias por responder a la brevedad, ahora con respecto a tu detalle que gran punto me acabas de dar, no lo había pensado, pero se supone que solo el administrador podrá acceder a esa tabla cuando tenga que ingresar nuevos usuarios por lo tanto aunque es una buena idea, el sistema que estoy haciendo va para personas sin conocimiento de access(solo el admin), por lo tanto solo se les abrirá el formulario de login y cuando ingresen supuestamente solo se abrirá el formulario que el administrador pincho en la casilla de verificación, ahora si en la tabla hay alguna posibilidad de que solo marque una y no las demás mejor para que sea más efectivo el sistema.
Ahora que me das esta idea también después que me puedas responder lo que requiero, como podría ocultar la tabla de usuarios para que no sea visible.
A todo esto estoy trabajando con access 2007 de antemano gracias
Primero voy a diseñar lo que necesitas con access 2007 las cosas cambiaron un poco, aquí solo tengo el access 2003.
Permíteme diseñar la rutina que necesitas y te la envío
Mira si trabajas con access 2003 creo que da lo mismo por que el código que necesito se hace en el editor visual, ya había consultado un código que dio otro experto pero no lo entendí bien mira de acá lo saco lo cito :
Dim Base As DataBase
Dim pass As Recordset
set Base = CurrentDB
set Pass = Base.openRecordset("select * from pass where Usuario = '" & Usuario & "' and password = '" & Contrasena & "'"
if Pass.RecordCount = 0 then
msgbox "Contraseña incorrecta"
exit sub
end if
'Fijate que da igual que la contraseña este mal, o el usuario no exista. De este modo no das pista al posible intruso.
'Si la ejecucion llega a este punto, es que el usuario y la contraseña son validos. Ahora solo queda Abrir el formulario adecuado a cada usuario.
docmd.openform pass!Formulario
DoCmd.Close acForm, "Inicio"
Este lo que hace también valida usuario y contraseña, pero en la tabla que ocupa este código tiene un campo formulario donde va guardado el formulario que abre el usuario, yo creo que de acá hay que modificar ciertos parámetros.
Saludos
Dame unos minutos voy a salir a almorzar y luego te enviare el código que necesitas, ten un poco paciencia que te ayudare
no hay problema ;)
Solo debes adaptar esta rutina a la tabla y los campos que estés utilizando para tu diseño:
La tabla que diseñe tiene esta estructura:
Tabla: Usuarios
Usuario Text 50
Contraseña Text 50
administrador      Si/No
contable               Si/No
producto               Si/No
ventas                  Si/No
operaciones         Si/No


Dentro del formulario existen 2 texbox con los nombre de txt_usuario y txt_contraseña
En el evento clic de un botón coloque este código
Dim rst As New ADODB.Recordset
Dim stDocName As String
Dim stLinkCriteria As String
If Not IsNull(Me.txt_usuario) And Not IsNull(Me.txt_contraseña) Then
    rst.Open "SELECT * FROM [Usuarios]" & _
             "WHERE [usuario] ='" & Me.txt_usuario & "' AND [contraseña] = '" & Me.txt_contraseña & "' ORDER BY [usuario]", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdText
    If rst.RecordCount > 0 Then
        If CBool(rst![administrador]) Then
            DoCmd.OpenForm "Form2", , , stLinkCriteria
        End If
        If CBool(rst![contable]) Then
            DoCmd.OpenForm "Form3", , , stLinkCriteria
        End If
        If CBool(rst![producto]) Then
            DoCmd.OpenForm "Form4", , , stLinkCriteria
        End If
        If CBool(rst![ventas]) Then
            DoCmd.OpenForm "Form5", , , stLinkCriteria
        End If
        If CBool(rst![operaciones]) Then
            DoCmd.OpenForm "Form6", , , stLinkCriteria
        End If
    Else
        MsgBox "Usuario y contraseña invalidos", vbCritical, "Mensaje de Error"
    End If
    rst.Close
    Set rst = Nothing
Else
    MsgBox "Debe colocar el usuario y la contraseña", vbCritical, "Mensaje de Error"
End If


Aquí debes cambiar la Tabla "Usuarios" por el nombre de tabla que utilices y los campos "usuario" y "contraseña" por los campos que tu definiste respetivamente.

En la rutina deberás cambiar los campos (administrador, contable, producto, ventas y operaciones) por los que tengas definidos en tu tabla.

Observa que de la tabla Usuarios se seleccionan todos los registros y que los texbox que se utilizan dentro del string están entre comillas simples ( ' ) ya que son del tipo de datos Text
La rutina valida si el usuario y contraseña existen en la tabla: Usuarios y abre un formulario dependiendo del campo que esta en Si o Verdadero ejecuta el comando Docmd. OpenForm al formulario respectivo.
Debes tener Form2, Form3, Form4, Form5 y Form6 que correponden con los campos tipo Si/No llamados (administrador, contable, producto, ventas y operaciones)
Debes tener previamente una pantalla donde al crear el usuario y su contraseña, se cargue en uno solo de los campos (administrador, contable, producto, ventas y operaciones) Si o Verdadero, los demás campos deben quedar en No o Falso; este diseño debes tenerlo previamente para que esta rutina tenga sentido.
Vale de verdad te pasaste para que te des el tiempo de darme casi la respuesta completa, en verdad la tabla y todo los datos que pusiste en el código son los mismo, como te dije solo me faltaba el código, bueno agradezco realmente tu intención de ayudarme y espero seguir aprendiendo saludos y de antemano muchísimas gracias ;).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas