Farbschema: Dunkel
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Status aus einem Feld des Datensatzes anzeigen

Status aus einem Feld des Datensatzes anzeigen

Zeigen Sie den Zustand des aktuellen Datensatzes – „läuft“, „gestoppt“, „Fehler“ – als farbigen Status in einer Zeile auf einem Einzelformular oder im Formularkopf an, mit einem an ein Feld gebundenen WklStatusLabel.

Voraussetzungen: WKL Forms Object Library 1.23 oder höher.

Lösungsüberblick

  • Binden Sie es wie ein Textfeld: Steuerelementinhalt (ControlSource) nennt das Feld oder einen Ausdruck. Access schreibt bei jedem Datensatzwechsel den Wert des aktuellen Datensatzes in die Statusanzeige; die Statusanzeige schreibt nie zurück.
  • Werte werden zu Text und Art über Einträge (AddStatusItem): ein Eintrag je Wert, mit dem angezeigten Text und der Art (wskOk, wskWarn, wskBad, wskInfo, wskNeutral), die die Farben bestimmt. Werte ohne Eintrag zeigen den mit Format formatierten Wert in der im Entwurf festgelegten Kind.
  • Oder übernehmen Sie die Art aus einem anderen Feld (KindField), wenn der Datensatz sie speichert: als Zahl 0–5 oder als Name wie ok oder bad.
  • Das Aussehen wählen Sie mit Display: eine Pille (wsdPill), ein Punkt (wsdDot) oder ein Symbol (wsdSymbol) vor dem Text; Caption setzt einen schlichten Text davor („Dienst“).

Umsetzung

Ein Formular frmDienst ist an tblDienst gebunden, dessen Feld Zustand 0, 1 oder 2 enthält, und hat eine Statusanzeige stZustand. Die Einträge werden einmalig in der Entwurfsansicht hinzugefügt und mit dem Formular gespeichert:

' Once, in design view (for example from the Immediate window); saved with the form.
DoCmd.OpenForm "frmDienst", acDesign
With Forms!frmDienst!stZustand
    .ControlSource = "Zustand"
    With .Object
        .Caption = "Dienst"
        .Display = wsdPill
        .ClearStatusItems
        .AddStatusItem 0, "gestoppt", wskNeutral
        .AddStatusItem 1, "läuft", wskOk
        .AddStatusItem 2, "Fehler", wskBad
        .NullText = "unbekannt"
    End With
End With
DoCmd.Close acForm, "frmDienst", acSaveYes

Speichert der Datensatz die Art in einem eigenen Feld (Art: ok, warn, bad …) und den Text in einem anderen (Meldung), binden Sie den Text und nennen Sie das Feld für die Art:

With Forms!frmDienst!stMeldung
    .ControlSource = "Meldung"
    .Object.KindField = "Art"
End With

Während eine lange Aktion läuft, zeigen Sie das mit dem Aktivitätspuls an:

Me!stZustand.Object.Busy = True
' ... the action ...
Me!stZustand.Object.Busy = False

Hinweise

  • Wo es stehen kann: auf Einzelformularen, in Formularköpfen und -füßen, auf UserForms in Excel und Word. Nicht im Detailbereich eines Endlosformulars: Access legt dort eine einzige Instanz an, und eine gebundene verhindert, dass Access das Formular öffnet. Ein Status je Datensatz einer Liste gehört in eine Statusspalte eines WklGrid (wedStatus), die dieselben Einträge annimmt.
  • Code ändert denselben Datensatz: Die Statusanzeige folgt Datensatzwechseln von selbst. Ändert Code das Feld für die Art, ohne zu einem anderen Datensatz zu wechseln, rufen Sie Refresh auf.
  • Farbe nie allein: Der Text wird immer angezeigt, und hoher Kontrast wird berücksichtigt; Bildschirmsprachausgaben hören Beschriftung, Text und Art.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/show-a-status-from-a-field.txt · Zuletzt geändert: von Wolfgang van der Stille