Schritt 13: Die Dateneingabe kontrollieren

Top  Previous  Next

Ein wichtiger Punkt beim Entwurf von Formularen ist die Kontrolle der Dateneingabe. Dem Benutzer des Formulars soll es einerseits so einfach wie möglich gemacht werden, Daten zu erfassen und andererseits müssen die eingegebenen Daten so weit wie möglich auf Ihre Gültigkeit überprüft werden. Die Möglichkeiten von TurboDB Studio in diesem Bereich möchten wir Ihnen anhand des Formulars Kraftfahrzeuge der Tabelle KFZ veranschaulichen.

 

Tut_13_ObjectInspector

Die Eingabe in Datenfelder können Sie weitreichend regeln und überprüfen

 

Selektieren Sie dazu das Formular und öffnen Sie den Formulareditor für dieses Formular mit dem Knopf Entwerfen. Als erstes wählen Sie das Eingabefeld für das Modelljahr. Dadurch werden auf der linken Seite im Objektinpektor die Eigenschaften des Feldes angezeigt. Mit einem Blick auf die Eigenschaft Minimalwert sehen Sie, warum das Formular die Eingabe einer Jahreszahl wie 1860 ablehnt. Nur Werte zwischen 1889 und 3000 sind zugelassen. Wenn Sie diese Zahlen abändern, genügt es, das Formular mit Datei/Speichern zu sichern. Sie können den Formulareditor geöffnet lassen und die Veränderungen trotzdem sofort ausprobieren.

Für kompliziertere Überprüfungen haben Sie die Möglichkeit, eine beliebige Bedingung einzugeben. D.h. ein Kriterium wie bei der Suche oder dem Ausdruck von Listen. Nehmen Sie z.B. an, dass unter Bezeichnung nur Einträge mit mehr als drei Buchstaben erlaubt sein sollen. Dann tragen Sie für dieses Element  bei der Eigenschaft Gültigkeitsbedingung folgenden Ausdruck ein:

Length(Bezeichnung) > 3

Bedingungen dieser Art sind im Kapitel Suchbedingungen ausführlicher beschrieben.

Um die Benutzerfreundlichkeit des Formulares zu erhöhen, sollten Sie bei einer fehlerhaften Eingabe dem Anwender mitteilen, was er denn falsch gemacht hat. Bei einer Bereichsüberprüfung erfolgt automatisch eine Meldung. Bei speziellen Bedingungen, die beliebig komplex und verschiedenster Art sein können, müssen Sie selber Hand anlegen. In unserem Fall könnten Sie zum Beispiel bei Ungültigkeitsmeldung eintragen:

Die Bezeichnung eines Fahrzeuges muss aus mehr als drei Zeichen bestehen.

Eine andere praktische Eigenschaft von Datenfeldern ist die Vorbelegung. Normalerweise sind die Einträge in neuen Datensätzen leer oder enthalten eine Null. Wenn Sie das anders haben wollen, tragen Sie unter Vorgabe einfach den gewünschten Wert ein. Bei der Anzahl Sitze auf der zweiten Seite des Formulars z.B. wäre 5 eine gute Vorgabe.

Der Vorgabewert lässt sich aber auch berechnen. Um bei Modelljahr die aktuelle Jahreszahl vorzugeben, können Sie den Ausdruck

Year(today)

verwenden.

Manchmal hängt die Vorgabe in einem Feld von den Werten in anderen Feldern ab. Solche Fälle werden zwar durch die gewöhnlichen Vorgabewerte nicht abgedeckt, können aber z.B. mit dem Ereignis Beim Verlassen behandelt werden, das mit einem Makro verknüpft werden kann. Ein solches Makro enthält eine oder mehrere Anweisungen für TurboDB Studio in der integrierten Programmiersprache TurboPL, die immer dann ausgeführt werden, wenn ein Datenfeld geändert worden ist und auf ein anderes Feld umgeschaltet wird.

Nehmen wir als Beispiel die drei Felder Brutto-Preis, Rabatt-Satz und Netto-Preis. Sobald der Brutto-Preis eingetragen ist, erscheint der selbe Wert unter Netto-Preis als Vorgabe. Der Rabatt wird automatisch berechnet und ergibt sich natürlich zu 0%. Das Feld Netto-Preis ist aber editierbar, so dass das Auto auch für weniger verkauft werden kann. Das Rabatt-Feld passt sich automatisch jeder Änderung an. Wie funktioniert so etwas?

Zunächst muss die Vorgabe aus Brutto-Preis in Netto-Preis kopiert werden. Das Makro, das BeimVerlassen von Brutto-Preis ausgeführt wird, lautet

Netto-Preis := Brutto-Preis; Refresh;

Mit dem Doppelpunkt vor dem Gleichheitszeichen, weisen Sie daraufhin, dass der Wert von Brutto-Preis dem Feld Netto-Preis zugewiesen und nicht etwa mit ihm verglichen werden soll. Der anschließende Aufruf der Funktion Refresh sorgt dafür, dass die Änderung auch sichtbar wird. Der Strichpunkt trennt beiden Befehle voneinander. Jedesmal, wenn Brutto-Preis geändert wird, führt TurboDB Studio dieses Makro aus und kopiert somit die Eingabe in das Feld des Netto-Preises.

Damit auch noch der Rabatt korrekt berechnet wird, definieren Sie für BeimVerlassen von Netto-Preis den automatischen Eintrag

Rabatt-Satz := (Brutto-Preis - Netto-Preis) / Brutto-Preis * 100; Refresh;

Um auch noch bei einer Änderung von Rabatt-Satz den Netto-Preis anzupassen, definieren wir zu Schluss noch ein Makro, das BeimVerlassen von Rabatt-Satz ausgeführt wird:

Netto-Preis := Brutto-Preis - ((Brutto-Preis / 100) * Rabatt-Satz); Refresh;

Beachten Sie den Unterschied zwischen einem Bindestrich und einem Minus-Zeichen. Als deutsches Datenbankprogramm erlaubt TurboDB Studio die Verwendung von Bindestrichen in Bezeichnern wie in Brutto-Preis und in Netto-Preis. Damit keine Verwechslung mit dem Minus-Zeichen möglich ist, sollte vor und hinter dem Minus-Zeichen ein Leerzeichen stehen. Falls nicht, kann das zur Fehlermeldung Unbekannter Bezeichner führen, weil TurboDB Studio dann versucht, ein Feld namens Brutto-Preis-Netto-Preis zu suchen.