Ist Null-Bedingte Formatierung - MS Access-Formulare
Etwas, das ich annehmen würde, kommt eine Menge...
Ich würde gerne wissen, ob es einen Weg gibt, in Access' Bedingte Formatierung, format, alle leeren Felder ein. In meinem Fall, alle Felder müssen in der Regel eingegeben werden, sondern nicht in allen Fällen. Also, anstatt zu schreiben, eine Reihe von bedingten code, um den Nutzer einzuschränken, um es zu schreiben gibt, möchte ich nur einige rote Hintergründe in meine Felder, als Erinnerung "hey, hier gibt' s nichts.. sicher, dass das, was du wolltest?"
Es auf einem Tablett so, dass die Message-Boxen wäre ärgerlich. Also die bedingte Formatierung ist es. Ich weiß, Sie haben können "Ist Null([Feld]), aber das erfordert mir zu gehen durch meine 20+ Formulare auf 30+ Felder ein und gewährleisten die ordnungsgemäße Feldnamen etc, dann geben Sie die Bedingung ein für Sie individuell. Gibt es eine Möglichkeit, ich kann einfach multi-wählen Sie von meinen Feldern, führen Sie eine bedingte Formatierung auf Mehrere, und verwenden Sie vielleicht "Ist Gleich: NULL"?
Ich habe versucht "gleich: Null" und es funktioniert nicht ... noch nicht "gleich: "" " (mit der Access-Konstanten). Ideen, warum? Oder wie kann ich dies umgehen? Auch, es ist nur notwendig für nicht-berührt-Felder, so dass, wenn der Benutzer beginnt, geben Sie löscht dann wieder zu leeren, ist mir egal; kann es bleiben unformatiert oder gehen Sie zurück zu red, also wenn es gibt ein besserer Weg, dies zu tun ich bin alle Augen.
EDIT: ich habe angefangen einige VBA-code, die ich einfügen in alle meine Formulare:
Private Sub Form_Load()
Dim ctl As Control
Dim reqCol As Long
Dim focusCol As Long
Dim doneCol As Long
Dim format As FormatCondition
reqCol = RGB(246, 180, 180)
focusCol = RGB(252, 249, 238)
doneCol = RGB(255, 255, 255)
For Each ctl In Me.Controls
With ctl
Me.Controls(ctl.Name).FormatConditions.Delete 'Delete the existing conditions.
Me.Controls(ctl.Name).BackColor = doneCol 'Set the background color to the done color.
Select Case .ControlType
Case acTextBox
'Create the format objects.
format = Me.Controls(ctl.Name).FormatConditions.Add(acFieldValue, acEqual, "")
format = Me.Controls(ctl.Name).FormatConditions.Add(acFieldHasFocus)
'Format the filled in boxes (ie set back to red)
With Me.Controls(ctl.Name).FormatConditions(0)
.BackColor = reqCol
.Enabled = True
End With
'Format the current field color (ie set to beige)
With Me.Controls(ctl.Name).FormatConditions(1)
.BackColor = focusCol
.Enabled = True
End With
End Select
End With
Next ctl
End Sub
Problem ist, dass FormatConditions.Add(acFieldValue, acEqual, "")
funktioniert nicht aus dem gleichen Grund... wie kann ich dies umgehen? Zu sehen, wie VBA und der built-in Bedingungen sind beide fehlerhaft, scheint wie ein bug. Oder bin ich etwas fehlt, das direkt vor mir..
len([Fieldname] & "")=0
Arbeit für Ihre Aufgabe?Nicht wirklich.. es bleibt immer noch die Tatsache, dass ich manuell eingeben [Fieldname] für jedes Feld. Ich brauche eine batch-Lösung. Ich habe angefangen mit der Programmierung in VBA, aber es hat das gleiche problem. Wird die update-Frage.
InformationsquelleAutor StuckAtWork | 2012-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Set default format, um die Art und Weise, das zu wollen, null-Länge Daten angezeigt werden.
verwenden
Field Value Is
greater than
''
für die bedingte Formatierung und legen Sie das format an, wie es sollte angezeigt werden, mit text in das Feld ein.
Können Sie mehrere Felder auswählen mit Shift+klicken Sie in der design-Ansicht, wählen Sie alle entsprechenden Felder ein, dass dieses angewendet werden muss, um
InformationsquelleAutor SeanC
In Access 2016 ich war nicht in der Lage zu finden, die Standard-Formatierung option, ist die Lösung von @SeanC. Stattdessen habe ich festgestellt, dass meine Combo-Box formatieren, richtig, ich hatte um einen Ausdruck zu verwenden, mit ISNULL.
InformationsquelleAutor Mike
Gelöst. Setzen Sie diese in meine Formulare (Aussehen könnte, in so dass es ein Modul, neu hier, nicht sicher, wie Sie Sie noch)
Der trick war, wie Sie es in
FormatConditions.Add(...)
. Funktioniert genau, wie ich es gern jetzt.InformationsquelleAutor StuckAtWork