Beitrag aus SmartTools Access Weekly
So können Sie Testdaten komfortabel erzeugen
Access 365 2024 2021 2019 2016 2013 2010
Zum Abschluss der Entwicklung Ihrer Datenbankanwendungen müssen Sie alle Funktionen intensiv prüfen. Für den Test von Anwendungen, die mit Datumsangaben wie beispielsweise Geburtstagen arbeiten, sind dazu normalerweise Dutzende oder Hunderte von Geburtstagen, Lieferterminen oder anderen Datumsangaben einzugeben. Unser Tipp stellt eine Funktion vor, mit der sich diese Aufgabe über VBA-Routinen bzw. Aktualisierungsabfragen weitgehend automatisieren lässt.
Zunächst schaffen Sie die Basis in Form der Funktion "RandDate()":
- Wechseln Sie mit Alt + F11 in die VBA-Entwicklungsumgebung.
- Wählen Sie das Menü Einfügen-Modul an.
- Drücken Sie F4, um das Eigenschaftenfenster anzuzeigen und benennen Sie das Modul "modRandDate".
- Kopieren Sie die folgende Funktion "RandDate()" in das Modul:
Function RandDate(intYearMin As Integer, _
intYearMax As Integer, _
Optional varDummy As Variant) As Date
Dim rYear As Integer, rMonth As Integer, rDay As Integer
Randomize 'Zufallsgenerator initialisieren
rYear = Int((intYearMax * Rnd) + 1)
While rYear < intYearMin
rYear = Int((intYearMax * Rnd) + 1)
Wend
rMonth = Int((12 * Rnd) + 1)
rDay = Int((28 * Rnd) + 1)
RandDate = DateSerial(rYear, rMonth, rDay)
End Function
- Der Zeitraum für die Jahreszahlen kann beim Aufruf der Funktion über die Parameter "intYearMin" und "intYearMax" spezifiziert werden. Die Funktion ermittelt über die "Rnd()"-Funktion Zufallswerte für Jahr, Monat und Tag, stellt sicher, dass das Jahr im gewünschten Bereich liegt und liefert das Ergebnis im Format "Datum/Zeit" zurück. Der dritte, optionale Parameter "varDummy" ist für den Einsatz in Abfragen notwendig und wird weiter unten erläutert.
- Speichern Sie die Änderungen.
Um nun zum Beispiel Geburtstage oder andere Datumsangaben im Bereich vom 1.1.1953 bis 31.12.1985 zu generieren, rufen Sie die Funktion in VBA-Routinen wie folgt auf:
dtGeburtstag = RandDate(1953, 1985)
Die Anpassung vorhandener Daten nehmen Sie per Aktualisierungsabfrage vor. In der Zeile "Aktualisieren" tragen Sie dort für das Feld mit dem Geburtstag bzw. der Datumsangabe die folgende Anweisung ein:
=RandDate(1953;1985;[Feldname])
Für "Feldname" geben Sie ein beliebiges Feld der Tabelle an. Dieses Feld und der optionale Parameter "varDummy" der Funktion "RandDate()" sorgen dafür, dass die Funktion für jeden Datensatz erneut aufgerufen wird. Wenn Sie die Funktion zum Beispiel in der Form "RandDate(1953;1985)" angeben, würde Access die Funktion nur ein einziges Mal aufrufen und so den Geburtstag bzw. eine andere Datumsangabe für alle Datensätze auf den jeweils gleichen Tag setzen.