Beispieldaten generieren

Zusammenfassung

Legen Sie mit wenigen Codezeilen Beispieldaten für Ihre Datenbanken in der Entwicklungsphase an.

Techniken

Zufallsfunktionen, Rnd, Int, zufällige Auswahl von Datensätzen

Voraussetzungen

Access 97 oder höher

Beispieldateien

Testdaten97.mdb, Testdaten00.mdb

André Minhorst, Duisburg

Eine der leidigsten Aufgaben bei der Datenbankentwicklung ist das Eintippen von Testdaten. Es ist ja ganz schön, zwischendurch mal eine etwas weniger anspruchsvolle Tätigkeit auszuüben, aber diese Zeit könnte man sicher sinnvoller nutzen, indem man einen Kaffee trinkt oder ein wenig im Internet surft. Ein wenig Vorarbeit ist natürlich notwendig, aber dann sind die Beispieldaten im Nu generiert.

Mancher Entwickler ist sich seiner selbst so sicher, dass er Anwendungen locker ohne Testdaten entwickelt. Wenn die Anwendung in Betrieb geht, ist der Nachholbedarf dann allerdings groß:

Fehler treten auf, die Daten passen nicht in die Steuerelemente und die Berichte zeigen nur die Hälfte der gewünschten Informationen an.

Mit ein wenig Aufwand lässt sich eine Menge ärger vermeiden: Wenn Testdaten vorhanden sind, lassen sich viele Funktionen zuverlässig prüfen und die Steuerelemente in Formularen und Berichten der gewünschten Größe anpassen.

Die optimalen Beispieldaten kommen natürlich vom Auftraggeber selbst: Wenn eine zu entwickelnde Anwendung dem Verwalten bestehender Daten dienen soll, liegt nichts näher, diese nach dem Entwurf des Datenmodells direkt in die passenden Tabellen zu integrieren. Diesen Schritt müssen Sie früher oder später vermutlich ohnehin gehen, also warum nicht sofort Die Beispieldaten kommen somit „frei Haus“.

Es gibt allerdings auch Fälle, in denen die Beispieldaten nicht auf der Straße liegen: Wenn Sie etwa ein Produkt entwickeln möchten, dessen Abnehmer noch nicht feststehen oder für das es einfach noch keine bestehenden Daten gibt, müssen Sie die Tabellen selbst füllen.

Es gibt einige Assistenten für Access, die Tabellen relativ „blind“ mit Beispieldaten füllen, die dem jeweiligen Datentyp entsprechen. Das klappt für einige Fälle, aber sobald es an verknüpfte Tabellen geht, hört der Spaß meist auf.

Außerdem macht es doch wesentlich mehr Laune, beispielsweise eine Adressenliste zu testen, die richtige Namen enthält und keine per Zufall generierten Zeichenketten wie kUDvkxKskKNN. „Richtige“ Beispieldaten machen auch einen wesentlich besseren Eindruck, wenn es um die Vorführung oder um eine Demoversion der jeweiligen Anwendung geht.

Woher nehmen, wenn nicht stehlen

Um etwa eine Adresstabelle mit einigen hundert oder tausend Datensätzen zu füllen, benötigen Sie natürlich einige Basisdaten – aber nicht unbedingt so viele, wie Sie Datensätze erzeugen möchten. Mit 20 bis 30 Vornamen, Nachnamen, Orten und Straßen lässt sich schon eine Menge eindeutige Kombinationen erzeugen. Die müssen Sie natürlich irgendwo her nehmen – also greifen Sie sich einfach das nächste Telefonbuch und „hacken“ ein paar Daten in eine Basistabelle. Denn merke: Nichts ist monotoner, als Beispieldaten einzugeben – außer, sich die Beispieldaten auch noch ausdenken zu müssen …

Art der Daten

