Bedingte Schaltflächen

Haben Sie sich auch schonmal darüber geärgert Sie wollen einem Endlosformular Schaltflächen zuweisen, die mal aktiviert sind und mal nicht – oder auch mal ausgeblendet oder auch nicht. Dummerweise erlaubt die Endlosansicht aber für ungebundene Steuerelemente keine vom jeweiligen Datensatz abhängigen Einstellungen. Zum Glück kann man mit Access hier und da tricksen – und so stellen wir in diesem Beitrag Möglichkeiten vor, wie Sie in den verschiedenen Access-Versionen doch noch anklickbare Steuerelemente mit individuellem Aussehen offerieren.

Die Möglichkeiten unterschieden sich dabei je nach der Access-Version, wobei es von Version zu Version leichter wird, entsprechende Schaltflächen bereitzustellen beziehungsweise zu simulieren (in der Tat gelang es uns mit keiner Version, eine echte Schaltfläche mit wechselnden Icons, Beschriftungen oder Eigenschaften zu versehen – dazu mussten andere Steuerelemente wie Textfelder oder Bildsteuerelemente herhalten).

In Access 2003 und älter sind wir auf die Verwendung von Texten und Sonderzeichen beschränkt, ab Access 2007 bietet das Bildsteuerelement durch seine Eigenschaft als gebundenes Steuerelement weitaus bessere Möglichkeiten. Diese werden unter Access 2010 noch getoppt.

Grundsätzlich besteht das Problem darin, dass das Zuweisen eines Wertes zu einer Eigenschaft eines Steuerelements sich immer auf alle Datensätze auswirkt. Das bedeutet, dass Sie etwa eine Schaltfläche nicht für einen Datensatz ausblenden oder deaktivieren können und für die anderen nicht – es werden immer alle Schaltflächen ausgeblendet oder deaktiviert.

Die einzige Möglichkeit, ein Steuerelement in einem Datensatz über eine Eigenschaft anders als das gleiche Steuerelement in den übrigen Datensätzen zu gestalten, findet sich in der Eigenschaft Steuerelementinhalt.

Dabei ist der eigentliche Wert der Eigenschaft natürlich immer für alle Datensätze gleich, aber das durch die Eigenschaft referenzierte Feld liefert je nach Datensatz unterschiedliche Werte. Die zweite Möglichkeit, ein Steuerelement in verschiedenen Datensätzen unterschiedlich zu gestalten, liegt in der bedingten Formatierung – die soll jedoch nicht Thema des vorliegenden Beitrags sein.

Beispielanwendung

Damit es nicht zu kompliziert wird, soll in einem Beispielformular in der Endlosansicht eine schaltflächenartige Möglichkeit geboten werden, einen Datensatz zu löschen, wenn ein Ja/Nein-Feld namens Loeschen den Wert True enthält.

Die übrigen Felder der Beispieltabelle sind ein Primärschlüsselfeld (BeispielID) und ein Textfeld (Beispieltext) mit beliebigen Inhalten. Das Ja/Nein-Feld steht stellvertretend für beliebig komplexe Ausdrücke, die festlegen, ob eine Schaltfläche aktiviert sein soll oder nicht. Der Wert des gewünschten Ausdrucks kann dann in einer Abfrage als Boolean-Wert zur Datenherkunft des Formulars in der Endlosansicht hinzugefügt werden.

Bedingte Schaltflächen unter Access 2003 und älter

Unter Access 2003 und älter ist der höchste Grad an Improvisation gefragt. Hier steht noch nicht einmal ein Bild-Steuerelement bereit, dem man ein schickes Icon zuweisen könnte.

Also verwenden Sie entweder ein Textfeld mit einem entsprechenden Text (Löschen oder X). Dieser Text soll jedoch nur angezeigt werden, wenn das Feld Loeschen auch den Wert True enthält, der Benutzer den Datensatz also löschen können soll. Damit der gewünschte Text nur in diesem Fall angezeigt wird, fügen Sie der Eigenschaft Steuerelementinhalt des Textfeldes etwa den folgenden Ausdruck hinzu:

=Wenn([Loeschen];"X";"")

In der Entwurfsansicht sieht das Formular nun etwa wie in Abb. 1 aus. Zur optischen Hervorhebung können Sie die Textfarbe noch auf Rot und die Schriftbreite auf Fett einstellen.

pic002.png

Abb. 1: Das Formular mit der datenabhängigen Löschen-Schaltfläche in der Entwurfsansicht

Nun lässt sich das Textfeld durchaus mit einem Beim Klicken-Ereignis versehen. Dummerweise landet beim Anklicken auch der Fokus im Textfeld, was sich durch die blinkende Einfügemarke bemerkbar macht – das sieht natürlich nicht besonders professionell aus.

Also legen Sie noch eine Schaltfläche mit gleichen Abmessungen genau über das Textfeld und stellen seine Eigenschaft Transparent auf Ja ein. Nun legen Sie noch eine entsprechende Ereignisprozedur für das Ereignis Beim Klicken der Schaltfläche an, die etwa wie folgt aussieht:

Private Sub cmdLoeschen_Click()
    If Me!Loeschen = True Then
        If MsgBox("Datensatz wirklich löschen", vbYesNo, "Löschen") = vbYes Then
            DoCmd.RunCommand acCmdDelete
        End If
    End If
End Sub

Dies führt zu einer Ansicht wie in Abb. 2.

pic001.png

Abb. 2: Löschen-Schaltfläche, die in Abhängigkeit von den Daten ein- oder ausgeblendet wird.

Bedingte Schaltflächen in Access 2007

Access 2007 liefert mit dem Anlagefeld und mit der Eigenschaft Steuerelementinhalt für das Bild-Steuerelement eine Möglichkeit, Icons in Abhängigkeit vom jeweiligen Datensatz anzuzeigen. Da Access 2007 mit der Einführung des Ribbons einen großen Schritt in Richtung benutzerfreundlicherer Oberflächen macht, was sich auch durch das einfache Anbringen von Icons auf Schaltflächen bemerkbar macht, wollen wir dies auch für die Endlosansicht von Formularen ermöglichen.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar