Access - No consigo pasar el valor de un campo en un formulario a otro formulario

 
Vista:
Imágen de perfil de Alfonso

No consigo pasar el valor de un campo en un formulario a otro formulario

Publicado por Alfonso (4 intervenciones) el 06/07/2021 13:21:52
Es tan sencillo que igual me estoy complicando y no veo la solucion, se trata de pasar el valor que pongo en este login txtUsuario cuando entran en la aplicacion para que me indique que usuario esta conectado en el menu principal.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

No consigo pasar el valor de un campo en un formulario a otro formulario

Publicado por Anonimo (3316 intervenciones) el 06/07/2021 20:19:07
Suponiendo que el dato se toma en el formulario de entrada para dar permiso de acceso, lo normal es que no se suela guardar (el permiso es valido para toda la sesión (generalmente).

Para poder tener disponible el dato, lo habitual es crear una variable a nivel publico para poder acceder a ese dato cuando se precise, esto es, no se dimensiona la variable 'usuario' (o como se le llame a ese dato) en el formulario, pues al cerrar el formulario se pierde el valor, se utiliza esa misma variable dimensionada 'fuera del formulario' para que no se pierda.

Para acceder a esa variable se utiliza una función (que ha de estar en un modulo 'publico') y ....

Veamos un ejemplo simple::

Se crea un nuevo modulo (o se reutiliza uno existente de tenerlo disponible)

En la sección 'declaraciones ' se crea la variable:
1
Public txtUsuario As String


Y la función para obtenerlo en cualquier parte:
1
2
3
Public Function Da_Usuario() As String
Da_Usuario = txtUsuario
End Function


En el formulario en que se hace el logín (en el que suele haber una línea para dimensionar la variable 'txtUsuario') se le borra o se comenta la línea (ya se dispone de la variable dimensionada a nivel publico).

¿Se desea mostrar en el formulario ABC? ... en diseño, al cuadro de texto se le pone como origen de datos la función :
1
=Da_Usuario()


La alternativa ... asignársela directamente (en VBA se accede directamente a los datos declarados como públicos) o se utiliza la opción que se domine.

La ventaja de la función, es que se puede utilizar en los formularios, consultas, informes y macros desde VBA y fuera de el.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alfonso

No consigo pasar el valor de un campo en un formulario a otro formulario

Publicado por Alfonso (4 intervenciones) el 07/07/2021 11:04:02
He puesto todo exactamente como me lo dices, pero al ir al menú, sigue sin aparecerme el nombre del usuario.
Este es el codigo del evento en el boton aceptar del formulario login y luego te pongo el codigo del modulo donde creo la funcion, luego en el formulario menu en el cuadro de texto le pongo como origen de datos lo que me has dicho =Da_Usuario() pero no sale nada.:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Option Compare Database
 
Private Sub Comando1_Click()
Dim UserLevel As Integer
 
If IsNull(Me.txtUsuario) Then
        MsgBox "Por favor, escriba su Usuario", vbInformation, "Usuario requerido"
        Me.txtUsuario.SetFocus
    ElseIf IsNull(Me.txtPass) Then
        MsgBox "Por favor, ingrese su Contraseña", vbInformation, "Contraseña requerida"
        Me.txtPass.SetFocus
    Else
        If (IsNull(DLookup("[Usuario]", "Usuarios", "[Usuario] ='" & Me.txtUsuario.Value & _
        "' And Pass = '" & Me.txtPass.Value & "'"))) Then
            MsgBox "Usuario y/o Contraseña incorrectos"
        Else
            UserLevel = DLookup("Nivel_Seguridad", "Usuarios", "Usuario = '" & Me.txtUsuario.Value & "'")
 
            If UserLevel = 1 Then
                MsgBox "Bienvenido!!! " & Me.txtUsuario, , "Acceso de Administrador"
                DoCmd.Close
                DoCmd.OpenForm "MENUCRM"
 
            Else
                UsuarioActivo = Me.txtUsuario
                MsgBox "Bienvenido!!! " & Me.txtUsuario, , "Acceso de Usuario"
                DoCmd.Close
                DoCmd.OpenForm "MENUCRM"
 
            End If
    End If
End If
End Sub
--------------------------------------------
MODULO1
--------------------------------------------
1
2
3
4
5
6
Option Compare Database
Option Explicit
Public txtUsuario As String
Public Function Da_Usuario() As String
    Da_Usuario = txtUsuario
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No consigo pasar el valor de un campo en un formulario a otro formulario

Publicado por Anonimo (3316 intervenciones) el 07/07/2021 20:09:00
Hay problemas de espacialidad......

Si se crea una variable a nivel publico y tras ello en un formulario se crea una variable con el mismo nombre a nivel local, Access utilizara en el formulario 'su variable' y fuera de el la publica con el mismo nombre.

De cualquier forma, un cuadro de texto no es mas que un objeto del formulario, no es una variable y la coincidencia de nombres (al ser dos objetos diferentes Access lo permite) no los convierte en síncronos.

Public txtUsuario As String <==> Me.txtUsuario

Concretando, en parte alguna se le asigna a la variable global 'txtUsuario' un valor, sin embargo en esta línea:

UsuarioActivo = Me.txtUsuario

Si se le asigna el valor del cuadro de texto a una variable que no se utiliza (al menos en el código publicado).

Si la variable 'UsuarioActivo' esta declarada a nivel publico, la solución seria tan sencilla como utilizarla en la función:

Original:
Public Function Da_Usuario() As String
Da_Usuario = txtUsuario
End Function

Con el dato (supuestamente) correcto:
Public Function Da_Usuario() As String
Da_Usuario = UsuarioActivo
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alfonso

No consigo pasar el valor de un campo en un formulario a otro formulario

Publicado por Alfonso (4 intervenciones) el 08/07/2021 10:01:31
Muchas gracias por tu respuesta,

estoy probando esto que me dices pero sigo sin conseguir tener el valor del usuario que entra en el menu para poder visualizarlo (primer paso para saber que usuario se ha conectado al programa para futuros manejos de esta u otras variables publicas)

En el modulo1 he cambiado a esto:
1
2
3
4
5
6
Option Compare Database
Option Explicit
Public UsuarioActivo As String
Public Function Da_Usuario() As String
    Da_Usuario = UsuarioActivo
End Function

Y luego en el menu uso en un campo de texto esta variable UsuarioActivo pero no me sale el valor de la misma
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No consigo pasar el valor de un campo en un formulario a otro formulario

Publicado por Anonimo (3316 intervenciones) el 08/07/2021 16:40:06
Propongo un ejemplo alternativo para entender el concepto (no es Access es ... cualquier otro entorno).

Tenemos una variable (un cesto para la compra)
Tenemos un comprador (el usuario, digamos que es el nivel o privilegio)
Utilizamos una bolsa para poner la fruta que vamos a comprar (la pone 'la casa': el cuadro de texto en el formulario)

Elegimos la mercancía (digamos que manzanas) la ponemos en la bolsa y llevamos al punto de cobro, la pesan ... etc.

Salimos de la tienda con nuestro cesto -en el que no hemos depositado la compra- y al llegar a casa ... al sofá por no hacer bien las cosas.

Tan complicado es poner en el cesto (la variable publica) y antes de salir de la tienda la bolsa con la compra y la fruta que hemos comprado?.... (o sin bolsa por eso de la ecología)

Genera el dato (usuario/contraseña) como se esta haciendo, simplemente porque funciona (o eso espero)
ANTES de salir de esa función, cuando AUN se puede acceder al usuario (al igual que a sus privilegios) solo hay que asignar el dato a la variable publica que hemos creado y que por ser publica esta disponible a nivel VBA y mediante la función ... donde se requiera.

Si se utiliza la variable publica sin asignarle un valor ¿Qué puede entender Access que se le solicita?.
nada = nada (y que no se canse de nadar o se ahoga).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vba Access
Val: 485
Plata
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

No consigo pasar el valor de un campo en un formulario a otro formulario

Publicado por Vba Access (26 intervenciones) el 07/07/2021 18:25:14
Hola.

Puedes hacerlos de 2 manera.

1. Después de validar tu usuario, abres tu formulario menú principal y pasa el valor en la propiedad open args.
Por ejemplo:
DoCmd.OpenForm "Employees", acNormal, , , acReadOnly, , Me.txtUsuario

En el menu principal agregas un cuadro de texto donde quieras mostrar el usuario.
En el evento al abrir de tu formulario principal, asignas el valor open args de la siguiente manera.

Me.Usuario = Me.OpenArgs


2. Declaras una variable global en un modulo y después de validar tu usuario le asignas el valor de cuadro de texto txtUsuario
Por ejemplo:
UsuarioLogeado = Me.txtUsuario

En el menu principal agregas un cuadro de texto donde quieras mostrar el usuario.
En el evento al abrir de tu formulario principal, asignas el valor open args de la siguiente manera.

Me.Usuario = UsuarioLogeado


Te dejo un ejemplo de como se utiliza la propiedad openargs:
https://www.youtube.com/watch?v=vh00PQ9y6rI

Tambien te dejo un login que lo puedes descargar en la descripcion del video
https://www.youtube.com/watch?v=Rnkf-d3MCLg


Saludos.

------------------------------------------------------------------------------------------------------------
Vba Access

https://www.youtube.com/channel/UCjS6fHbImLyqtrcdHvJLRgg?sub_confirmation=1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

No consigo pasar el valor de un campo en un formulario a otro formulario

Publicado por Pablo (328 intervenciones) el 09/07/2021 19:50:29
Hola
Por si sirve de ayuda yo lo hice de la segunda forma. En un módulo, que llamé variables, defino la variable pública usuario_conectado como integer, un número de la tabla usuarios. En el cuadro de conexion pregunto el nombre y la contraseña y, si es correcto asigno el número de usuario a la variable usuario_conectado, de esta forma mediante dlookup puedo saber el nombre del usuario en cualquier parte del programa, basta decir: variables.usuario_conectado
Espero haber sido de ayuda y si alguien ve algún error agradezco las correcciones

Un saludo
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alfonso

No consigo pasar el valor de un campo en un formulario a otro formulario

Publicado por Alfonso (4 intervenciones) el 01/02/2022 10:57:03
Muchas gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar