| General |
| 6.157 Determinare l'elenco degli utenti collegati ad un database Access multiutenza |
| Alessandro Baraldi, Marco Fontana |
|
Qui di seguito è indicato un codice VBA inviato da Marco Fontana e che permette di elencare in una casella di riepilogo gli utenti collegati ad un database Access multiutenza:
Dim strread As String
Dim lung As Integer
Dim nome As String
Dim nome1 As String
Dim nome2 As String
Dim IDX As Integer
Dim IDX1 As Integer
For idx1 = 0 To (lst_utenti.ListCount - 1)
lst_utenti.RemoveItem (IDX)
Next idx1
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("db1.ldb", ForReading, TristateFalse)
strread = f.readline
IDX = 1
Do While (IDX * 32) < Len(strread)
nome = Trim(Mid(strread, (32 * IDX), 32))
nome1 = Replace(nome, Chr(0), "")
lst_utenti.AddItem Item:=(nome1)
IDX = IDX + 2
Loop
f.Close
Naturalmente la casella di riepilogo si chiama lst_utenti.In alternativa a questa soluzione Alessandro Baraldi ci ha inviato, per elencare gli utenti collegati, il seguente codice VBA:
Function ShowUserRosterMultipleUsers(strSourceDB as string)
Dim cn 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=" & strSourceDB
' 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 Function
Ambedue le soluzioni possono essere eseguite con Access 2000 e versioni successive. |