Elite Veteran
Beiträge: 876
Ort: Wien | Ercu1205 - 22.06.12
Ich habe ein Hauptformular mit dem Namen "DF" in diesem ist ein Unterformular genannt "AZ". Im Unterformular "AZ" sind zwei weitere Unterformulare mit einem Register, das eine nennt sich "el" und das andere "me". Nun möchte ich, dass wenn im Hauptformular "DF" das Kombinationsfeld "Prüf" einen bestimmten Wert ausgibt (es gibt nur zwei Werte 1 und 2) je nach Auswahl das unterformular "el" oder "me" deaktiviert wird. Z.B. beim Wert 1 das Unterformular "el" vollständig deaktivert ist, so dass keine Eingaben in dieses Formular mehr möglich sind. Und das gleiche für den Wert 2 aber für das unterformular "me".
Zuerst solltest du unbedingt dein UFo namens "me" umbenennen. "Me" ist ein in VBA extrem häufig verwendetes Schlüsselwort für das Objekt, in dem der aktuelle Code läuft (s.u.). Es kann eine Menge Ärger geben, wenn ein benutzerdefiniertes Objekt so heißt. Ich nenne dein UFo daher im Beispielcode "MeX". Eine zweite Sache, die nicht so tragisch ist, die man aber trotzdem generell vermeiden sollte, sind Umlaute in Objekt- und Feldnamen wie in deinem "Prüf".
Dann ist noch die Frage, was "vollständig deaktiviert" heißt. "Keine Eingaben möglich" ist viel weniger, z.B. wäre dann noch Scrollen, Knöpfchen-Drücken oder sogar Löschen möglich. Davon hängt ab, welche Eigenschaften und Methoden man für die Sperre verwendet. Wenn keine Eingabe reicht, wäre das z.B. die Einstellung Gesperrt (Locked). Als Code vom HFo aus, z.B. im Ereignis "Nach Aktualisierung" des Kombis:
Select Case Me!Prüf
Case 1
Me!AZ!el.Locked = True
Me!AZ!MeX.Locked = False
Case 2
Me!AZ!el.Locked = False
Me!AZ!MeX.Locked = True
End Select
Wenn du auch das Anfügen und Löschen verhindern willst, wären das die Eigenschaften "Anfügen zulassen" und "Löschen zulassen" des UFos als Formular-Objekt, also das obige Select Case-Konstrukt, aber mit anderen Anweisungen drin:
Me!AZ!el.Form.AllowEdits = False
Me!AZ!el.Form.AllowAdditions = False
Me!AZ!el.Form.AllowDeletions = False
usw.
Das sind die gleichen Eigenschaften wie an der Access-Oberfläche. Wenn du nicht weißt, wie sie in VBA heißen, dann setze einfach den Cursor in die Eigenschaftenzeile und drücke F1.
----- Servus
Karl
*********
Access-Entwickler-Konferenz: https://www.donkarl.com/?aek
Access DevCon Vienna: https://www.donkarl.com/devcon
Access Forever: https://www.accessforever.org
Access News: https://www.youtube.com/playlist?list=PLVCeBbJIMDvdJ8ghMbEakJ6_EQyvy... |