webentwicklung-frage-antwort-db.com.de

Bestimmen Sie, ob ein Access-Kontrollkästchen aktiviert ist oder nicht

So eine einfache Frage, aber ich kann die Antwort nicht finden (Google, MS-Hilfe, SO):

Wie kann ich per VBA überprüfen, ob ein nicht gebundenes Kontrollkästchen in einem Access-Formular vom Benutzer aktiviert wurde oder nicht? Ich kann die richtige Immobilie nicht finden.

Danke im Voraus!

AKTUALISIEREN:

Ich habe diesen Code nach den Vorschlägen von @HansUp und @RC verwendet:

Private Sub CmdTest_Click()
    MsgBox "Check1.Value = " & Me.Check1.Value
    MsgBox "Check2.Value = " & Me.Check2.Value
End Sub

Private Sub Form_Load()
    Me.Check1.Value = 25
    Me.Check2.Value = 50
End Sub

2. UPDATE:

Der Code sollte folgendermaßen lauten (danke an @ David-W-Fenton):

Private Sub CmdTest_Click()
    If Me.Check1 = True Then
        MsgBox "Check1 IS CHECKED"
    Else
        MsgBox "Check1 IS NOT CHECKED"
    End If
    If Me.Check2 = True Then
        MsgBox "Check2 IS CHECKED"
    Else
        MsgBox "Check2 IS NOT CHECKED"
    End If    
End Sub

Private Sub Form_Load()
    ' set first checkbox default checked
    Me.Check1.Value = True 
    ' set second checkbox default unchecked
    Me.Check2.Value = False
End Sub
20
waanders

Kontrollkästchen sind ein Kontrolltyp, der für einen bestimmten Zweck entwickelt wurde: um eine gültige Eingabe von Booleschen Werten sicherzustellen.

In Access gibt es zwei Arten:

  1. 2-state - kann aktiviert oder deaktiviert werden, aber nicht null. Die Werte sind True (markiert) oder False (nicht markiert). In Access und VBA ist der Wert von True -1 und der Wert von False 0. Für die Portabilität mit Umgebungen, die 1 für True verwenden, können Sie immer auf False oder Not False testen, da False für alle Umgebungen I der Wert 0 ist kennen.

  2. 3-State - wie der 2-State, kann aber Null sein. Klicken Sie darauf, um zwischen Wahr/Falsch/Null zu wechseln. Dies dient zum Binden an ein ganzzahliges Feld, das Nullen zulässt. Bei einem Booleschen Feld ist dies nicht sinnvoll, da es niemals Null sein kann.

Kleinere Auseinandersetzungen mit den Antworten:

Die .Value-Eigenschaft eines Zugriffssteuerelements muss fast nie verwendet werden, da dies die Standardeigenschaft ist. Diese beiden sind gleichwertig:

  ?Me!MyCheckBox.Value
  ?Me!MyCheckBox

Das einzige Problem hierbei ist, dass Sie darauf achten müssen, dass Sie beim Testen des Werts eines Kontrollkästchens keine impliziten Referenzen erstellen. An Stelle von:

  If Me!MyCheckBox Then

... schreibe eine dieser Optionen:

  If (Me!MyCheckBox) Then  ' forces evaluation of the control

  If Me!MyCheckBox = True Then

  If (Me!MyCheckBox = True) Then

  If (Me!MyCheckBox = Not False) Then

Wenn Sie Subroutinen oder Funktionen schreiben, die Werte von einem Booleschen Steuerelement erhalten, deklarieren Sie Ihre Booleschen Parameter ebenfalls immer als ByVal, es sei denn, Sie möchten das Steuerelement tatsächlich manipulieren. In diesem Fall sollte der Datentyp Ihres Parameters eine Zugriffssteuerung und kein Boolescher Wert sein. Alles andere birgt das Risiko impliziter Verweise.

Wenn Sie als Letztes den Wert eines Kontrollkästchens im Code festlegen, können Sie tatsächlich eine beliebige Zahl festlegen, nicht nur 0 und -1, sondern eine beliebige andere Zahl als 0 wird als wahr behandelt (weil es nicht falsch ist). Während Sie so etwas in einem HTML-Formular verwenden, ist es kein richtiges UI-Design für eine Access-App, da der Benutzer nicht erkennen kann, welcher Wert tatsächlich im Steuerelement gespeichert ist, was dem Zweck von widerspricht Wählen Sie es für die Bearbeitung Ihrer Daten.

22
David-W-Fenton

Prüfen Auf yourCheckBox.Value?

4
user180100