Conoscere quanti e chi sono gli Utenti connessi al DB in rete.

Anonimo
2015-09-10T14:32:33+00:00

Buon pomeriggio a tutti gli amici della community, ricercando nello storico del forum ho trovato il codice sottoriportato.

Mi dà errore a questa riga:  cn.Open "Data Source=C:\Programma Ritenute Access\GESTIONE RITENUTE RTLA PUGLIA.accdb"

Allego anche il file immagine dell'errore segnalato, eppure il percorso del DB è corretto, cosa non va?

Vi chiedo, inoltre di aiutarmi a visualizzare magari tramite Msgbox e non tramite la finestra Immediata quali sono gli utenti connessi al DB in rete, visualizzando le proprie credenziali (tipo Nome computer, oppure nome e cognome o altro ecc.)

Sub ShowUserRosterMultipleUsers()

    Dim cn As New ADODB.Connection

    Dim cn2 As New ADODB.Connection

    Dim rs As New ADODB.RecordSet

    Dim i, j As Long

    cn.Provider = "Microsoft.Jet.OLEDB.4.0"

    cn.Open "Data Source=C:\Programma Ritenute Access\GESTIONE RITENUTE.accdb"

    cn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _

    & "Data Source=C:\Programma Ritenute Access\GESTIONE RITENUTE.accdb"

    ' The user roster is exposed as a provider-specific schema rowset

    ' in the Jet 4 OLE DB provider.  You have to use a GUID to

    ' reference the schema, as provider-specific schemas are not

    ' listed in ADO's type library for schema rowsets

    Set rs = cn.OpenSchema(adSchemaProviderSpecific, _

    , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")

    'Output the list of all users in the current database.

    Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _

    "", rs.Fields(2).Name, rs.Fields(3).Name

    While Not rs.EOF

        Debug.Print rs.Fields(0), rs.Fields(1), _

        rs.Fields(2), rs.Fields(3)

        rs.MoveNext

    Wend

End Sub

P.S. sono un pò confuso su questo aiutatemi a capire per favore.

Ho diviso il Db in Be e Fe, in questo caso che percorso devo indicare nel codice quello del Be o quello del Fe.

Ringrazio anticipatamente chi mi aiuta in quesat problematica.

Ciao Nicola.

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
2015-09-10T20:23:47+00:00

ciao Nicola,

tabella T_users da creare sul BE e da collegare sugli FE naturalmente.

campi:

nameUser testo,

nameComputer testo,

LoginTime, data/ora

logoutTime data/ora.

macro autoexec da creare su FE :

azione esegui codice, nome funzione login()

codice del pulsante che chiuderà il DB:

Private Sub cmdQuit_Click()

logoOut

DoCmd.Quit

End Sub

modulo standard da copiare nel FE:

Option Compare Database

Option Explicit

'//API Declarations

Private Declare PtrSafe Function GetComputerName Lib "Kernel32" Alias "GetComputerNameA" (ByVal Buffer As String, BufferSize As Long) As Long

Private Function GetPcName() As String

    Dim ComputerName As String * 255

    Dim NameSize As Long

    Dim RetVal As Long

    NameSize = Len(ComputerName)

    RetVal = GetComputerName(ComputerName, NameSize)

    If RetVal > 0 Then

      GetPcName = Left$(ComputerName, NameSize)

    Else

      GetPcName = vbNullString

    End If

End Function

Public Function login()

CurrentDb.Execute "insert into T_users (nameUser,nameComputer,loginTime)" & _

                   "values ('" & Environ("UserName") & "','" & _

                   GetPcName & "',#" & Now & "#)", dbFailOnError

End Function

Public Sub logoOut()

CurrentDb.Execute "update T_users set logoutTime=#" & Now & _

                   "# where nameUser='" & Environ("UserName") & "' and nameComputer='" & GetPcName & "'", dbFailOnError

End Sub

all'apertura del DB la tabella T_users sarà popolata in base a chi si logga, user, pc e ora del login (funzione login lanciata con la macro autoexec), alla chiusura aggiorni data e ora del logout dell'utente che effettua il logout,.

Gli utenti connessi sono coloro che hanno null nel campo logout della tabella T_users.

ciao, Sandro.

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

10 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-09-10T15:13:33+00:00

    Allego errore.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-09-10T15:12:20+00:00

    Ciao Mauro, innanzitutto grazie per il tuo intervento, ho l'errore che ti allego pur cambiando cosi: "Provider=Microsoft.ACE.OLEDB.12.0; "

    Attendo vostre, vi saluto.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-09-10T15:06:07+00:00

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-09-10T14:35:09+00:00

    Ho dimenticato il file dell'errore, provvedo subito.

    Vi saluto.

    La risposta è stata utile?

    0 commenti Nessun commento