Supportnet / Forum / Datenbanken
Datensatz teilweise vor Veränderungen im Formular Schützen
Frage
Ich habe das Problem, das in einer Mehrbenutzerumgebung mehrere Personen auf ein Formular zugreifen können um dort Werte einzugeben. Es darf nachträglich nicht möglich sein diese Daten zu verändern, da andere auch auf das selbe Formular zugreifen können.
Eine Veränderung bei Fehleingaben soll dann nur durch einen Admin erfolgen.
Leider habe ich keine VBA Kentisse, deshalb bitte verständlich antworten.
Ich benutze Access 2000
Ich habe dieses am 28.4.04 schon mal gefragt
und bekam auch von piano eine Antwort die leider nicht funktioniert hat.
Das Posting ist leider geschlossen, darum seht Ihr sie hier jetzt meine Antwort:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim ws As Workspace, usName
Set ws = DBEngine.Workspaces(0)
usName = ws.UserName
If usName <> "admin" Then
MsgBox ("Änderung nur durch Administrator erlaubt! - weiter mit 'ESCAPE'")
Cancel = True
End If
End Sub
Diese Meldung erschien nach Eingabe eines anderen Wertes, allerdings
auch bei Änderung eines noch leeren Feldes des Formulars:
Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck vor Aktualisierung eingegeben.Dieser Ausdruck hat einen Fehler verursacht:Mehrdeutiger Name:Form_BeforeUpdate.
*Der Ausdruck gibt möglicherweise den Namen eines Makros noch den Namen einer benutzerdefinierten Funktion noch [Ereignisprozedur] zurück.
*Beim Auswerten einer Funktion,eines Ereignisses oder eines Makros trat möglicherweise ein Fehler auf.
Freue mich auf weitere Vorschläge.
Antwort 1 von reto
mache ein neues Wahr/Falsch feld in deine db
In deinem Formular Visualiesierst du es mit einem Kontrollkästchen das unsichtbar ist.
jetzt änderst du die Prozedur folgender masse:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim ws As Workspace, usName
Set ws = DBEngine.Workspaces(0)
if me.Name des Kontollkästchen = true then
usName = ws.UserName
If usName <> "admin" Then
MsgBox ("Änderung nur durch Administrator erlaubt! - weiter mit 'ESCAPE'")
Cancel = True
End If
End if
End Sub
jetzt musst du nur noch in diesem Moment wo du nicht mehr willst das Änderungen am Datensatz gemacht werden das Kontrollkästchen auf true setzten
In deinem Formular Visualiesierst du es mit einem Kontrollkästchen das unsichtbar ist.
jetzt änderst du die Prozedur folgender masse:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim ws As Workspace, usName
Set ws = DBEngine.Workspaces(0)
if me.Name des Kontollkästchen = true then
usName = ws.UserName
If usName <> "admin" Then
MsgBox ("Änderung nur durch Administrator erlaubt! - weiter mit 'ESCAPE'")
Cancel = True
End If
End if
End Sub
jetzt musst du nur noch in diesem Moment wo du nicht mehr willst das Änderungen am Datensatz gemacht werden das Kontrollkästchen auf true setzten
Antwort 2 von papatorf
keine schlechte Idee aber leider bin ich nicht immer vor Ort um die Eingaben zu schützen.
In dem Moment in dem ein Feld im Formular verlassen wird muß es schon vor Veränderungen geschützt werden.
Spätestens beim aufrufen eines anderen Datensatzes an dem weitere Eingaben "nur" in leeren Feldern erfolgen.
In dem Moment in dem ein Feld im Formular verlassen wird muß es schon vor Veränderungen geschützt werden.
Spätestens beim aufrufen eines anderen Datensatzes an dem weitere Eingaben "nur" in leeren Feldern erfolgen.
Antwort 3 von reto
Das musst auch nicht du schreiben sondern VBA
Antwort 4 von papatorf
Leider bekomme ich dann eine Fehlermeldung
".....Mehrdeutiger Name:From_BeforeUpdate......"
Muss der VBA Text in die Allgemeine Liste oder den Text des Kontrollkästchens
ersetzen?
siehe:
Private Sub Kontrollkästchen261_Click()
End Sub
Bedenke bitte, das ich nicht immer vor Ort bin um den Datensatz, vor allem aber Teile
eines Datensatzes, (einer der noch nicht vollständig ausgefüllt ist und von anderen
Personen Tage später mit demselben Formular bearbeitet oder fortgeführt wird) mit dem
Kontrollkästchen zu schützen
Gruß Kay
".....Mehrdeutiger Name:From_BeforeUpdate......"
Muss der VBA Text in die Allgemeine Liste oder den Text des Kontrollkästchens
ersetzen?
siehe:
Private Sub Kontrollkästchen261_Click()
End Sub
Bedenke bitte, das ich nicht immer vor Ort bin um den Datensatz, vor allem aber Teile
eines Datensatzes, (einer der noch nicht vollständig ausgefüllt ist und von anderen
Personen Tage später mit demselben Formular bearbeitet oder fortgeführt wird) mit dem
Kontrollkästchen zu schützen
Gruß Kay
Antwort 5 von reto
Nein du kannst das Kontrollkästchen beim verlassen des Datensatztes, AfterUpdate bei einem gewissen Textfeld oder beim Verlassen des Formular schreiben. Ich kenne dein Formular nicht und kann dir dadurch nicht sagen wie du feststellen kannst das der Neue Datensatz gespeichert wird. Hast du ein Button Speichern, oder schreibst du in gebundene Felder?
Antwort 6 von papatorf
Mein Formular besteht aus 4 Seiten die Nacheinander von mehreren Personen "in gebundene Felder" gefüllt werden. Deshalb ist es auch wichtig, das vorhandene Eingaben nicht aus versehen geändert werden können.
Antwort 7 von reto
Dann fragst du es bei Focus erhalt ab.
Antwort 8 von reto
und zwar auf isnull
Antwort 9 von papatorf
Wie soll das aussehen.
Ich habe mit Fokus noch nicht gearbeitet.
Bei Fokuserhalt oder Verlust?
welcher "VarAusdruck" muß bei IstNull eingegeben werden?
Ich habe mit Fokus noch nicht gearbeitet.
Bei Fokuserhalt oder Verlust?
welcher "VarAusdruck" muß bei IstNull eingegeben werden?

