Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Immer gleiche Werte trotz Zufallsgenerator

Begonnen von inkognito23, April 23, 2011, 07:27:50

⏪ vorheriges - nächstes ⏩

inkognito23

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!



bahasu

#1
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
Servus


bahasu

#3
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]
Servus

DF6GL

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]);

inkognito23

danke!
beide lösungswege klappt, wobei ich das letztere vorziehe, da es irgendwie schneller bearbeitet wird...