Hi, ihr Acces Freunde ich habe da ein Problem mit dem ich nicht klar
komme das aber für wahrscheinlich keins darstellt.
Wir haben Berichte die an eine Verwaltung gehen und evtl. gerichtliche Prozesse nach sich führen.
Diese Formulare können nur bestimmte Gruppen schreiben.
Jetzt möchte ich haben, das nur derjenige der das Formular geschrieben hat, ihn sehen kann und auch drucken kann.
Der Admin sollte es auch können. Ich hatte mal so eine Lösung aber die funktioniert nicht richtig.
Könnt ihr mir da helfen.
Gruß totocotonio
Hallo,
Crossposting ist unerwünscht!
Solche Sachen würde ich mit einem aktiven Datenbanksystem (MSSQLServer, MYSQL, etc.) regeln.
Im einfachsten Fall könnte das Windows-Rechtesystem nützlich sein.
Als schwierigere Alternative (in diesem Fall) sehe ich ein eigenerstelltes Rollen/Rechtesystem in der DB.
Bis A2003 gab es das "Access-Sicherheitssystem", das aber in neueren Version nicht mehr (vollständig) unterstützt wird.
Hallo ich werde mich daran halten.
Schaue dir das mal an.
Es sollte beim laden funktionieren, will aber nicht so richtig. Formular lässt sich auch nicht schließen.
If Not Me!user = CurrentUser Then
Me.AllowEdits = False ' gesperrt
Forms!berichte.Visible = False
Dim lngButton As Long
lngButton = MsgBox("Die Datei kann nur vom Ersteller geändert oder gedruckt werden.", _
vbCritical + vbOKOnly, "Hinweis")
DoCmd.Close
Else
Me.AllowEdits = True ' nicht gesperrt
Forms!berichte.Visible = True
End If
Hallo,
da gäbe es zunächst einmal ein paar Fragen:
- woher kommt Me!user beim Laden des Formulars, an was ist es gebunden?
- ist das Formular "Berichte" zu dem Zeitpunkt geöffnet?
- wozu die Variable "lngButton", die wird doch gar nicht gebraucht?
Außerdem sind Deklarationen mitten im Code schlechter (Programmier)Stil.
Hi,
Zitatwoher kommt Me!user beim Laden des Formulars, an was ist es gebunden
das ist der angemeldete User in der Datenbank
Zitatist das Formular "Berichte" zu dem Zeitpunkt geöffnet?
nein, es soll erst geöffnet werden
Zitatwozu die Variable "lngButton", die wird doch gar nicht gebraucht?
keine Ahnung hatte ich mal aus einem Code zum Drucken
Ich will nur haben das der User das Fourmular öffnen kann der es auch geschrieben hat.
Ein neues Formular soll jeder natürlich anlegen können.
Hallo,
Zitat von: totocotonio am November 27, 2014, 14:34:08das ist der angemeldete User in der Datenbank
das war nicht meine Frage, ich wollte wissen woher (und wie) das Steuerelement "user" seinen Inhalt bekommt, dass du es bereits beim Laden prüfen kannst.
Zitatnein, es soll erst geöffnet werden
Dann kannst du noch nicht drauf zugreifen, sondern musst es öffnen anstatt sichtbar machen.
ZitatIch will nur haben das der User das Fourmular öffnen kann der es auch geschrieben hat.
Das musst du mal näher erläutern. Woran willst du den Autor eines Formulars erkennen? ???
Hallo,
der User wird beim Anlegen des Formulars in der Tabelle gespeichert.
Das Formular soll ja erst geöffnet werden wenn der angemeldete User mit dem übereinstimmt
der das Formular geschrieben hat.
Der Autor wird ja erkannt weil ich ihn beim Erstellen gespeichert habe.
Gruß Totocotonio
Hallo.
Was heißt "in der Tabelle"? Von welcher Tabelle ist die Rede, das Wort fällt hier zum ersten Mal.
Was ist das überhaupt für eine Anwendung, wo die User ihre eigenen Formulare erstellen?! ???
Du solltest versuchen, dein ungewöhnliches Vorhaben doch noch etwas genauer zu beschreiben. Mit ein, zwei Sätzen ist es nicht getan.
Hallo,
ich versuche es nochmal.
Der user füllt ein Formular aus das in eine Tabelle gespeichert wird und als Bericht ausgegeben wird.
Diesen Bericht unterschreibt er.
Wenn jetzt jemand anderes einen Bericht schreibt möchte ich es haben, das er nur seinen(Datensatz) sehen und bearbeiten kann und keinen anderen.
Ich weiß nicht wie ich es noch erklären kann/soll.
Der user sieht doch beim öffnen des Formulars alle anderen Formulare/Datensätze.
Das soll so nicht sein
Gruß Totocotonio
Hallo,
du beschreibst recht verwirrend...
Ein Formular in eine Tabelle zu speichern, geht wohl nicht. Vermutlich meinst Du, die Daten , die in die Formular-Textfelder geschrieben werden, in einer Tabelle abzuspeichern.
Um nur die Datensätze des jeweiligen Windows-Benutzer (Windows-Anmeldenamen) bearbeiten zu können, könnte die folgende Methode angewendet werden:
Führe in der Tabelle (und im Formular) ein gebundenes Feld ("Uname", Datentyp TEXT) mit, in das der Name des Anwenders (woher der auch immer kommen mag... Vorstellbar ist z. B. das Auslesen des Windows-Anmeldenamens wie im nachfolgenden Beispiel) eingetragen wird, so dass der Username dem jeweiligen Datensatz zugeordnet wird.
Im Formular ist in die Eigenschaft "Standardwert" des Textfeldes "UName" so einzustellen:
=fktGetUname()
In einem Standardmodul wird weiterhin diese Funktion erstellt:
Public Function fktGetUname()
fktGetUname = Environ("username")
End Function
ZitatDer Autor wird ja erkannt weil ich ihn beim Erstellen gespeichert habe.
Ist völlig unverständlich...
ZitatIch will nur haben das der User das Fourmular öffnen kann der es auch geschrieben hat.
Ein neues Formular soll jeder natürlich anlegen können
Ist verquert/unsinnig, wenn die Beschreibung authentisch sein sollte..
Hallo Totocotonio.
wenn Du ohnehin den "User" mit dem Datensatz wegspeicherst (als Feldname nehme ich mal 'AngemUser' an, dann schlage ich Dir folgende einfache Lösung vor:
schreibe in die Abfrage die hinter Deinem Formuar liegt, in das Feld 'AngemUser" als Kriterienwert folgendes rein: = CurrentUser Oder "hier schreibst Du den Adminnamen rein"
(Du willst ja den Ersteller berechtigen und den Admin).
Wenn der Druck aus dem Formular gesteuert wird, dann ist das somit auch geregelt. Wenn nicht, musst Du halt das gleiche in die Abfrage hinter dem Bericht schreiben.
PS: mit CurrentUser erreichst Du wirklich den Anmelder?
Solltest Du mal in Deiner Tabelle prüfen. Wenn dem noch nicht so ist, weil da z.B. imme Admin steht, dann kannst Du es über Environ("username") versuchen.
Viele Güße
milca
Hallo,
danke für eure Hinweise.
Ich versuche das mal so umzusetzten wir ihr das geschrieben habt.
Ich entschuldige mich für meine ausdrucksweise Formular, Daten.....
Melde mich nochmal wenn es nicht funktioniert.
Gruß totocotonio
Hallo DF6GL Franz,
ich habe es genauso gemacht wie du geschrieben hast.
ein modul angelegt, ein textfeld in Tabelle und formular, Standardwert
Das Formular lässt sich trotzdem öffnen.
Gruß Totocotonio
Hallo,
ok, und wie öffnest Du das Form? Der von mir geschriebene Vorschlag stellt nur die Vorbereitung für diese "Benutzersteuerung" dar.
Es muss der Vorschlag von Milca noch eingebaut werden. Für jedes Formular muss eine Abfrage (SQL-String) ähnlich der folgenden (in dessen Datenherkunft) eingetragen werden:
Select * from Tabelle1 Where UName = fktGetUname() or "DerNameDesAdmin"= fktGetUname()
Zitat von: milca am November 30, 2014, 12:54:16
Hallo Totocotonio.
wenn Du ohnehin den "User" mit dem Datensatz wegspeicherst (als Feldname nehme ich mal 'AngemUser' an, dann schlage ich Dir folgende einfache Lösung vor:
schreibe in die Abfrage die hinter Deinem Formuar liegt, in das Feld 'AngemUser" als Kriterienwert folgendes rein: = CurrentUser Oder "hier schreibst Du den Adminnamen rein"
(Du willst ja den Ersteller berechtigen und den Admin).
Wenn der Druck aus dem Formular gesteuert wird, dann ist das somit auch geregelt. Wenn nicht, musst Du halt das gleiche in die Abfrage hinter dem Bericht schreiben.
PS: mit CurrentUser erreichst Du wirklich den Anmelder?
Solltest Du mal in Deiner Tabelle prüfen. Wenn dem noch nicht so ist, weil da z.B. imme Admin steht, dann kannst Du es über Environ("username") versuchen.
Viele Güße
milca
Hallo Milca,
der CurrentUser den Kriterien funktioniert nicht.
Ich habe gerade mal eine Beispiel abfrage erstellt, wenn ich dort CurrentUser eintrage kommt nichts die abfrage bleibt leer.
Gruß Totocotonio
Hallo,
1) zeige mal den SQL-String der Abfrage
2) Currentuser liefert den DB-Einlognamen und nicht den Windows-Einlognamen zurück, der in neueren Access-Version immer "Admin" lautet.
Hallo Totocotonio,
irgendwo fängst Du doch den aktuell angemeldeten User ab**.
Diesen Eintrag -wahrscheinlich in einem unsichtbaren Formular- vergleichst Du dann in einer Abfrage mit dem Feld indem Du den Usernamen gespeichert hast.
Zum Beispiel so - Abfragekritereien: [Formulare]![F_Start]![Anmelder]. Jetzt werden nur die Datensätze die der angemeldete User angelegt hat angezeigt.
** Ich habe ja schon geschrieben, dass es dazu zwei Möglichkeiten gibt.
CurrentUser oder Environ(Username). Bei mir funktioniert nur letzteres.
Gruß
milca