web-dev-qa-db-de.com

Machen Sie Felder im MS Access-Formular sichtbar, wenn bestimmte Felder ausgefüllt sind

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

4
user2385809

Ohne VBA wohl nicht möglich.

Mit VBA zum Beispiel:

  1. Stellen Sie sicher, dass sich Ihr Formular in der Entwurfsansicht befindet
  2. Klicken Sie mit der rechten Maustaste auf Combo Box, Build Event, Code Builder

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
3
Nick.McDermaid

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
1
Melisa L.

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.

1
ShadeBlack

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,

0
CandleJack