Supportnet Computer
Planet of Tech

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

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.



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

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 möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: