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.CloseNaturalmente 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. |