Ich erstelle ein Formular in MS Access, damit Benutzer Daten eingeben können, aber es gibt zu viele mögliche Felder. Meist werden nur etwa die Hälfte der Felder genutzt.
Ich möchte daher, dass bestimmte Felder nur angezeigt werden, je nachdem, was der Benutzer in einem zuvor angegebenen Feld eingegeben hat.
Bsp .: Der Benutzer gibt die Projektnummer und den Titel ein und prüft dann eine "Ja/Nein" -Engineering. seitdem er es überprüft hat, bedeutet dies, dass das Engineering betroffen ist und ein Dutzend Felder erscheinen, die der Benutzer ausfüllen muss.
Ist das möglich:
1) ohne VBA
2) mit VBA
Ohne VBA wohl nicht möglich.
Mit VBA zum Beispiel:
Dies öffnet den Code hinter Ihrem Formular. Sie werden in den Standardcode für das Ereignis BeforeUpdate
versetzt. Wir möchten stattdessen das Ereignis Change
, ändern Sie also oben rechts die Dropdown-Liste von BeforeUpdate
in Change
. Dies gibt Ihnen ein bisschen Code wie diesen:
Private Sub Field1_Change()
End Sub
Hier möchten Sie den Wert des Kombinationsfelds überprüfen und die Felder nach Bedarf ausblenden:
Angenommen, der Name Ihres Kombinationsfelds ist Field1 (Ihr Name ist natürlich anders), fügen Sie Code hinzu, damit Field2 wie folgt ausgeblendet wird:
Private Sub Field1_Change()
If Field1.Value = "Yes" Then
Me.Field2.Visible = False
End If
End Sub
Beachten Sie, dass Sie die Namen aller Ihrer Felder kennen müssen. Diese befinden sich auf der Registerkarte Andere im Feld Name im Eigenschaftenfeld (F4). Sie sollten allen Feldern sinnvolle Namen geben, damit Sie verstehen, was im Code vor sich geht.
Gehen Sie für ein Kontrollkästchen genauso vor, aber Sie müssen wahrscheinlich das Ereignis Click
verwenden. Einfach experimentieren.
Beispielcode für Kontrollkästchen:
Private Sub Check5_Click()
' Note: vbTrue = -1
If Me.Check5 = vbTrue Then
MsgBox ("Ticked")
Else
MsgBox ("Not Ticked")
End If
End Sub
Ich habe ein Formular, in dem bestimmte Felder angezeigt werden, nachdem ein Listenfeldwert ausgewählt wurde. Ich benutze die AfterUpdate-Funktion. Es hat soweit geklappt. Mein Code ist unten. ProjectName und ProjectNumber sind Felder, die nur angezeigt werden sollen, wenn Engineering ausgewählt ist. OtherName und OtherNumber sind Felder, die nur angezeigt werden sollen, wenn es sich um ein "NotEngineering" -Projekt handelt.
Fügen Sie diesen Code ein, indem Sie auf das Feld klicken, das den Projekttyp auswählt, im Eigenschaftenfenster auf die Registerkarte Ereignis klicken, auf "Nach der Aktualisierung" klicken und den Code Builder auswählen und in VBA einfügen.
Private Sub ProjectType_AfterUpdate()
If ProjectType.Value = "Engineering" Then
Me.ProjectName.Visible = True
Me.ProjectNumber.Visible = True
Else
Me.ProjectName.Visible = False
Me.ProjectNumber.Visible = False
End If
If ProjectType.Value = "NotEngineering" Then
Me.OtherName.Visible = True
Me.OtherNumber.Visible = True
Else
Me.OtherName.Visible = False
Me.OtherNumber.Visible = False
End If
End Sub
Es gibt einen Weg, dies nicht ganz ohne VBA zu tun. Ich würde VBA auf jeden Fall empfehlen, weil Sie viel mehr damit machen können.
Versuchen Sie, die nicht benötigten Felder durch bedingte Formatierung durch Ausdruck zu deaktivieren, anstatt sie auszublenden.
klicken Sie mit der rechten Maustaste auf das Steuerelement, das deaktiviert werden soll. Gehen Sie nach unten und klicken Sie auf "Bedingte Formatierung". Fügen Sie eine neue Regel hinzu. Wählen Sie "Ausdruck ist".
beispiel: [fld1] = "yes"
klicken Sie auf das deaktivierte Kästchen. Klicken Sie auf OK. Klicken Sie auf OK
jetzt wird das ausgewählte Steuerelement deaktiviert, wenn in Feld 1 "Ja" ausgewählt ist.
Ich habe das gleiche Problem und ich habe Folgendes getan:
Private Sub Field1_Click()
If Field1 = "Yes" Then
Me.Field2.Visible = True
Else: Me.Field2.Visible = False
End If
End Sub
aber jetzt habe ich ein anderes Problem: Wenn ich den Datensatz ändere, ist das Feld, das ich im letzten Datensatz als sichtbar ausgewählt habe, jetzt im aktuellen Datensatz sichtbar, obwohl ich keine Option ausgewählt habe.
Vielen Dank,