Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Mehrbenutzerverwaltung - Benutzer anzeigen, der Datenstz bearbeitet hat





Frage

Hallo zusammen, ich bin dabei ein Datenbank (Access 2000) mit Mehrbenutzeroberfläche zu erstellen. Für die einzelnen Benutzer gibt es verschiedene Formulare. Ich möchte nun, dass in dem Formular angezeigt wird, welcher Benutzer den Datensatz bearbeitet hat. Dies soll automatisch eingetragen werden. Ich weiß, dass man über ein ungebundenes Textfeld den Usernamen eintragen lassen kann, bei Standadwert =Umgebung("UserName") eingeben - dann trägt mir Access aber den gleichen User für alle Datensätze ein. Genau das soll aber vermieden werden, da nur der Benutzer eingetragen werden soll, der den Datensatz auch bearbeitet hat. Bin dankbar für alle Lösungsvorschläge Sebastian

Antwort 1 von piano

Hallo
Folgende Funktion gibt den User-Namen zurück:
Public Function usName()
Dim ws As Workspace
Set ws = DBEngine.Workspaces(0)
usName = ws.UserName
End Function


Zum Einfügen wähle das Formular-Ereignis "Vor Aktualisierung" und füge hier ein:
Private Sub MeinFormular_BeforeUpdate(Cancel As Integer)
    Me.MeinUser = usName()
End Sub

das Feld "MeinUser" ist das Datenbankfeld, das den User enthalten soll. Am besten setzt Du bei diesem im Formular die Formateigenschaft "Sichtbar" auf "nein".

Sollte der User nicht auslesbar sein, lege eine Public-Variable "p_User" an und lass bei DB-Öffnen den Username mittels Inputbox eingeben. Dann diese Variable im Formular-Ereignis "Vor Aktualisierung" einsetzen.

Gruß piano

Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -




Antwort 2 von Sebastian79

Hallo piano,

erstmal Danke für die Antwort!!! Irgendwie hab ich ja gehofft, dass Du antwortest - hattest mir ja schon mal helfen können! :o)

Leider hat der erste Teil nicht fuktioniert, dass Feld "MeinUser" ist in meinem Fall ein ungebundenes Textfeld. Bzw. ich hab auch probiert die Function bzw. die Quelltext in ein anderes Feld zu schreiben - leider ohne Erfolg.

Könntest Du bitte noch etwas genauer auf den anderen Lösungsvorschlag eingehen? Bin zwar schon etwas fester beim arbeiten mit VBA geworden, aber das hab ich nicht ganz verstanden.

Danke, und Gruß

Sebastian

Antwort 3 von piano

Ich verstehe die Anforderung nicht.
Ich habe den Eindruck, Du verwendest das Textfeld zum falschen Zeitpunkt! In einem eigenen Formular(falls nicht vom System vorgegeben ), das beim Start(Menü Extras / Start / Formular.. anzeigen) geöffnet wird, soll sich der User identifizieren und dann erst darf er weiterarbeiten.
Ich nehme doch an, daß alle Benutzer mit dem(n) selben Formular(en) arbeiten.
Beim Anlegen oder Ändern eines Satzes wird dieser User eingetragen. Dann kann er im Formular angezeigt werden (zuletzt geändert von ...).

Die obigen Routinen decken den Eintrag beim "Anlegen oder Ändern eines Satzes" ab.

Die Info, welcher Benutzer einen Datensatz bearbeitet hat, kann nur in einem Feld auf einem Datensatz gespeichert werden!
Fragen:
1. Kannst Du den Benutzer auslesen, oder gibt er ihn selber ein ?
2. Was willst Du mit dem ungebundenen Textfeld?
3. Gibt es für alle User ein oder mehrere Formulare, die von allen genutzt werden sollen ?

oder habe ich alles falsch verstanden?
Gruß piano

Antwort 4 von Sebastian79

Hallo Piano,

also ich habe zwar ein Startformular, das über Deinen genannten Weg geöffnet wird (Extras - Start...), allerdings ist dies nur ein Übersichtsformular für die User, über welches sie dann per Befehlsschaltfläche zu Ihrem Formular gelangen.

Ich habe eine Ausgangstabelle, auf diese habe ich verschiedene Abfragen gestartet, und aus den Abfragen habe ich dann die Formulare für die Benutzer erstellt. (Somit ist erstmal sichergestellt, dass die User auch nicht die für sie bestimmten Datensätzen bearbeiten)

Die Anmeldung erfolgt nicht über ein separates Fomular, sondern ich habe in Access die Benutzer/bzw. Gruppenverwaltung aktiviert, in der ich die verschiedenen Benutzer angelegt und mit Rechten versehen habe.

Und genau diese Benutzer, sollen dann in dem Formular, das sie bearbeiten, erscheinen - und nur bei dem Datensatz, den sie auch fertig bearbeitet haben.

Klingt kompliziert - ist es bestimmt auch, weil sich die Rechtevergabe in Access doch schwierig gestaltet.

Oder könnte man die Rechtevergabe auch anders gestalten?

Gruß Sebastian



Antwort 5 von piano

Hallo
Wenn Du die Benutzer/bzw. Gruppenverwaltung aktiviert hast, muß der Code (leg ihn in ein beliebiges/neues Modul)
Public Function usName()
Dim ws As Workspace
Set ws = DBEngine.Workspaces(0)
usName = ws.UserName
End Function
den User-Namen bringen.
Wann ist das Formular fertig bearbeitet ? doch beim Speichern (Vor Aktualisierung) - nehme ich an. Und da muß der User auf den Datensatz geschrieben werden, sonst weiß ich ja nicht mehr, wer ihn bearbeitet hat. Daher entspricht das genau meiner 1. Antwort! Sonst weiß ich auch nicht mehr, was Du bezweckst.
Gruß piano

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: