Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Fehleingaben in Datenbanken sind, nach eigener Erfahrung, ein Quell ständiger Reibereien in Unternehmen. Oft sind die Daten redundant, mangelhaft formatiert oder lückenhaft. Nachforschungen, wer nun dies oder jenes falsch gemacht habe, führen selten zu effizienterer Arbeitsatmosphäre. Dabei könnten doch Plausibilitätsprüfungen schon bei der Eingabe in Formulare einen großen Teil dieses Missstands beheben. Wir zeigen Ihnen einige Beispiele.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1602_Plausibel.accdb
Plausible Kunden
Anhand der schon in der Ausgabe 11/2015 vorgestellten Beispieldatenbank mit ihrem Kunden- und Bestellformular demonstrieren wir Ihnen die möglichen Fallstricke und zeigen Lösungsmöglichkeiten auf. Das Formular frmKunden wurde dafür mit zusätzlichem VBA-Code aufgerüstet, der die Plausibilitätsprüfung der Eingabefelder garantieren soll.
Ein immer wiederkehrender Vorgang ist die Neuanlage von Adressen, die bereits in der Datenbank vorhanden sind. Oft wird dies zu spät bemerkt, etwa dann, wenn an anderer Stelle auf die Adressen Bezug genommen und eine Verknüpfung mit anderen Daten hergestellt werden soll. Welche Adresse ist dann die richtige Besser, Sie bauen da eine Prüfung ein, ob etwa die Kombination von Nachname und Vorname schon existiert, um dem Anwender gegebenenfalls eine Meldung zu präsentieren, wie in Bild 1. Er hat dann die Möglichkeit, die Eingabe dennoch fortzusetzen – Namen sind ja tatsächlich nicht immer eindeutig -, oder er navigiert zur bereits vorliegenden Adresse, weil er diese übersah.
Bild 1: Das Kundenformular der Beispieldatenbank implementiert diverse Plausibilitätsprüfungen
Was hin und wieder ebenfalls passiert, ist die Eingabe überflüssiger Leerzeichen. So wird versehentlich ein Leerzeichen an den Anfang des Nachnamens gesetzt was zu „Aber, Jutta“ und “ Abel, Jutta“ führt. In einer sortierten Adressliste bemerkte man die Doppelung gar nicht, weil der String mit dem Leerzeichen die Adresse ganz nach vor setzte. Bauen Sie eine Eliminierung überflüssiger Leerzeichen ein, so ist derartigem Unbill vorgesorgt.
Schlecht macht sich auch, wenn eine Auslieferung an den falschen Adressaten gerät, weil Ort und Postleitzahl nicht zueinander passen. Verknüpfen Sie beide miteinander über eine interne Postleitzahlentabelle, so können Sie auf Falschangaben reagieren und Korrekturen vorschlagen lassen.
Und schließlich sind E-Mail-Adressen heutzutage genauso wichtig, wie die örtlichen Angaben. E-Mails, die den Adressaten nicht erreichen, haben Verzögerungen im Workflow zur Folge. Fehler infolge inkorrekter E-Mail-Eingaben können Sie wenigstens minimieren, indem die Eingabe einer Validitätsprüfung unterzogen wird.
Formularnavigation
Bevor wir zum eigentlichen Thema kommen, beschreiben wir noch eine Erweiterung der Navigationsmöglichkeiten des Formulars. Da es keine Navigationsleiste anzeigt, muss zu einem Kunden über das Kombinationsfeld Gehe zu gesprungen werden. In der bisherigen Form enthält diese Combobox eine Liste aller eingegebenen Kunden. Dabei fehlt die Möglichkeit, einen Kunden zu löschen oder neu anzulegen. Zwar könnten Sie zu diesem Zweck zusätzliche Schaltflächen Löschen und Neu in das Formular einfügen, doch auch das Kombinationsfeld macht’s möglich!
Die Steuerelementdaten bestanden bislang ungefähr aus dem SQL-Ausdruck
SELECT Nachname & ", " & Vorname FROM tblKunden ORDER BY Nachname
Was wir möchten, sind die zwei zusätzlichen Einträge Neuer Kunde und Kunde löschen ganz oben in der Liste, so, wie dies Bild 2 zeigt. Da diese in der Tabelle tblKunden nicht existieren, müssen sie künstlich eingebaut werden. Dazu eignet sich in erster Linie eine Union-Abfrage. Für die Combobox sieht der SQL-Ausdruck nun so aus:
Bild 2: Die Combobox mit ihren zwei zusätzlichen Einträgen zum Neuanlegen und Löschen von Kunden
(SELECT -1 AS ID, "(Kunden löschen)" AS Vollname FROM tblKunden) UNION (SELECT 0 AS ID, " (Neuer Kunde)" AS Vollname FROM tblKunden) UNION (SELECT tblKunden.ID, [Nachname] & ", " & [Vorname] AS Vollname FROM tblKunden) ORDER BY Vollname;
Erstaunlich, aber wahr: Nicht nur zwei, sondern auch mehrere SELECT-Abfragen können über die UNION-Klausel miteinander kombiniert werden! Die eigentliche Abfrage steht ganz unten, wobei die Kombination aus Nach- und Vorname über den Feld-Alias Vollname ausgegeben wird. Damit die Einzelabfragen zusammengefasst werden können, müssen sie die gleiche Zahl von Feldern und die gleichen Feldnamen ausgeben. Das erste SELECT-Statement setzt nun einfach den Wert -1 als ID und den Vollnamen auf (Kunden löschen). Als Tabelle im FROM-Teil wird ebenfalls tblKunden spezifiziert. Das ist aber völlig ohne Belang! Sie könnten hier genauso gut eine andere Tabelle einsetzen, weil auf deren Datensätze ja ohnehin nicht Bezug genommen wird. Nur ohne Tabelle geht es leider nicht. Von der Performance her ist es günstiger, die gleiche Tabelle zu verwenden, auf die im unteren Teil tatsächlich zugegriffen wird.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo