Access:welche User sind gerade mit BackEnd verb.?

Hallo liebe Access-Expterten!

Hab’ schon ein wenig gegoogelt aber nix verwertbares zu folgendem Thema gefunden:

Ich habe eine Access-Datenbank (mit Access 2003) kreiert, aufgeteilt in FrontEnd und BackEnd. Im BackEnd gibt es eine Import-Funktion, die die vorhandenen Datensätze vor dem Import löscht. Wenn jemand importiert, bemerken diejenigen Benutzer, die zu diesem Zeitpunkt mit dem BackEnd verbunden sind, plötzlich, dass die Datensätze weg sind und es hagelt Fehlermeldungen…

Wie kann ich feststellen, welche Anwender gerade mit dem Backend verbunden sind, diese warnen und den Import solange verhindern, bis alle Anwender ihre FrontEnds geschlossen haben? Jeder Anwender hat übrigens einen eindeutigen Benutzernamen, der über Environ(„USERNAME“) abgefragt werden kann.

Wäre toll, wenn man sowas hinkriegen könnte, denn es ist echt ein Nerv wenn einer importiert und ich gucke wegen gelöschter Datensätze auf einmal in die Röhre!

Danke vielmals im voraus!!!

Gruss

Werner

Hallo Werner,

ich habe da mal vor einiger Zeit in Freeware/Sharewaretool aus dem Netz gezogen, das genau diese Funktionalitaet abbildet.
Vieleicht hilft es dir weiter… schau mal in deine Mail.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Werner,

ich habe da mal vor einiger Zeit in Freeware/Sharewaretool aus
dem Netz gezogen, das genau diese Funktionalitaet abbildet.
Vieleicht hilft es dir weiter… schau mal in deine Mail.

Tschau
Peter

Hallo,

zunächst vielen Dank! Allerdings habe ich das „Problem“ von der falschen Seite betrachtet… Meine Access-Datenbank soll Benutzern ermöglichen, gleichzeitig auf einen Datenpool zuzugreifen.

Jetzt habe ich es erlebt, dass ein Kollege eine Form geöffnet hatte, in der er eine Abfrage laufen hatte. Ich habe auch in der Datenbank arbeiten wollen (andere Form und andere Abfrage) und hatte das Problem, dass gewisse Abfragen nur noch Fehler produzierten. Diese Abfragen verschieben Datensätze in andere Tabellen. Mein Kollege hatte wohl in seiner Abfrage auch meinen Datensatz drinne und DAS ist dann bei der Verschiebung offensichtlich kollidiert.

Sofern ich mich einigermassen klar ausgedrückt habe: wie kann man diese Datensatzkollision ausschließen?

Bin dankbar für jedwede Tipps!

Gruss

Werner

Ich denke, ich habe genau die Antwort, die du suchst!!!
Ich ahbe eine API - Funktion (Windows Funktionen), die dir die Netzwerkerkennung zurück gibt, also den Namen, unter dem der Benutzer angemeldet ist!! Um zu sehen, wer alles angemeldet ist, habe ich dann eine Tabelle erzeugt, wo unter anderem die Usernamen drin stehen. Gefüllt wird diese Tabelle im Load - Ereignisses eines Formulares, dass per autoexec - Macro automatisch geladen wird, und beim schließen der Datenbank ja automatisch mit geschlossen wird (d.h. der User wird im UnLoad - Ereignis wieder aus der Tabelle entfernt). Um ein versehentliches schließen des Formulars zu verhindern, habe ich es unsichtbar gemacht. Es hat hier also nur die Aufgabe der Benutzerverwaltung.

Folgenden Code in ein Modul einfügen:

Private Declare Function apiGetUserName Lib "advapi32.dll" Alias \_
 "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long


Public Function OSUserName() As String
'Liefert den Benutzernamen, unter dem der Anwender angemeldet ist, zurück
Dim lngLen As Long, lngX As Long
Dim strUserName As String

 strUserName = String$(254, 0)
 lngLen = 255
 lngX = apiGetUserName(strUserName, lngLen)
 If lngX 0 Then
 OSUserName = Left$(strUserName, lngLen - 1)
 Else
 OSUserName = ""
 End If
End Function

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]