Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Come ti dicevo, se chiudi la maschera di login, devi salvarti il login in una variabile globale (o tempvars).
Ma il vero problema diventa individuare il punto di uscita dal DB.
Se invece mantieni aperta (e nascosta) la maschera di login hai il grosso vantaggio che è il punto obbligato di chiusura della sessione. Basta che la maschera successiva sia di tipo 'a scelta obbligatoria' che non ti consente di vedere quella di Login di nuovo.
Altrimenti il tutto lo sposti nella maschera principale che vai ad aprire.
Quindi avrai ad esempio:
Option Explicit
Option Compare Database
Private mblnOk As Boolean
Private Sub cmdOK_Click()
On Error GoTo ErrorHandler
Dim db As DAO.Database
Dim sql As String
Dim rst As DAO.Recordset
If Len("" & Me.txtNomeUtente.Value) = 0 Or Len("" & Me.txtPassword.Value) = 0 Then
MsgBox "Inserire Nome Utente e Password!"
Else
Set db = CurrentDb
sql = "SELECT *" & _
" FROM Nomi" & _
" WHERE [Nome utente]='" & Me.txtNomeUtente.Value & "';"
Set rst = db.OpenRecordset(sql)
With rst
If .BOF And .EOF Then
' Nessun record
Else
mblnOk = .Fields("Password").Value = Me.txtPassword.Value
End If
End With
If mblnOk Then
DoCmd.RunSql "INSERT INTO Table1 ( Login, Inizio, Fine ) SELECT '" & Me.TxtLogin & "', Now(), Null"
MsgBox "OK" '<--- Sostituire con apertura maschera principale ---
Else
MsgBox "Nome Utente inesistente o Password errata."
End If
End If
ExitProcedure:
On Error Resume Next
rst.Close
Set rst = Nothing
Set db = Nothing
Exit Sub
ErrorHandler:
MsgBox Err.Description
Resume ExitProcedure
End Sub
Ed inoltre su chiusura:
Private Sub Form_Close()
If mblnOk Then
DoCmd.RunSql "Update Table1 Set Fine = Now() Where Login = '" Me.TxtLogin & "' And Fine Is Null"
Else
Me.Application.Quit
End If
End Sub
Ciao Mimmo