Wie erzeuge ich Auswahllisten, aus welchen genau ein Element gewählt werden kann? Und wie realisiere ich eine Mehrfachauswahl?

Jeder kennt sie: Pulldown- oder Dropdown-Felder, aus welchen genau ein Wert gewählt werden kann. Und Checkboxen, aus denen man keinen, einen oder mehrere Werte anhaken kann. Wie lassen sich diese realisieren?

Erster Fall: Ja/Nein

Für diesen Fall genügt es, als Datentyp bit zu wählen und im Menü 3: Tabellen als Ja/Nein - Typ auszuwählen, was angezeigt werden soll:

Ja/Nein
Yes/No
Checkbox
Intern wird Nein/No als 0, Ja/Yes als 1 dargestellt. Eine Abfrage
Where <Spalte vom Typ Boolean> = 1
gibt folglich alle Zeilen zurück, bei welchen 'Ja' ausgegeben wird.

Zweiter Fall: Kleine Relation

Das ist eine Pulldown-Liste, die nur wenige Werte anzeigt und die eigentlich nie geändert werden muß. Diese lassen sich auf eine unmittelbare Weise im Menü 3: Tabellen deklarieren:
  • Datentyp int (Integer, Ganzzahlen)
  • Im Feld PDown-Werte einfach eine Liste eintragen:

    1;Firma;2;Frau;4;Mann
    erzeugt

    als drei Varianten der Anrede

Intern werden die Zahlen verwendet. Werden Potenzen von 2 gewählt, kann man später auch mit Bitoperationen Werte überprüfen:
Where (<Spalte> & 6) <> 0
gibt alle Zeilen zurück, die 'Frau'/'Mann' enthalten. Bei insgesamt drei Werten ist das natürlich auch durch
Where <Spalte> <> 1
überprüfbar.

Dritter Fall: Umfangreiche Pulldownlisten

Wenn die Pulldown-Listen umfangreicher werden (mehr als 10 Werte) oder wenn - im Rahmen von Haupt- und Detailtabellen - die Daten für die Pulldownlisten aus einer anderen Tabelle kommen und wiederholt ergänzt, geändert oder gelöscht werden, dann wird eine eigenständige Tabelle genutzt. Minimal muß diese eine Spalte enthalten. Bei Haupt- und Detailtabellen wie Artikel und Artikelverkäufe kann die Haupt- oder Basistabelle auch mehrere Spalten enthalten. Für eine Pulldownliste genügt es, im Menü 7: Verknüpfungen eine Verknüpfung zwischen beiden Tabellen zu definieren: Die Basistabelle wird im Feld 'Grundtabelle' ausgewählt. Im Feld 'Detailspalte' wird eine Spalte vom Datentyp 'int' gewählt. Schließlich müssen ein 'gezeigter Ausdruck' aus den Spaltennamen der Grundtabelle und möglichen Operatoren / Funktionen und ein Name für diese Verknüpfung festgelegt werden. Den Rest erledigt das System automatisch.

Ein Beispiel hierzu liefert die Tabelle Umsatz, hier mit dem View über alle Spalten. Die Spalten 'VertreterId' und 'ArtikelId' sind Integer-, also Ganzzahl-Spalten. Ein View liefert jedoch nicht diese unverständliche Zahl, sondern den Ausdruck, der sich anhand des 'gezeigten Ausdrucks' aus den Werten des zugeordneten Grunddatensatzes ergibt. Ferner werden die Relationen auch bei den Eingabemasken entsprechend berücksichtigt. Hier werden Pulldown-Listen mit 10 Werten und Buttons zum Blättern ausgegeben.

Vierter Fall: Viele Checkboxen mit Mehrfachauswahl

Der auf den ersten Blick komplizierteste Fall liegt dann vor, falls eine ganze Reihe von Checkboxen ausgegeben werden sollen, so daß Nutzer einen oder mehrere Werte auswählen können. Die eine Variante besteht darin, für jede Wahlmöglichkeit eine Bit-Spalte zu verwenden. Dies ist im ersten Fall beschrieben. Das ist unnötig kompliziert. Stattdessen steht die folgende Möglichkeit zur Verfügung:
  • Definieren Sie sich eine Tabelle vom Typ bitTable im Menü 3: Tabellen : Als Sondertyp 'bitTable' wählen, einen Tabellennamen vergeben und eine einzige Spalte vom nvarchar-Typ erstellen.
  • Diese Tabelle füllen Sie mit den Zeilen auf, die später als Optionen ausgegeben werden sollen. Beispiel:
    1	Deutsch
    2	Französisch
    4	Englisch
    8	Spanisch
    Die IDs werden bei bitTable-Tabellen automatisch in Zweierpotenzen hochgezählt. Hier sind bis zu 31 Werte möglich.
  • Die Tabelle, welche die Werte nutzen soll, erhält eine Spalte vom Typ bitSet.
  • Schließlich deklarieren Sie im Menü 7: Verknüpfungen eine Verknüpfung: Als Grundtabelle wählen Sie die im ersten Schritt erstellte Tabelle, als 'gezeigten Ausdruck' den Namen der Spalte. 'Detailspalte' wird die Spalte vom Typ 'bitSet' in der Detailtabelle.
Rufen Sie nun die Detailtabelle zum Editieren auf - alles ist wie erwartet. Intern werden die Bitkombinationen der angehakten Werte gespeichert. Wurde oben 'Deutsch' und 'Englisch' angehakt, so wird das interne Integer-Feld mit 5 (= 1 + 4) gefüllt.


Kontaktformular:

Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!

Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.

© 2003-2019 Jürgen Auer, Berlin.