Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2005.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

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

Beispieldaten generieren

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.

Beispieldaten

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.

Grundlage für das Erzeugen von Beispieldaten

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.

    Datengenerierung per VBA

    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

    Abb. 1: Diese Tabelle soll mit Beispieldaten gefüllt werden.

    Die Routine aus Quellcode 1 deklariert und instanziert zunächst die Klasse mit den Methoden zum Ermitteln der Beispieldaten und die Variablen für die per Zufall ermittelten Daten. Dann durchläuft die Routine eine Schleife und dabei die einzelnen Methoden zur Ermittlung der Daten. Diese Daten schreibt sie schließlich in einen neuen Datensatz der Personen-Tabelle.

    Die Klasse clsBeispieldaten

    Die Klasse clsBeispieldaten enthält die Methoden zum Ermitteln von Daten nach dem Zufallsprinzip. Dabei werden verschiedene Techniken verwendet, die nachfolgend vorgestellt werden.

    Die Funktionen zur Generierung der Daten teilen sich in folgende Typen auf:

  • Generieren aus bestehenden Tabellen
  • Generieren von Telefonnummern
  • Generieren von E-Mail und Internetadressen aus Namen
  • Erzeugen von Datumsangaben
  • Erzeugen von Zahlenwerten in bestimmten Bereichen
  • Ermitteln von Werten für Verknüpfungsfelder aus fremden Tabellen
  • Zufallszahlen mit der Rnd-Funktion

    In fast allen nachfolgend vorgestellten Funktionen spielt die Rnd-Funktion eine Rolle. Diese Funktion ermittelt einen Zufallswert größer oder gleich 0 und kleiner 1. Um Werte aus einem bestimmten Bereich zu erhalten - beispielsweise zwischen 1 und 10 - muss man die Funktion entsprechend "einhüllen". Der folgende Ausdruck liefert die passenden Werte:

    Int(10 * Rnd() + 1)

    Für andere Intervalle legen Sie die Werte für die zwei Variablen Obergrenze und Untergrenze fest und verwenden den folgenden Ausdruck:

    Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)

    Die nachfolgend verwendeten Ausdrücke verwenden dabei jeweils die berechneten Werte für den Ausdruck Obergrenze - Untergrenze + 1.

    Daten aus bestehenden Tabellen generieren

    Die Beispieldatenbank enthält folgende Tabellen mit Daten, die als Grundlage für Testdaten dienen können:

  • tblVornamen (Vornamen und Geschlecht)
  • tblNachnamen (Nachnamen)
  • tblStrassen (Straßennamen)
  • tblOrte (Ort, PLZ, Vorwahl, Bundesland)
  • Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    Verwandte Beiträge:

    Ereignisprozeduren implantieren

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.