Welche Daten benötigt man überhaupt, um eine Datenbank mit Beispieldaten zu füllen In der Regel sollten Daten für die folgenden Felder ausreichen:

  • Vorname
  • Nachname
  • Anrede
  • Firma
  • Straße und Hausnummer
  • PLZ
  • Ort
  • Land
  • Telefon (Telefax, Mobil)
  • E-Mail
  • Internet
  • Datumsangaben
  • Zahlenwerte
  • Verknüpfungsfelder
  • Sonstige Felder wie Projektnamen, Fahrzeugnamen …
  • Daten generieren

    Die Daten für die oben genannten Felder gewinnen Sie auf unterschiedliche Arten. Für die ersten acht Felder halten Tabellen mit bestehenden Daten als Quelle her.

    Die übrigen können mit einfachen Funktionen erzeugt werden, die Sie ebenfalls wie die Funktion zum zufälligen Auswählen der bestehenden Daten im Folgenden kennen lernen.

    Zum Anlegen von Datensätzen mit Beispieldaten müssen Sie nun irgendwie dafür sorgen, dass die Daten – woher auch immer – in der Zieltabelle landen. Dazu verwendet man am Besten eine passende SQL-Anweisung, die per VBA mit den entsprechenden Daten bestückt wird. Für die Kontakttabelle aus Abb. 1 könnte die Anweisung wie folgt aussehen:

    db.Execute "INSERT INTO tblPersonen
    (Anrede, Vorname, Nachname, Firma, 
    Strasse, PLZ, Ort, Bundesland, Telefon, 
    Telefax, EMail) VALUES(''" & strAnrede & 
    "'', ''" & strVorname & "'', ''" & 
    strNachname & "'', ''" & strFirma & "'', ''" 
    & strStrasse & " " & intHausnummer & "'', 
    ''" & strPLZ & "'', ''" & strOrt & "'', ''" & 
    strBundesland & "'', ''" & strVorwahl & "/" 
    & strTelefon & "'', ''" & strVorwahl & "/" 
    & strTelefax & "'', ''" & strEMail & "'')"

    Bleibt nur noch die kleine Aufgabe, die Variablen für die einzufügenden Daten mit den entsprechenden Werten zu füllen.

    Die dazu notwendige Funktionalität soll der übersicht halber auf eine öffentliche Routine und eine Klasse aufgeteilt werden, deren Methoden per Zufall die einzelnen Daten ermitteln.

    Quellcode 1: Routine zum Anlegen von Beispieldaten in einer Personen-Tabelle

    Public Sub TabelleFuellen(lngAnzahlDatensaetze As Long)
        Dim db As DAO.Database
        Dim i As Integer
        Dim objBeispieldaten As clsBeispieldaten
        Dim strAnrede As String
        Dim strVorname As String
        Dim strNachname As String
        ... weitere Deklarationen, siehe Beispieldatenbank
        ''Klasse für die Ermittlung der Zufallsdaten instanzieren
        Set objBeispieldaten = New clsBeispieldaten
        Set db = CurrentDb
        ''Gewünschte Anzahl Datensätze durchlaufen
        For i = 1 To lngAnzahlDatensaetze
            ''Beispieldaten ermitteln
            With objBeispieldaten
                .GetVorname strVorname, strGeschlecht, strAnrede
                .GetNachname strNachname
                .GetNachname strNameFirma
                .GetFirma strNameFirma, strFirma
                .GetStrasse strStrasse
                .GetHausnummer 1, 100, intHausnummer
                .GetOrt strPLZ, strOrt, strBundesland, strVorwahl
                .GetTelefon 6, 8, strTelefon
                .GetTelefon 6, 8, strTelefax
                .GetEMail strVorname, strNachname, strEMail
            End With
            ''Datensatz schreiben
            db.Execute "INSERT INTO tblPersonen(Anrede, Vorname, Nachname, Firma, Strasse, PLZ, " _            & "Ort, Bundesland, Telefon, Telefax, EMail) VALUES(''" & strAnrede & "'', ''" _            & strVorname & "'', ''" & strNachname & "'', ''" & strFirma & "'', ''" & strStrasse & " " _            & intHausnummer & "'', ''" & strPLZ & "'', ''" & strOrt & "'', ''" & strBundesland _            & "'', ''" & strVorwahl & "/" & strTelefon & "'', ''" & strVorwahl & "/" & strTelefax _            & "'', ''" & strEMail & "'')"
        Next i
        Set db = Nothing
    End Sub

    Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
    Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
    Zur Bestellung ...
    Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
    Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

    Schreibe einen Kommentar