Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: neni am März 30, 2011, 10:10:39

Titel: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: neni am März 30, 2011, 10:10:39
Hallo

Ich habe folgende Tabellen


Kandidat  1:n  Toxizitätsdetail
               1:n  SNP
               1:n  Haplotype


Es gibt mehre Formulare, in welchen die Daten dieser 4 Tabellen bearbeitet werden können.
Sobald ein Kandidat in einer Studie eingeschlossen wird, sollte an seinen Daten nichts mehr verändert werden können, d.h. die Datensätze aus "Kandidat", "Toxdetail", "SNP" und "Haplotype", welche zu diesem Kandidat gehören, sollten alle gleichzeitig gesperrt sein.  Wie kann ich das machen? Oder muss in jeder Tabelle einzeln gesperrt werden?

PS: ich habe bis anhin noch nie mit sperren gearbeitet, bin also um eine DAU Erklärung dankbar  ;)
Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: database am März 30, 2011, 10:25:10
Hallo,

es wäre eine Möglichkeit, die Steuerelemente der Formulare zu sperren, wenn ein Kandidat die Veraussetzungen erfüllt und so eine Änderung der Daten über Formulare zu verhindern.

Die Prüfung der Voraussetzung würde dann ins Ereignis 'Beim Anzeigen' fallen, das z.B. auch bei einem Datensatzwechsel ausgelöst wird.

Die Änderung auf Tabellenebene wird dadurch jedoch nicht verhindert.
Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: neni am März 30, 2011, 10:37:31
das klingt schon mal gut und würde verhindern, dass jemand sich verklickt.

d.h. ich habe in die Tabelle Kandidat ein Feld "Gesperrt" einfügen, welches man auf ja/nein setzten kann. Jetzt die magische Fragen: wie geht das, (VB null Ahnung... ???) dass ich definieren kann, dass in den entsprechenden Formularen die Daten nur noch angezeigt, aber nicht mehr bearbeitet werden können, wenn dieses Feld auf ja steht?
Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: database am März 30, 2011, 10:50:33
Hallo,

.... unabhängig davon wie die Information, dass sich ein Kandidat in einer Studie befindet, in die Datenbank gelangt ...

Wie du richtig bemerkt hast KÖNNTEST du (auch) ein Feld dazu verwenden.
Das Feld muss dann auf den Formularen vorhanden sein (Sichtbarkeit auf NEIN stellen) um den Inhalt auszulesen.
Wenn du dazu eine Checkbox einsetzt und in der Tabelle ein Ja/nein Feld dann ...

Private Sub Form_Current()

    If Me.AenderungSperren = True Then
        Me.AllowEdits = False
    Else
        Me.AllowEdits = True
    End If

End Sub

Titel: Re: Daten sperren funktioniert nicht...?
Beitrag von: neni am März 30, 2011, 11:22:50
irgendwie funktioniert es nicht...

Ich habe ein Feld "Looked" in der Tabelle Kandidat mit ja/nein erstellt und dies ins Formular als Kontrollkästchen eingefügt und im Formular unter "Beim Anzeigen" die Ereignisprozedur

Private Sub Form_Current()
If Me.Looked = True Then
Me.AllowEdits = False
Else
Me.AllowEdits = True
End If
End Sub

eingefügt. Gespeichert, Formular erneut in diesem Kandidat geöffnet: Ich kann aber nach wie vor die Felder im Formular mutieren...  ???
Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: DF6GL am März 30, 2011, 11:43:26
Hallo,


ich lese weiter unten, dass das Feld "Gesperrt"  heißt  und nicht "Looked" ...

Hast Du in Feld auch den Haken gesetzt?  Weiterhin ist für die sofortige Wirkung noch diese Ereignisprozedur nötig.


Private Sub Looked_Afterupdate()
Me.AllowEdits = not Me!Looked
End Sub

Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: neni am März 30, 2011, 13:00:15
Feld heisst jetzt definitiv "Looked". Ja, Häkchen ist gesetzt und die weitere Prozedur eingefügt, nutzt aber immer noch nichts, die Felder  können weiter mutiert werden... Muss ich irgendwo noch eine Einstellung ändern?
Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: DF6GL am März 30, 2011, 14:29:22
Hallo,


1) Gibt es das Feld "Looked" in der Tabelle, an das das Form gebunden ist (--> Datenherkunft) , als Ja/Nein-Feld?
2) Gibt es im Formular ein Kontrollkästchen, das "Looked" heißt und an das Tabellenfeld "Looked" gebunden ist (-->  Steuerelementinhalt) ?
3) Steht in der Eigenschaftenzeile "Nach Akualisierung" des Formular-Kontrollkästchens "[Ereignisprozedur]" drin?
4) Steht in der Eigenschaftenzeile "Beim Anzeigen" des Forms "[Ereignisprozedur]" drin?



Setze einen Haltepunkt an den Anfang der Form_Current-Prozedur und teste, ob der Code überhaupt und richtig durchlaufen wird.


