Copiar datos de un cuadro de texto en otro

Tengo un código para usar User y Contraseña:

Private Sub Form_Load()
DoCmd.ShowToolbar "RIBBON", acToolbarNo
End Sub
Private Sub cboUser_AfterUpdate()
Me.txtPass.SetFocus
End Sub

Private Sub cmdAceptar_Click()
'Requiere registro de la librería "Microsoft DAO 3.6 Object Library" o
'módulo equivalente
'Declaramos las variables
Const numIntentos As Byte = 3 'Aquí definimos el número de intentos que queremos permitir
Dim vUser As Variant
Dim vPass As Variant
Dim tUser As String, tPass As String
Dim rst As Recordset
'Cogemos el valor del usuario
vUser = Me.cboUser.Value
'Cogemos el valor de la contraseña
vPass = Me.txtPass.Value
'Si no hay usuario avisamos y salimos
If IsNull(vUser) Then
MsgBox "No ha seleccionado ningún usuario", vbInformation, "AVISO"
Me.cboUser.SetFocus
Exit Sub
End If
'Si no hay contraseña avisamos y salimos
If IsNull(vPass) Then
MsgBox "No ha introducido ninguna contraseña", vbInformation, "AVISO"
Me.txtPass.SetFocus
Exit Sub
End If
'Creamos un recordset sobre la tabla TPass
Set rst = CurrentDb.OpenRecordset("000000CTPass", dbOpenSnapshot)
'Si no hay registros avisamos y saltamos a Salida
If rst.RecordCount = 0 Then
MsgBox "No existen usuarios", vbInformation, "AVISO"
GoTo Salida
End If
'Nos movemos al primer registro e iniciamos el recorrido de registros
rst.MoveFirst
Do Until rst.EOF
'Cogemos los valores de usuario y pass de la tabla
tUser = rst.Fields(0).Value
tPass = rst.Fields(1).Value
'Si coinciden damos entrada a la BD
If tUser = vUser Then
If tPass = vPass Then
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "000 000 Menu Vend"
'Si no coinciden...
Else
'Miramos en qué número de intento estamos, que nos viene dado por
'el valor de txtContador
If Me.txtContador.Value = numIntentos Then
'Si hemos superado el número de intentos decimos adiós al usuario
MsgBox "Ha superado el número de intentos. La aplicación se cerrará", vbCritical, "CERRAR"
DoCmd.Quit
Else
'Si aún no ha superado el número de intentos dejamos que lo pruebe de nuevo
MsgBox "La contraseña introducida no es correcta." & vbCrLf & vbCrLf & _
"Dispone de " & numIntentos - Me.txtContador.Value & _
IIf(numIntentos - Me.txtContador.Value = 1, " intento más", " intentos más"), _
vbInformation, "INCORRECTO"
Me.txtPass.SetFocus
Me.txtPass.Value = Null
'Añadimos una unidad al valor de txtContador
Me.txtContador.Value = Me.txtContador.Value + 1
GoTo Salida
End If
End If
End If
'Nos movemos al siguiente registro
rst.MoveNext
Loop
Salida:
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing
End Sub

Private Sub cmdCancelar_Click()
Dim resp As Integer
resp = MsgBox("¿Seguro que desea cancelar?", vbQuestion + vbYesNo, "CONFIRMAR")
If resp = vbYes Then
DoCmd.Quit
End If
End Sub

Con este código cuando el User y la Contraseña son correctos se me abre el Formulario "000 000 Menu Vend" y en este tengo un cuadro de texto no visible, donde quiero que se me guarde el Nombre del User cuando User y Contraseña son correctos.

Alguien puede ayudarme a solucionar esta parte del código.

2 respuestas

Respuesta
2

José Antonio: Para capturar el usuario >>

Suponiendo que el cuadro de Texto se llame TxtUsuario, entonces

Me.TxtUsuario = Environ("UserName") si estás en el mismo Formulario, y si estás en otro, que creo es tu caso

Forms![000 000 Menu Vend].Form.TxtUsuario = Environ("UserName")

Sin dtenerme mucho, porque tu conoces mejor tu código, creo que ésta línea debes ponerla inmediatamente después de >> DoCmd. OpenForm "000 000 Menu Vend"

Si no has cerrado aun el otro Formulario y en él tienes un TextBox que se llame también TxtUsuario, puedes hacer.

Forms![000 000 Menu Vend].Form.TxtUsuario = Me.TxtUsuario

Por alternativas que no quede.

No he mirado el código que supongo será adecuado. Mis saludos >> Jacinto

El problema es que como me dices poner el código después de DoCmd. OpenForm "000 000 Menu Vend". Como veras hay varios else y la verdad es que no se donde tengo que poner el código. El formulario que se abre se llama FPass y el cuadro TXT cboUser este es un formulario para introducir Usuario y Contraseña, si todo es correcto se abre otro Formulario que es mi menu este se llama "000 000 Menu Vendedor" y el cuadro TXT CboVendedor. Lo que quiero es que cuando se abra se guarde el Nombre de cbouser en CboVendedor.

Esta es una parte del código, antes te lo mande todo.

If tUser = vUser Then
If tPass = vPass Then
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "000 000 Menu Vend"
'Si no coinciden...
Else
'Miramos en qué número de intento estamos, que nos viene dado por
'el valor de txtContador
If Me.txtContador.Value = numIntentos Then
'Si hemos superado el número de intentos decimos adiós al usuario
MsgBox "Ha superado el número de intentos. La aplicación se cerrará", vbCritical, "CERRAR"
DoCmd.Quit
Else
'Si aún no ha superado el número de intentos dejamos que lo pruebe de nuevo
MsgBox "La contraseña introducida no es correcta." & vbCrLf & vbCrLf & _
"Dispone de " & numIntentos - Me.txtContador.Value & _
IIf(numIntentos - Me.txtContador.Value = 1, " intento más", " intentos más"), _
vbInformation, "INCORRECTO"
Me.txtPass.SetFocus
Me.txtPass.Value = Null
'Añadimos una unidad al valor de txtContador
Me.txtContador.Value = Me.txtContador.Value + 1
GoTo Salida
End If
End If
End If
'Nos movemos al siguiente registro
rst.MoveNext
Loop
Salida:
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing
End Sub

Gracias.

José Antonio: Aunque tengas varios Else, el Formulario solo se abre desde esa línea.

Ahora no sé como le llamas, porque me citas dos Nombres, "000 000 Menu Vend" y "000 000 Menu Vendedor". En cualquier caso, ponlo dtrás de la Apertura.

DoCmd. OpenForm "000 000 Menu Vend" o Vendedor, pero abajo pones el correcto

Forms![000 000 Menu Vend].Form.CboVendedor = Environ("UserName")

Mis saludos >> Jacinto

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas