StackPtr ha scritto:
Private Sub txtAccessoAutomatizzato_AfterUpdate()
...
If Posiz = 0 Then ' Quello che è stato scritto non è corretto.
' Cancello la casella di testo e ci riposiziono il cursore.
Me.txtAccessoAutomatizzato = Null
Me.txtAccessoAutomatizzato.SetFocus
Else
...
Recon = False ' Inizializzo
Recon = TrovaOperatore(strNome, strPwd) ' Check dell'utente
If Recon = False Then
...
End If
If Recon = True Then
...
End If
End If
End Sub
Ho eliminato qualche interruzione di riga per guadagnare spazio (ricorda l'uso dei tag CODE, il codice deve comparire come lo vedi scritto qui sopra e più avanti nel post, non come testo normale).
Alcune migliorie di "stile" che aiutano a seguire meglio l'esecuzione del codice e la sua lettura.
Prima If: all'uscita della parte vera si va di fatto alla fine della sub. Senza tenere tutto il resto della routine dentro Else, metti un Exit Sub dentro la parte vera della If. Diverso il caso in cui ci fosse altro codice da eseguire sempre.
Recon: valore boolean, vero o falso. Inutile fare due If: se non è vero deve per forza essere falso. Si mette in una If unica con il classico Else. Proprio perché è già boolean non ho bisogno di verificarne l'uguaglianza con True o False. Ne sfrutto direttamente il valore (in questo caso con la negazione Not, per "invertirlo") per condizionare l'esecuzione della parte vera o falsa della If.
Private Sub txtAccessoAutomatizzato_AfterUpdate()
...
If Posiz = 0 Then ' Quello che è stato scritto non è corretto.
' Cancello la casella di testo e ci riposiziono il cursore.
Me.txtAccessoAutomatizzato = Null
Me.txtAccessoAutomatizzato.SetFocus
Exit Sub
End If
...
Recon = TrovaOperatore(strNome, strPwd) ' Check dell'utente
If Not Recon Then
Me.txtAccessoAutomatizzato = Null
Me.txtAccessoAutomatizzato.SetFocus
Else
strGlbNomeOperatore = strNome
DoCmd.OpenForm "frmAutomatizzato", acNormal
End If
Detto questo andiamo al problema in senso stretto: non so dov'è il problema.
L'unica cosa che ci dai per certa è il funzionamento quando nome utente e pwd presi dalla lettura del qr code sono giusti ma la maggior parte del codice gestisce altre situazioni. Vedo la presenza di variabili non dichiarate, come pure di una funzione, quindi di certo c'è altro codice. Le variabili che usi e che non si vedono dichiarate a livello di routine sono comunque dichiarate a livello di modulo o globali? Detto in un altro modo: c'è Option Explicit in ogni modulo?
Dopo aver riscritto il codice come ti ho suggerito prova a fare un debug con esecuzione di una riga per volta.
Confido in un'illuminazione in corso di giornata.