16/08/2023 - joker88 ha scritto:
certo, testato e funzionante…almeno per quella parte.
non per fare il pignolo ma nel tuo codice c'è scritto:
Dim UserLevel As Integer
.....
If txtPassword.Value = pwd Then
'password corretta
UserLevel = estrai_campo_stringa("select sicurezza from tablogin where login='" & txtLoginID.Value & "' and password='" & txtPassword.Value & "'")
id_utente_loggato = estrai_campo_numerico("select loginid from tablogin where login='" & txtLoginID.Value & "' and password='" & txtPassword.Value & "'")
If UserLevel = 1 Then
DoCmd.OpenForm "InserimentoDati"
DoCmd.Close acForm, "LoginPassword"
.....
come si vede da questa immagine, il campo sicurezza, contiene un valore stringa.
quindi in questa istruzione passi un valore stringa ad una variabile dichiarata come integer
Dim UserLevel As Integer
UserLevel = estrai_campo_stringa("select sicurezza from tablogin....
essendo la parte dove confronti le credenziali di accesso con successiva autorizzazione all'uso del database, mi spieghi come può essere funzionante?
Non ti genera errore, perchè questa porzione di codice non verrà mai eseguita, perchè a monte, come condizione primaria di tutti i successi if nidificati all'interno, c'è questo codice di confronto
If estrai_campo_numerico("select count(*) from tablogin where login='" & txtLoginID.Value & "'") Then
'esiste l'utente
pwd = estrai_campo_stringa("select password from tablogin where login='" & txtLoginID.Value & "'")
che risulterà sempre falso, sia per l'uso di count, sia per il fatto che estrai tutti i campi della tabella senza fare nessun confronto.
E questo codice è contenuto nel database che hai condiviso.
Private Sub Comando1_Click()
Dim UserLevel As Integer
Dim pwd As String
Dim TemPass As String
Dim ID As Integer
If IsNull(Me.txtLoginID) Then
MsgBox ("Inserire Login"), vbInformation, "Richiesto Login"
Me.txtLoginID.SetFocus
ElseIf IsNull(Me.txtPassword) Then
MsgBox ("Inserire Password"), vbInformation, "Richiesta Password"
Me.txtPassword.SetFocus
Else
If estrai_campo_numerico("select count(*) from tablogin where login='" & txtLoginID.Value & "'") Then
'esiste l'utente
pwd = estrai_campo_stringa("select password from tablogin where login='" & txtLoginID.Value & "'")
If pwd = "Password" Then
'sono entrato con la password momentanea
If pwd <> txtPassword.Value Then
MsgBox "Attenzione la Password momentanea non coincide"
txtPassword.Value = ""
txtPassword.SetFocus
Exit Sub
End If
id_utente_loggato = estrai_campo_numerico("select loginid from tablogin where login='" & txtLoginID.Value & "' and password='" & txtPassword.Value & "'")
MsgBox ("Per favore cambiare Password"), vbInformation, "Nuova Password"
DoCmd.OpenForm "CambiaPassword", , , "[LoginID] = " & ID
DoCmd.Close acForm, "LoginPassword"
Else
If txtPassword.Value = pwd Then
'password corretta
UserLevel = estrai_campo_stringa("select sicurezza from tablogin where login='" & txtLoginID.Value & "' and password='" & txtPassword.Value & "'")
id_utente_loggato = estrai_campo_numerico("select loginid from tablogin where login='" & txtLoginID.Value & "' and password='" & txtPassword.Value & "'")
If UserLevel = 1 Then
DoCmd.OpenForm "InserimentoDati"
DoCmd.Close acForm, "LoginPassword"
Else
id_utente_loggato = estrai_campo_numerico("select loginid from tablogin where login='" & txtLoginID.Value & "' and password='" & txtPassword.Value & "'")
DoCmd.OpenForm "TabLogin"
DoCmd.Close acForm, "LoginPassword"
End If
Else
MsgBox "Attenzione Password Errata"
txtPassword.Value = ""
txtPassword.SetFocus
Exit Sub
End If
End If
Else
MsgBox "Attenzione utente non codificato"
txtLoginID.Value = ""
txtLoginID.SetFocus
Exit Sub
End If
End If
End Sub
ed eseguendo questo codice appare sempre il messaggio:
"Attenzione utente non codificato"