Abrir un formulario en un registro determinado

Tengo una base de datos que accedo a través de un formulario de validación donde al introducir el usuario, lo copio en una tabla de "usuarisactivo":

DoCmd.SetWarnings False
DoCmd.RunSQL "delete * from tblusuarioactivo"
DoCmd.RunSQL "insert into tblusuarioactivo(usuario)values(txtidusuario)"
DoCmd. OpenForm "Panel de control"
DoCmd. Close acForm, "validación"

Ahora necesito que al abrir un formulario vinculado a la tabla de "usuarios", el mismo se abra en el usuario que se ha registrado en la tabla de "usuariosactivos".

2 respuestas

Respuesta
2

Es de suponer que sigues en el formulario donde has escrito ese nombre de usuario. Si es así basta conque en vez de Docmd. Openform"panel de control" pongas

Docmd.openform"nombre del formulario que quieres abrir",,,"usuario)¡='" & me.txtusuario & "'"

O si el formulario lo vas a abrir una vez cerrados los otros, en el evento Al cargar de ese formulario pongas

me.recordsource="select * from Usuarios where usuario=dlast(""usuario"",""usuarios"")

Es decir, que al abrirlo, el origen de registros de ese formulario sea sólo aquel en que el usuario sea el mismo que figura en el último registro de la tabla Usuarios.

Estoy más bien en el segundo caso que propones, pero con la función Dlast, ¿no me abriría el formulario con el último usuario?

Yo necesitaría que me abriese el formulario  (vinculado a la tabla "usuarios") por el usuario que figura que se ha grabado al acceder en la tabla "tblUsuarioActivo" en el campo que se llama "Usuario".

Para concretar el nombre de los campos:

El formulario "A", vinculado a la tabla "Usuarios", tiene que abrirse por el usuario (Campo al que he llamado "CP"), por el "CP" que coincide con el el campo "Usuario" de la tabla "tblUsuarioActivo".

No se si ahora me he explicado mejor.

Siguiendo tu instrucción, le pones que inserte en la tabla Usuarios, en el campo Usuario el valor que aparece en txtusuario. Y mientras Dios no lo remedie, y el agua siga pasando por debajo de los puentes, cuando se inserta en una tabla, lo hace en el último registro, sí o sí. De ahí lo de Dlast.

Por otro lado, lo normal es que ya tengas una tabla Usuarios donde figure el nombre del usuario y su contraseña, a los que les concedes el permiso para entrar en la base, o determinados permisos, y lo único que se hace con el formulario de entrada es comprobar si el nombre del usuario y la contraseña son correctos. Más, aún, lo normal es crear una tabla, a la que llamaré Registro donde me guarde quien entró, a que día, a que hora y lo que visitó, abrió, modificó, etc. Y también en este caso, como el que entra lo hace en el último lugar en la tabla Registro, se sigue usando la función Dlast.

Si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo.

Si lo haces, en el asunto del mensaje, pon tu alias José Manual, ya que si no sé quien me escribe ni los abro.

Tenias razón, lo que me fallaba era la sintaxis de la instrucción, pero lo pude resolver al final  


¡Gracias! 

Respuesta
2

Y no es mejor adicionar un campo "Activo" Si/No en la tabla "Usuarios" y cambiar Insert por Update

Algo como:

Definir una variable Pública a nivel de módulo, por ejemplo,

Public miUsuario AS Long    (Si el valor que guarda en el campo  me.txtusuario es numérico) ó

Public miUsuario AS String  (Si el valor que guarda en el campo  me.txtusuario es texto)

En el evento Despues de actualizar del campo me.txtusuario, algo como:

miUsuario=me.txtusuario

Ahora si me.txtusuario es numerico:

CurrentDB.Execute  "UPDATE  usuarios SET Activo=True WHERE Usuario=" & miUsuario & ""

Si es texto:

CurrentDB.Execute  "UPDATE  usuarios SET Activo=True WHERE Usuario='" & miUsuario & "'"

Y después adiciona el código que le indican, cuando el usuario salga de la aplicación pasa el estado a FALSE, algo como:

Si me.txtusuario es texto:

Ahora si me.txtusuario es numerico:CurrentDB.Execute  "UPDATE  usuarios SET Activo=False WHERE Usuario='" & miUsuario & "'"

Con lo anterior se evita la tabla tblusuarioactivo.

Como lo tiene planteado no le permite administrar bases de datos multiusuario, personalmente utilizo el que propongo, esto me permite que un usuario no ingrese desde otra terminal.

Bueno esto es una idea.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas