2017-03-03 8 views
0

Ich verwende ein Formular in MS Access 2010, um Daten in eine Tabelle einzugeben. Ich habe die grundlegenden Funktionen eingerichtet und habe etwas VB-Code hinzugefügt, um es wie gewünscht zu formatieren. Eines der Dinge, die ich versuche, ist die Aktualisierung der Beschriftung eines Tickbox-Werts, wenn dieses Kontrollkästchen aktiviert ist. Mit dem unten stehenden Code funktioniert es jedoch, wenn ich auf "Datensatz hinzufügen" klicke, anstatt die Daten zu löschen Elemente - Ich kann nicht herausfinden, wie ich das ändern kann, damit es funktioniert. Ich bin mir sicher, dass ich eine Schleife hinzufügen oder den Datensatz hinzufügen-Button ändern muss, aber ich habe keine Ahnung, wo ich anfangen soll (es gibt 30+ Labels und Tickboxes wenn es einen schnellen Weg gibt, ohne auf alle Etiketten zu verweisen, die bevorzugt werden würden. Mein zweites Problem ist, weil ich "AfterUpdate" verwendet habe, wenn ich das Formular verwende, um die bereits hinzugefügten Datensätze zu durchsuchen, ändert sich die Formatierung nicht mit den Werten, da kein Kontrollkästchen angeklickt wurde.MS Access - Formatieren von Labels

Private Sub TextBox1Name_AfterUpdate() 

    Const LightYellow = 10092543 
    If TextBox1Name = -1 Then 
     Me.Label1Name.BackStyle = 1 
     Me.Label1Name.BackColor = LightYellow 
    Else 
     Me.Label1Name.BackStyle = 0 
    End If 
End Sub 

Jede Hilfe oder Richtung würde sehr geschätzt werden mit diesem.

+0

Verwenden Sie ein Endlosformular? Sie können viel tun, indem Sie den Kontrolltyp überprüfen. Bedenke, du hast bereits ein Wahres und Falsches, also brauchst du es nicht, wenn und sonst. – Fionnuala

+0

Ihre zweite Frage ist einfach - fügen Sie einfach ein 'Form_Current'-Ereignis hinzu, um das Etikett nach Bedarf festzulegen/zurückzusetzen. Wie 'Reset 30+ Etiketten ...' nach dem Klicken auf die Schaltfläche "Hinzufügen", können Sie entweder durch alle Me.Controls auf der Suche nach Checkbox Typ und Reset, oder manuell mehr als 20 Zeilen Code zurücksetzen (Boo!) Dies ist ein guter Ort, um den Wert von aussagekräftigen Kontrollnamen (dh chkLarge, chkSmall usw.) zu erkennen, da Sie mit Code sowohl nach Namen als auch nach Kontrolltypen suchen können. –

Antwort

0

Sie müssen die Formatierung der TextBox1Name bei 3 verschiedenen Gelegenheiten tun. Wenn ein Datensatz aktualisiert wird (wie Sie haben), wenn der Datensatz im Formular geändert wird (das ist das OnCurrent Ereignis) oder wenn Sie einen neuen Datensatz hinzufügen (das ist das OnClick Ereignis auf Ihrem neuen Datensatz Schaltfläche.

der So wie ich es tun würde, ist eine private Unter mit Code sehr ähnlich zu schaffen, was Sie oben haben und dann anrufen, wenn von allen drei Ereignissen Die einzige Änderung wirklich notwendig ist.

If Nz(TextBox1Name,0) = -1 Then 

wenn Ihr TextBox1Name einen Standardwert von hat Null und nicht etwas anderes.

Das gilt natürlich für eine nicht kontinuierliche Form. Fo In einer kontinuierlichen Form sind die Dinge ein wenig komplizierter. In diesem Fall ist Ihre beste Wette die bedingte Formatierung. Tatsächlich können Sie wahrscheinlich bedingte Formatierung sogar für ein einzelnes Formular verwenden, anstatt VBA zu verwenden.

+0

Das ist perfekt danke. Arbeitete eine Belohnung! –