Setze in JEDEN(!) Modulkopf die Zeile
Option Explicit
ein.

Kompiliere den Code (VBA-Editor/Menüleiste/Debuggen/Kompilieren)
Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: database am März 30, 2011, 18:30:37
Hallo,

ich habe dir zu Demonstrationszwecken ein kleines Beispiel erstellt.  ;)
Daran kannst du sehen wie die Sperre funktioniert.
Die Code-Erweiterung von Franz habe ich mit aufgenommen und ein bisschen abgeändert/erweitert, sodass der Sperr-Effekt gleich eintritt, wenn du den Haken setzt.
Zurücknehmen kannst du eine im Beispiel gesetzte Sperre nur noch in der Tabelle und nicht mehr am Formuar.

Bei meinem ersten Vorschlag bin ich davon ausgegangen, dass das Setzen der Sperre NICHT in den Formularen der Kandidaten erfolgt sondern in einem anderen (wo eben die Bestimmung zur Teilnahme an einer Studie stattfindet). Meine Annahme war weiter, dass die so gekennzeichneten Datensätze bereits in den Formularen der Kandidaten enthalten wären weshalb ich keine Aktualisierung vorgeschlagen habe und die Checkbox verborgen hätte.



[Anhang gelöscht durch Administrator]
Titel: immer noch nicht...
Beitrag von: neni am April 04, 2011, 09:53:02
hi peter und DF6GL

vielen dank für eure hilfestellung! aber irgendwie bin ich furchtbar renitent...
@peter: ich hab dein beispiel geöffnet, doch selbsts da kann ich die gesperrten werte (z.b. max) im formular löschen/mutieren. den code in meine db kopiert ergibt das selbe: ich kann immer mutieren, egal, ob das häkchen gesetzt ist oder nicht. (gibt es so was wie ein almighty berechtigungs knopf, den ich unabsichtlich mal aktiviert habe  ???  ;D )

@DF6GL: ich hab alle deine punkte kontrolliert und soweit ich sehen kann, ist alles, wie es sein sollte...  nun eine ganz dumme frage: kann es an dem Me. liegen?

grüsse
neni

[Anhang gelöscht durch Administrator]
Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: DF6GL am April 04, 2011, 11:36:39
Hallo,

kann nichts Ungewöhnliches erkennen...


Lad die DB hier (vorher komprimiert/repariert  und gezippt) mal hoch...


An dem "Me" liegt das nicht, das ist der Verweis auf das Form(objekt) , in dem der Code sich befindet.
Titel: halleluja!
Beitrag von: neni am April 04, 2011, 12:19:01
hab das problem gefunden! (wildes rumklicken führt manchmal zum ziel  ::) )

wenn ich die db öffne, ist immer unter der Menuliste eine Leiste mit "Sicherheitswarnung". Wenn ich nun dort unter "Optionen" "diesen Inhalt aktivieren" auswähle, dann funktioniert das sperren Häkchen plötzlich und nix is mehr mit mutieren (also doch eine Art allmighty knopf  ;D )

ich musste erst im vertrauenszenter  "alle Makros aktivieren" auswählen... dies ist nun aber eine generelle Access einstellung und nicht spezifisch für meine DB gesetzt, was schlecht ist.  (wenn irgend ein mitarbeiter auf einem neuen rechner die DB öffnet, ist das makro hinter dem sperren häkchen wieder nicht aktiv und er könnte unabsichtlich daten mutieren, welche eingentlich gesperrt wären...) kann ich das anders lösen? -> es müssten einfach nur in dieser DB alle makros standardmässig aktiviert sein
Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: DF6GL am April 04, 2011, 12:59:32
Hallo,

da bist Du auf das neue Sicherheitskonzept von >=A2007 gestoßen.  Lies Dich mal in die "vertrauenswürdigen Speicherorte" in diesem Zusammenhang ein.


Unterbinden kannst Du die "Mutationen" beim Start der DB ja dadurch , indem Du im Formentwurf die Eigenschaft "Bearbeitungen zulassen" (AllowEdits) gleich auf Nein stellst und das Setzen des "Hakens" erst die Änderungen erlaubt
Titel: Re: Daten aus verschiedenen Tabellen gleichzeitig sperren
Beitrag von: database am April 04, 2011, 13:47:52
Hallo,

Zitatund das Setzen des "Hakens" erst die Änderungen erlaubt

Bedeutet dann natürlich auch, dass die Benutzer auf ihren Rechnern die Einstellungen für Makros trotz
Allem ändern müssen, da ansonsten eine Erlaubnis zum Ändern nicht erteilt werden kann.
Ggf. ist hierbei die Verwendung einer dig. Signatur interessant?

:D ;D
Zitatwildes rumklicken führt manchmal zum ziel
ja, manchmal - lesen ist da viel treffsicherer  ;) ;) ::)
Titel: Daten sperren
Beitrag von: neni am April 06, 2011, 13:43:00
vielen Dank!