ich habe eine Access Datenbank mit einem Adressbestand von 90.000 Interessenten. Jetzt würde ich gerne per Zufallsprinzip eine gewisse Anzahl von Interessenten pro PLZ ziehen. Beispiel: Gib mir aus dem PLZ Bereich 81825 = 50 Interessenten und aus 81829 = 35 Int. usw.
Kann mir jemand helfen?
ich habe eine Access Datenbank mit einem Adressbestand von
90.000 Interessenten. Jetzt würde ich gerne per Zufallsprinzip
eine gewisse Anzahl von Interessenten pro PLZ ziehen.
Beispiel: Gib mir aus dem PLZ Bereich 81825 = 50 Interessenten
und aus 81829 = 35 Int. usw.
Kann mir jemand helfen?
naja, helfen nur bedingtin Form einer prinzipiellen Erklärung:
Zunächst eine Hilfstabelle anlegen mit „PLZ“ als Primärschlüsselspalte und mit „AdrAnz“ als Angabe der pro PLZ gewünschten Adress-Anzahl. Die Adress-Tabelle muss weiterhin ein ID-Feld besitzen.
Sodann in einer VBA-Prozedur die IDs pro PLZ-Gruppe ermitteln und mit der RND-Funktion und der in der Hilfstabelle hinterlegten gewünschten Adress-Anzahl („AdrAnz“) daraus eine Wertliste der Plz-Gruppe-IDs als „IN“-Klausel-Kriterium in der Where-Condition für eine Abfrage (SQL_String) erzeugen.
Diesen SQL-String sodann irgendeinem geeigneten Steuerelement (Listenfeld) oder einem Formular zuweisen.
etwas anderer Weg (gleich als Code-Fragment):
dim rs as dao.recordset,db as database
set db = currentdb
set rs=db.openrecordset(„Select * from tblHilfstabelle order by PLZ“, dbOpenSnapshot)
do until rs.eof
db.execute „Select Top " & nz(rs!AdrAnz,1) & " * from tblAdressen into tblErgebnis where PLZ=’“ & rs!PLZ & "’ order by RND(AdressID)
zunächst brauchen die Adressen einen künstlichen Id, dafür verpasst Du der nach PLZ selektierten Menge eine laufende Nr gemäß
LfdNr:
(SELECT Count (\*) FROM Adresse\_in\_PLZ AS Temp
WHERE Temp.Id
Die Funktion RND liefert Zahlenwerte zwischen 0 und 1, die musst Du auf den gewünschten Bereich (min, max LfdNr) spreizen.
Gruß Ralf