Access Datenbank - Daten per Zufallsprinzip

Hallo,

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?

Danke!

Hallo,

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)

rs.movenext
loop

rs.close
set rs=nothing

(unchecked)

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Moin, thinkred,

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