Condividi tramite

Login utenti

Anonimo
2010-05-17T19:50:09+00:00

Buona sera a tutti,

sto tentando di attivare un sistema di login utenti in un DB access diviso in F_end e B_end, vorrei inserire in un terzo DB, protetto da password, una tabella contenente user e password e un campo che identifica il tipo di autorizzazione. Trovo difficoltà a collegare la maschera di login del F_end con la tabella del terzo DB contenente i dati dei client.

Sicuro che qualcuno riuscirà ad aiutarmi o quantomeno a chiarirmi le idee, ringrazio tutti anticipatamente.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2010-05-18T18:57:45+00:00

Ciao Rinaldo,

ok, comunque cambia poco, puoi mettere nell'evento click del pulsante di conferma questo codice


Private Sub Comando1_Click()

    If IsNull(Me!user) Then

       MsgBox "Inserire nome utente!!", vbExclamation

       Me!user.SetFocus

       Exit Sub

    End If

    If IsNull(Me!password) Then

       MsgBox "Inserire password utente!!", vbExclamation

       Me!password.SetFocus

       Exit Sub

    End If

    Dim Db As DAO.database

    Dim Rs As DAO.Recordset

    Dim Login As Boolean

    Dim Permesso As Variant

    Set Db = DBEngine(0).OpenDatabase("C:\Users\Master\Desktop\Diritti.mdb", False, False, "MS Access;PWD=123456789")

    Set Rs = Db.OpenRecordset("Tutenti", dbOpenDynaset)

    Rs.FindFirst "user=""" + Replace(Me!user, """", """""") + """"

    If Rs.NoMatch = True Then

       MsgBox "Nome utente non trovato", vbExclamation

    Else

       If StrComp(Me!password, Rs!password, vbBinaryCompare) <> 0 Then

          MsgBox "Password non valida!!", vbExclamation

       Else

          Permesso = Rs!Permesso

          Login = True

       End If

    End If

    Rs.Close

    Db.Close

    Set Rs = Nothing

    Set Db = Nothing

    If Login = True Then

       'Login eseguito ...

       'Istruzioni per login eseguito

       '.....

    End If

End Sub


Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-05-18T14:18:56+00:00

    Ciao Giorgio,

    si hai interpretato correttamente, ho bisogno di capire come attivare questo "confronto" di dati con un DB esterno senza allegare nessuna tabella,

    scusa se non mi sono espresso correttamente, ma pensavo che la mia intenzione fosse chiara.

    Grazie

    Rinaldo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-05-18T14:03:40+00:00

    Ciao Rinaldo,

    umm..  nel post originale hai scritto...


    Trovo difficoltà a collegare la maschera di login del F_end con la tabella del terzo DB contenente i dati dei client.


    Per questo motivo ho mostrato come si collega la maschera alla tabella del db esterno.

    ora mi sembra di capire che la maschera Mlogin non deve essere associata a un recordset ma serve per digitare utente e password, poi per mezzo di un pulsante si controlla se l'utente esiste nella tabella "Tutenti" del DB esterno e se esiste si confronta la password.

    Ho interpretato correttamente ?

    poi vediamo le altre cose.

    :-)

    Giorgio Racnati

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-05-18T13:45:39+00:00

    Ciao Giorgio,

    prima di tutto ti ringrazio della risposta, ma, avrei ancora bisogno della tua competenza,

    ho utilizzato il primo metodo che hai proposto, ho inserito il codice nella maschera di Login (Mlogin)

    ed ora devo confrontare i dati inseriti nei campi "user" e "password" di "Mlogin" con i campi

    della tabella "Tutenti" del DB esterno che abbiamo chiamato "Me.Recordset" (se ho capito bene).

    Potresti indicarmi il codice da associare al pulsante che lancia questo confronto, considerando che,

    oltre a user e password, nel Recordset ad ogni utente è associato il campo "permesso" che identifica

    i diritti dell'utente all'interno del DB (si tratta di un campo testo).

    Sarà mia cura lanciare maschere diverse a seconda del "permesso" associato.

    Questa è la situazione attuale di "Mlogin", il DB esterno è per ora sul Desktop e si chiama Dititti.mdb,

    uso Access 2007 ma salvo in formato 2003 per la compatibilità con gli utilizzatori, quindi distribuirò un .mde:

    Option Compare Database

    Dim Db As DAO.Database 'Database esterno


    Private Sub Form_Close()

          Db.Close

        Set Db = Nothing

    End Sub


    Private Sub Form_Open(Cancel As Integer)

        'Apre il database protetto

        Set Db = DBEngine(0).OpenDatabase("C:\Users\Master\Desktop\Diritti.mdb", False, False, "MS Access;PWD=123456789")

        'Assegna il recordset alla maschera

        Set Me.Recordset = Db.OpenRecordset("Tutenti", dbOpenDynaset)

        Me.Requery

    End Sub

    Ho un dubbio.... in questa riga "Dim Db As DAO.Database 'Database esterno" devo sostituire Database esterno con il  nome del mio DB esterno?

    Ancora grazie in anticipo.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-05-17T21:52:05+00:00

    Ciao Rinaldo,

    Un metodo è assegnare il recordset del terzo db alla maschera nell'evento Open della stessa

    Esempio


    Dim Db As DAO.Database 'Database esterno

    Private Sub Form_Open(Cancel As Integer)

        'Apre il database protetto 

        Set Db = DBEngine(0).OpenDatabase("C:\Percorso\NomeDb.accdb", False, False, "MS Access;PWD=TuaPassword")

        'Assegna il recordset alla maschera

        Set Me.Recordset = Db.OpenRecordset("NomeTabella", dbOpenDynaset)

        Me.Requery

    End Sub

    Private Sub Form_Close()

        Db.Close

        Set Db = Nothing

    End Sub


    In questo modo se distribuisci un accde sarà abbastanza difficile scoprire la password del terzo db.

    C'è un metodo più semplice ovvero inserire nella proprietà Origine record la segunte stringa Sql


    SELECT * FROM [MS Access;Database=C:\Percorso\NomeDb.accdb;PWD=TuaPassword].NomeTabella


    Però in questo modo è abbastanza semplice leggere la proprietà e scoprire la password.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento