Beispieldaten erzeugen

So erzeugen Sie beliebig viele Beispieldaten zum Testen Ihrer Datenbanken

Von: Lorenz Hölscher
Stand: 2. Mai 2011
Anmelden um Kommentare zu schreiben

Downloads zu diesem Beitrag

Über den Autor: Lorenz Hölscher

bild80517

Lorenz Hölscher ist freiberuflicher Dozent, Berater und Programmierer mit Schwerpunkt Anwendungs-Programmierung. Vorrangig widmet er sich Access, Word und Excel sowie begleitenden grafischen Arbeiten. Er legt viel Wert auf benutzerfreundliche Oberflächen und ordentliches Design in Optik und Programmierung. Zu Hilfe kommen ihm da seine langjährigen "branchenfremden" Erfahrungen als Architekt, Layouter und Designer.

Lorenz Hölscher bietet eigene Hilfeseiten an und hat bei Microsoft Press mehrere Bücher veröffentlicht zu Access 2007, Access 2007 VBA, Word 2007 VBA und Access 2010.

Beiträge des Autors als Atom-Feed Atom-Feed: Neues von akademie.de

So ziemlich in jeder Datenbank benötigen Sie während der Entwicklung Beispieldaten zum Testen. Damit irgendetwas vorhanden ist, tippen Sie schnell "asdf" für Texte, "4711" für Zahlenfelder und "1.1.2011" für ein Datum. Das wird noch dreimal kopiert und muss dann reichen. Warum so geizig? Testdaten für Access lassen sich mit wenig Aufwand jederzeit in beliebiger Menge erzeugen, wie Lorenz Hölscher hier zeigt.

Beliebige Daten in eine Tabelle schreiben

Für dieses Beispiel benötigen Sie in einer Access-Datenbank eine Tabelle tblMengen mit den Feldern wie im folgenden Bild:

Bild vergrößernDie Test-Tabelle bietet für jeden Datentyp ein Feld

Die Beispiel-Tabelle mit den in diesem Beitrag erwähnten Makros steht zum Download bereit: Download Test-Datenbank (.mdb, 172 kB).

Dazu schreiben Sie eine Prozedur ErzeugeDaten() in einem Standard-Modul, welche in die Tabelle eine beliebige Menge Daten hineinschreibt. Sie können mittels Zufallsfunktion und einer Schleife viele Datensätze erzeugen:

Option Compare Database
Option Explicit

Const m_clngAnzZeilen = 10
Const m_clngMinZahl = 0
Const m_clngMaxZahl = 100
Const m_cdatMinDatum = #1/1/1960#
Const m_cdatMaxDatum = #1/1/2011#

Sub ErzeugeDaten()
    Dim rcsMenge As Recordset
    Dim dblDatum As Double
    Dim dblZahl As Double
    Dim lngZaehler As Long

    Randomize Now()     'Zufallsgenerator initialisieren
    Set rcsMenge = CurrentDb.OpenRecordset("tblMengen", dbOpenDynaset)

    For lngZaehler = 1 To m_clngAnzZeilen
        dblDatum = ((m_cdatMaxDatum - m_cdatMinDatum) * Rnd) + m_cdatMinDatum
        dblZahl = ((m_clngMaxZahl - m_clngMinZahl) * Rnd) + m_clngMinZahl

        rcsMenge.AddNew
        rcsMenge.Fields("MDatum").Value = dblDatum
        rcsMenge.Fields("MZahl").Value = dblZahl
        'oder ganzzahlig bzw. ohne Uhrzeit
        'rcsMenge.Fields("MDatum").Value = CLng(dblDatum)
        ' rcsMenge.Fields("MZahl").Value = CLng(dblZahl)
        rcsMenge.Update
    Next
End Sub

Der obige Code ermittelt mit der Rnd()-Funktion (Random = Zufall) immer einen Wert zwischen 0 und 1, welcher mit der Differenz zwischen jeweiligem Minimum und Maximum multipliziert wird. Falls beispielsweise das Minimum 3 und das Maximum 10 war, ergeben sich Werte zwischen 0 und 7 inklusive. Zu diesem Wert muss dann das Minimum wieder addiert werden, damit die Ergebnisse wieder zwischen 3 und 10 liegen.

Diese Formel gilt sowohl für eine Double-Zahl als auch für das Datum. Wenn Sie ganzzahlige Ergebnisse oder ein Datum ohne Uhrzeit benötigen, entfernt die CLng()-Funktion (ConvertToLong) die jeweiligen Nachkommastellen.

Die automatisch erzeugten Daten

Diese Prozedur erzeugt schon die gewünschten Zahlen und Datumswerte, nur noch keine Texte.

Diese Seite ist für Mitglieder von akademie.de reserviert.

Möchten Sie die Mitgliedschaft 14 Tage kostenlos testen und den Beitrag komplett lesen?

Ich bin bereits Mitglied
Jetzt Probemitglied werden
Ich kann in den 14 Tagen Probezeit formlos z.B. per E-Mail stornieren. Wenn ich das nicht tue, entscheide ich mich für ein