Log delle attività su un Db Access

Anonimo
2015-06-21T19:30:36+00:00

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

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

42 risposte

Ordina per: Più utili
  1. Anonimo
    2015-06-25T09:13:40+00:00

    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

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-06-25T03:11:26+00:00

    Ed inoltre su chiusura

    Private Sub Form_Close()

        If mblnOk Then

          '

        Else

          Me.Application.Quit

        End If

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-06-25T03:10:18+00:00

    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

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-06-24T20:49:04+00:00

    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

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-06-24T20:44:11+00:00

    Non riesco a far funzionare la tabella e la query di registrazione, posso inviarti il file ?

    La risposta è stata utile?

    0 commenti Nessun commento