Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Non riesco a far funzionare la tabella e la query di registrazione, posso inviarti il file ?
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Dovrei far usare un database per degli inserimenti e delle modifiche in access 2010
avrei però bisogno di conoscere il numero degli inserimenti fatti o almeno di conoscere i tempi di di apertura del database e le operazioni effettuate dagli users, perchè in base a questi tempi gli stessi devono essere remunerati
Quindi occorre una maschera di login nome utente e password
ed una tabella in cui viene registrato ogni accesso, il tipo di operazione effettuata, l'orario di entrata e l'orario di uscita, con la possibilità di gestire anche i cambi di password e di aggiungere nuovi utenti. Una maschera di login con i permessi.
Vorrei sapere come iniziare e crdo che è necessario l'utilizzo di codice visual basic
Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
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.
Non riesco a far funzionare la tabella e la query di registrazione, posso inviarti il file ?
E' indubbio che useremo Vba.
Sulla tua maschera di Login avrai sicuramente un pulsante di validazione. Sul click del pulsante, se login valido esegui la query di inserimento che ti avevo descritto all'inizio:
DoCmd.RunSql "INSERT INTO Table1 ( Login, Inizio, Fine ) SELECT '" & Me.TxtLogin & "', Now(), Null"
Dando per scontato che questa maschera non la chiudi, sull'evento Su Chiusura avrai l'altra query:
DoCmd.RunSql "Update Table1 Set Fine = Now() Where Login = '" Me.TxtLogin & "' And Fine Is Null"
Che và ad aggiornare la data di fine sessione in tabella.
Mimmo
Non va poichè la maschera di login viene chiusa
Option Explicit
Option Compare Database
Private mblnOk As Boolean
' N.B.: Ho tolto da origine record questo perché credo che non serva a nulla:
'
' PARAMETERS [Forms]![Accesso]![txtNomeUtente] Text ( 255 )
', [Forms]![Accesso]![txtPassword] Text ( 255 ); SELECT
'Nomi.[Nome Utente], Nomi.Password FROM Nomi WHERE Nomi.
'[Nome Utente]=Forms!Accesso!txtNomeUtente And Nomi.Password
'=Forms!Accesso!txtPassword;
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.Close acForm, Me.Name
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
End Sub
Ed inoltre su chiusura
Private Sub Form_Close()
If mblnOk Then
'
Else
Me.Application.Quit
End If
End Sub
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