Error al aplicar un filtro de otro formulario

¿Qué estoy haciendo mal en este código? Estoy intentando abrir un formulario dependiendo de un valor de un texbox dentro de otro formulario el formulario se llama Usuarios y el texbox "txtUsuario" lo que intento es que me filtre ese valor con el campo "Gestor_Asignado"

Private Sub Comando4_Click()
Dim clave As String

Usuario = DFirst("login", "Usuarios", "login='" & Me.txtUsuario & "'")
clave = DFirst("clave", "Usuarios", "login='" & Me.txtUsuario & "'")

If IsNull(Me.txtUsuario) Or IsNull(Me.txtClave) Then
MsgBox "Escriba el usuario y la clave y pulse Ingresar", vbExclamation, "Atención"
Exit Sub
End If

If Usuario = "" Or IsNull(Usuario) Then
MsgBox "El usuario no existe en la base de datos", vbExclamation, "Usuario no válido"
Else
If clave = Me.txtClave Then
MsgBox "Bienvenido al Sistema", vbInformation, "Welcome"
User = Trim(Usuario)
DoCmd.OpenForm "PLATAFORMA_SUBVENCIONES_ResumenLeads", , , "[Gestor_Asignado]=" & Me.txtUsuario
Else
MsgBox "La clave no es correcta", vbExclamation, "Clave incorrecta"
End If

1 respuesta

Respuesta
2

Primero, no utilizaría DFirst() para buscar el registro lo haría con DLookup() y utilizando la función NZ(), además veo que utiliza el mismo campo Me.txtUsuario para evaluar ambos campos Usuario y clave.

Aún más como son 2 campos  a evaluar  lo haría con una función donde le paso los 2 parámetros mediante  un recordset y una sentencia SQL para buscar, algo como: "SELECT login, clave FROM Usuarios WHERE login=' & strLogin & " AND clave'=" & strClave.

Segundo, si TxtUsuario es texto faltaría la apertura y cierre de apóstrofe, quedaría de la siguiente forma:

DoCmd.OpenForm "PLATAFORMA_SUBVENCIONES_ResumenLeads", , , "[Gestor_Asignado]='" & Me.txtUsuario & "'"

¡Gracias! Funciona a las mil maravillas. He cambiado DFirst() por DLookup() y el código tal cual usted indica y va como un tiro. Solo una pregunta más para afinarla del todo y aprovechándome de su amabilidad. Cuando selecciono un Usuario que no tiene valores en la tabla me aparece el error que indico en la imagen, el error me salta en esta parte del código.

clave = DLookup("clave", "Usuarios", "login='" & Me.txtUsuario & "'")    Me explico si en la tabla no existe ningún valor LD003 lo ideal es que me saliera un mensaje del tipo "No hay código asignado para este usuario"    Mil gracias.

Falta anteponer NZ. Quedaria asi:

clave = NZ(DLookup("clave", "Usuarios", "login='" & Me.txtUsuario & "'") ,"")

IF clave="" Then

  Msgbox "Usuario no existe",vbCritical, "Cuidado"

  Exit Sub

End If

I

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas