¿Cómo abrir formulario con datos según usuario logueado?

En access quiero hacer que se pueda abrir formulario ya con los datos de nombre completo y fecha, a partir del usuario que ingreso por el formulario de login.

1 respuesta

Respuesta
3

Oscar: Dependiendo si quieres abrir el "mismo" Formulario para todos los usuarios, pero con su Nombre u otra condición o bien Formularios distintos la solución variara bastante.

Si es el mismo, en la condición WHERE del DoCmd. OpenForm o en el OpenArgs la vas variando según el Usuario.

1.- Mira >> https://docs.microsoft.com/es-es/office/vba/api/access.docmd.openform 

Y vamos a suponer que el Formulario que quieres abrir se llama FEmpleados, que el cuadro de Texto donde pones el Login se llama TxtUsuario y que FEmpleados tiene un IdEmpleado numérico.

En algún lugar de tu código que puede ser al final del evento AfterUpdate de TxtUsuario, algo así como:

If Me.TxtUsuario = "jose" Then

DoCmd.OpenForm "FEmpleados",,,"IdEmpleado = 3"

ElseIf Me.TxtUsuario = "ernesto" Then

DoCmd.OpenForm "FEmpleados",,,"IdEmpleado = 1"

ElseIf .....

Else

'''''''''''''''''''''''''''

End If

Como ves son muchas suposiciones y lo que te traslado es una idea de solución de las varias que puede haber si tienes pocos usuarios o las condiciones que te expongo no son correctas.

Un saludo >> Jacinto

Gracias por la respuesta, lo que quiero hacer es lo siguiente: es una base para el control de clases de profesores, necesito que cuando un profesor termine su clase la registre para esto que al ingresar su usuario y contraseña se abra el formulario de registro de clase ya con su nombre completo y fecha insertados en el nuevo registro y llene los campos restantes y guardarlo, y así los profesores ingresen para registrar sus clases pero que ya aparezca su nombre y fecha según quien se loguee, espero me puedas ayudar.

Oscar: Para que aparezcan los datos de un usuario han de estar alguna Tabla o Consulta. Supongo que sobre esa tabla/consulta tienes un Formulario, pero solo "supongo" porque desconozco la estructura de tu BBD.

Un camino a seguir es el que te he propuesto, pero hay otros. Ignoro si es que lo tienes ese Formulario que Controles tiene y sus Orígenes de datos. En mi caso no tengo inconveniente en ayudarte y creo que otros usuarios tampoco, pero si no facilitas más datos, veo difícil que alguno acertemos con una respuesta. Un saludo >> Jacinto

este es el formulario de login

Aquí es donde quiero que abra ya con el nombre y la fecha insertadas en el nuevo registro según quien ingrese en el login.

bonton de ingreso

Oscar: Algo hemos adelantado aunque no demasiado, pero por intentarlo que no quede.

Veo que pones la Apertura del Formulario Administracion, cuando en realidad estamos tratando de Abrir otro (Registro_Clase parece). El identificador de éste Formulario, no sé si es Usuario u otro.

Te pongo tu código algo modificado, pero como ves te pongo unos puntos...

Dim IdUsuario As Integer
If Nz(DCount("*","Usuarios1","Usuario = '" & Me.TxtIdUsuario & "' AND Pass = '" & Me.TxtPass & "'"),0) > 0 Then
    IdUsuario = DLookup("[Id_Usuario]","Usuarios1","Usuario = '" & Me.TxtIdUsuario & "' AND Pass = '" & Me.TxtPass & "'")
    DoCmd.OpenForm "Registro_Clase",,,".............. = " & IdUsuario
    Forms!Registro_Clase.Form.Fecha = Date()
    DoCmd.Close acForm, "FormLogin"
Else
    '------El mensaje
End If

El campo Fecha ves que le pongo Fecha, pero es posible que tu tengas otro Nombre.

Estoy suponiendo además que el Identificador de Registro_Clase es equivalente a IdUsuario

Espero te ayude. Un saludo > Jacinto

Muchas gracias voy a hacer las modificaciones que me mencionas.

Buen día, todo va muy bien, ahora lo que necesito es que dependiendo el usuario o administrador me abra un formulario especifico, me puedes ayudar?

Oscar: Suponiendo que tienes reservado el Número 1 para el Administrador y si no es así lo cambias, el código sería algo así.

Dim IdUsuario As Integer
If Nz(DCount("*","Usuarios1","Usuario = '" & Me.TxtIdUsuario & "' AND Pass = '" & Me.TxtPass & "'"),0) > 0 Then
    IdUsuario = DLookup("[Id_Usuario]","Usuarios1","Usuario = '" & Me.TxtIdUsuario & "' AND Pass = '" & Me.TxtPass & "'")
    Ìf IdUsuario = 1 Then
    Docmd.OpenForm "NombreDelFormularioQueTuQuieras"  'Si quieres añade las condiciones
    ElseIf IdUsuario = 2 Then
    Docmd.OpenForm "NombreDeOtroFormulario"  'Si quieres añade las condiciones
    ElseIf IdUsuario > 2
        DoCmd.OpenForm "Registro_Clase",,,".............. = " & IdUsuario  'Aqui el otro Formulario que quieras
        Forms!Registro_Clase.Form.Fecha = Date()
    End If
Else
    '------El mensaje
End If
DoCmd. Close acForm, "FormLogin"

Un saludo >> Jacinto

Gracias ya esta trabajando bien la base, ahora me podrías apoyar con una consulta? quiero que al seleccionar el nombre de un profesor me filtre según el numero de quincena me muestre en un subformulario el detalle se la quincena de ese profesor únicamente, gracias de antemano.

te anexo una imagen del formulario.

Oscar: La esencia de las preguntas y respuestas es que lleguen al máximo numero de usuarios, que puedan tener dudas similares.

Este post es demasiado largo y el tema que comentas, se aparta bastante de la pregunta original, por lo que muy pocas van a querer leerlo hasta el final. Mi sugerencia es que generes una pregunta nueva, en la que expongas ésta nueva necesidad y sea yo mismo u otra(s) persona(s) seguro que te va a contestar. Es posible que más de una con lo cual podrás elegir la que mejor se adapte a tus necesidades. UN cordial saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas