Hallo,
ich möchte in eine Spalte meiner Datenbank für jede Zeile eine neue Zufallszahl zwischen 1947 und 1993 erstellen und erhalte trotz des Codes von der Tipps&Tricks Datenbank (http://www.access-o-mania.de/index.php?ind=tipps&op=entry_view&iden=95) immer den gleichen Wert in jeder Zeile:
Mein Code sieht so aus:
Public Function genZufallsZahl(ByVal Untergrenze As Variant _
, ByVal Obergrenze As Variant _
, ByVal sType As Variant _
) As Variant
Randomize
Select Case sType
Case 1
genZufallsZahl = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
Case 2
genZufallsZahl = (Obergrenze - Untergrenze) * Rnd + Untergrenze
End Select
End Function
Und in der Aktualisierungsabfrage sieht es so aus:
UPDATE Tabelle SET Tabelle.Feld = genZufallsZahl(1947,1993,1);
Ergebnis:
Es wird 1x eine Zufallszahl generiert und dann wird diese für jede Zeile gleich genommen. Also für die nächste Zeile keine neue Zufallszahl.
Was muss ich noch machen, damit er für jede Zeile eine neue Zufallszahl errechnet?
Vielen Dank!
Moin,
schau mal, ob der Anhang Dir weiterhilft.
Gibt im Modul eine Funktion, die via Abfrage aufgerufen wird und in der Tabelle die Datensätze durchscannt und mit einer Zufallszahl nach der von Dir beschriebenen Variante ersetzt.
Harald
Moin
sorry, hatte festgestellt, dass mein erster Vorschlag eine Macke hatte => hatte den zurückgezogen und durch einen Punkt ersetzt, da ich den Beitrag nicht mehr löschen konnte.
Hoffentlich ist jetzt der Vorschlag ok.
Harald
[Anhang gelöscht durch Administrator]
Hallo,
das geht auch einfacher, wenn man die SQL dazu zwingt, die Funktion pro DS aufzurufen:
Public Function genZufallsZahl(ByVal Untergrenze As Variant _
, ByVal Obergrenze As Variant _
, ByVal sType As Variant _
, ByVal Dummy As Variant _
) As Variant
Randomize
Select Case sType
Case 1
genZufallsZahl = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
Case 2
genZufallsZahl = (Obergrenze - Untergrenze) * Rnd + Untergrenze
End Select
End Function
UPDATE Tabelle SET Tabelle.Feld = genZufallsZahl(1947,1993,1,[Feld]);
danke!
beide lösungswege klappt, wobei ich das letztere vorziehe, da es irgendwie schneller bearbeitet wird...