ist es möglich, bei einer im Netz stehenden Access-DB, per
Knopfdruck heraus zu finden, welche Anwender die Datenbank
gerade geöffnet haben. Hilfreich wäre dabei z. B. der Login-Name o.ä. . Ich habe bisher nur eine Funktion gefunden (GetUser), vom jeweiligen Rechner der die Funktion ausführt ermittelt, welcher User dies ist.
Kompliziert beschrieben, aber vielleicht versteht mich trotzdem jemand
vielen Dank für die schnelle Antwort. Ich hab´s mir auch
gleich runtergeladen. Kann ich auch gut gebrauchen. Meinst
Du es gäbe auch eine DLL / API-Funktion o.ä. die ich direkt
in ACCESS-VBA integrieren könnte ??
Sub ShowUserRosterMultipleUsers()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.Open "Data Source=C:\Samples\Whatever.mdb"
' 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
Do While Not rs.EOF
Debug.Print rs.Fields(0), rs.Fields(1), rs.Fields(2), rs.Fields(3)
rs.MoveNext
Loop
End Sub
Ein ähnliches Problem hatte ich auch schon mal, Du hast die GetUser Function angesprochen, benutz die doch einfach, ich mache Folgendes. Wenn ein User sich anmeldet führt er die GetUser function aus. Diese wird in eine gelinkte Tabelle Bsp: „activeUsers“ geschrieben.
Damit damit der User beim Verlassen der Datenbank auch wieder gelöscht wird gehst Du wie folgt vor:
beim starten der Anwendung wird eine Variable „username“ mit dem Usernamen gefüllt.
Dann wird der Tabelleneintrag generiert:
public function ins_user()
dim db as database
dim rs as recordset
set db = currentdb()
set rs = db.openrecordset(„activeusers“)
rs.addnew
rs!Username = Username
rs.update
rs.close
db.close
end function
Beim verlassen der Datenbank, z.b uload event des Haupformulars:
public function del_User()
dim db as database
dim rs as recordset
set db = currentdb()
set rs = db.openrecordset(„activeusers“)
do until rs.eof
if rs!Username = username
rs.delete
end if
rs.movenext
loop
end function
Schau Dir die gelinkte Tabelle an und Du hast immer die aktuellen benutzer der Datenbank