Capturar el nombre del usuario en un control de salida

Tengo un registro TControlSalida que identifica un control de salida de los usuarios, pero a vez requiero identificar el nombre del usuario que se encontrá activo en el formulario es decir el que actualmente inicio su ingreso y me lo capture. El problema surge que tengo un fórmulario "FChivato" que se encuentra de modo oculto y que tiene como funcion capturar el nombre del usuario que ha ingresado, este valor me sirve para identificar el usuario que ha ingresado y ha salido, pero me arroja un error cuando el usuario no ha iniciado sesion y simplemente cancela su accesso en el formulario inicial, provocando un error ya que el formlario FChivato no cumplio con su condicion de identificar el usuario siempre y cuando este haya iniciado, adjunto el codigo que tengo

Private Sub Form_Close()

'Declaramos las variables

Dim vUser As String Dim rst As DAO.Recordset

'Cogemos el usuario

vUser = Forms!FChivato.txtUser.Value

'Creamos el recordset sobre TControlSalida

Set rst = CurrentDb.OpenRecordset("TControlSalida", dbOpenTable)

'Añadimos un registro con la información de salida

With rst

.AddNew .Fields(1).Value = vUser

.Fields(2).Value = Date

.Fields(3).Value = Format(Now, "hh:mm:ss")

.Update

End With

'Cerramos conexiones y liberamos memoria

rst.Close

Set rst = Nothing

End Sub

1 Respuesta

Respuesta
1

Para evitar el error que creo que te da, pon

vUser=Nz(Forms!FChivato.txtxUser.Value,"")

If vUser="" Then Exit Sub

Con estas dos lineas, lo que haces es que si el usuario cancela su inicio de sesión, la variable queda con un valor de cadena vacía, y en ese caso sale sin más.

Estimado:

De antemano gracias por tu ayuda, me falta algo que no me permite cerrar el problema.....de antemano gracias......

Pues tu dirás...

Si lo que quieres es que se te guarde la información de salida, aunque sea sin usuario, quítale la linea de: If vUser="" Then Exit Sub

Igualmente me arroja el error o el mensaje a la salida una vez cancelado su acceso, me podrías dar revisando mi base de datos, el código se encuentra en otro formulario "FControlSalida" en el evento cerrar

Sube una copia de tu BD a www.filebig.net o similar, y pega aquí el enlace de descarga, para que la revise, pero hasta mañana ya no me va a dar tiempo.

Habrá otra forma de extraer el nombre del usuario que inicio sesión una vez validado su acceso que reemplace la opción de extraerlo de un archivo oculto como la del ejemplo, ya que se me esta haciendo dificultoso

Private Sub Form_Close()
'Declaramos las variables
Dim vUser As String

Dim rst As DAO.Recordset
'Cogemos el usuario
vUser = (Forms!FChivato.txtUser.Value) reemplazar esta opción por una que permita identificar el usuario que inicia la sesión en el formulario de acceso "Iniciar_Sesión"
'Creamos el recordset sobre TControlSalida
Set rst = CurrentDb.OpenRecordset("TControlSalida", dbOpenTable)
'Añadimos un registro con la información de salida
With rst
.AddNew

.Fields(1).Value = vUser
.Fields(2).Value = Date
.Fields(3).Value = Format(Now, "hh:mm:ss")
.Update
End With
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing
End Sub

TE LO AGRADECERÍA SI HAY OTRA OPCION

Creo que esto resolverá tu problema si el usuario cancela el inicio de sesión:

Private Sub Form_Close()
On Error GoTo sol_err
'Declaramos las variables
Dim vUser As String
Dim rst As DAO.Recordset
'Cogemos el usuario
vUser = Forms!FChivato.txtUser.Value
'Creamos el recordset sobre TControlSalida
Set rst = CurrentDb.OpenRecordset("TControlSalida", dbOpenTable)
'Añadimos un registro con la información de salida
With rst
.AddNew
.Fields(1).Value = vUser
.Fields(2).Value = Date
.Fields(3).Value = Format(Now, "hh:mm:ss")
.Update
End With
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing
Salida:
Exit Sub
sol_err:
If Err.Number = 2450 Then
Resume Salida
Else
MsgBox "Se ha producido el error " & Err.Number & ":" & vbCrLf & Err.Description
Resume Salida
End If
End Sub

Es decir, el ponemos un control de errores, que si se produce el error 2450 (no se encuentra el formulario FChivato), nos sale sin más (si no se registro usuario de inicio, tampoco se registra de salida), y si se produce otro error, nos lo inidcaría.

Si no se produce ningún error, registra la salida del usuario.

Hola buenos días:

Mi estimado, muy agradecido por su ayuda, su aporte fue excelente, de antemano mi agradecimiento, espero aprender mucho en este sitio.......tengo en mente terminar un proyecto y requiero de asesoría........si pudiera proporcionarme un medio para poderme comunicar con ud.....y desarrollar unos temas.......pero a esta solución planteada le agradezco mucho.

Atentamente.

César Bustos

ECUADOR

email: [email protected]

skype: raphaelche1985

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas