Hallo. Knifflige Angelegenheit (für mich).
Ich möchte eine Zufallszahl erzeugen, dazu habe ich in einem Textfeld als Standardwert "=Int((9999*ZZG())+1)" eingegeben. Ich habe festgestellt, dass der Wert immer mit der gleichen Zahl anfängt ( erster Datensatz). Wenn die DB geschlossen und wieder geöffnet wird. Ich hatte mir überlegt, wenn ich zusätzlich aus dem Datum (jjmmtthhnnss) OHNE : nehme kommt ja eine Zahl zum Vorschein, die ich in der Formel einbeziehen / addieren möchte, da durch die Zeiten eine neue Zahl erscheint werde ich immer eine neue Zufallszahl erhalten. Funktioniert nicht, da die Zahl ja als "verstecktes" Datum erscheint, die mit 1 ausgegeben wird. Ich hoffe das ich mein Problem richtig zum Ausdruck gebracht habe. Könnt Ihr mir da weiterhelfen ?
Hallo,
das Datum ist von Hause aus bereits ein Zahl (Double), das Format ist hier überflüssig und macht aus dem Datum einen Text.
Zeige Deine Versuche mit dem Datum.
Warum zeigst Du das übrigens nicht gleich, ohne Nachfrage?
Hallo,
schau mal in die faq http://www.donkarl.com?FAQ3.17 das sollte dein Problem lösen.
Vielleicht hilft auch ein kurzer Blick in OH
ZitatDie Rnd-Funktion gibt einen Wert zurück, der kleiner als 1, aber größer als oder gleich Null ist.
Der Wert von Zahl bestimmt, wie Rnd eine Zufallszahl generiert:
Für jeden gegebenen Standardwert wird dieselbe Zufallszahlenfolge generiert, weil bei jedem nachfolgenden Aufruf der Rnd-Funktion die vorherige Zahl als Startwert für die nächste Zahl in der Folge dient.
Bevor Sie Rnd aufrufen, verwenden Sie die Randomize-Anweisung ohne Argument, um den Zufallszahlengenerator mit einem Startwert zu initialisieren, der auf dem Systemzeitgeber basiert.
Verwenden Sie die folgende Formel, um ganzzahlige Zufallszahlen innerhalb eines bestimmten Bereichs zu erzeugen:
Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
Obergrenze steht hier für die größte Zahl des Bereichs und Untergrenze für die kleinste Zahl des Bereichs.
Anmerkung Wenn Sie Folgen von Zufallszahlen wiederholen möchten, rufen Sie Rnd mit einem negativen Argument auf, unmittelbar bevor Sie Randomize mit einem numerischen Argument verwenden. Durch Verwenden von Randomize mit demselben Wert für Zahl wird die vorherige Folge nicht wiederholt.
Hallo zusammen.
Ich habe die frage heute Morgen im Stau schnell geschrieben. Nun kommt mein Versuch mit dem Datum
=Int((9999*ZZG([DatAlsZahl]))+1)
Im Textfeld DatAlsZahl habe ich Standardwert =Jetzt() geschrieben und das Format auf jjmmtthhnnss gesetzt.
Die Zahl fängt immer mit dem gleichen Wert an. Was habe ich da falsch gedacht ? oder besser gefragt .... was habe ich mir dabei gedacht ;D
Hallo,
Jetzt ist wie gesagt von Hause aus bereits eine Zahl. Und Format macht Text aus der Zahl.
Versuche es mal so:
=Int((9999*ZZG(Jetzt()))+1)
Beachte auch die anderen Hinweise im Thema.
Das ist so. Rnd (https://msdn.microsoft.com/de-de/library/f7s023d2(v=vs.90).aspx) erzeugt Pseudo-Zufallszahlen, deren Reihenfolge sich bei gleichem Initialwert wiederholt.
@ Lachtaube. Das ist der Grund weshalb bei jedem neuen Datensatz immer die gleich Zahl kommt, deshalb hatte ich mir gedacht wenn ich die Formel mit einem sich immer ändernen Wert aufbaue (Datum, als zahl.... die immer als Zahl erstellt wird ;D) kann ich das umgehen.
@ Klaus, wenn ich =Int((9999*ZZG(Jetzt()))+1) eingebe habe ich keine Änderung. Fängt immer mit 7055 an. Wie gesagt wenn ich die DB schließe und wieder öffne.
Kann mir da jemand weiterhelfen ?
Hallo Udo,
Befülle das Textfeld mit VBA.
Randomize
Me.Textfeld = Int(9999*Rnd()+1)
gruss ekkehard
Das ist es !!! Super.
Vielen Dank ekkehard, Klaus, Lachtaube und Jürgen.
Ich bin soooo froh dass es euch und diese Seite gibt. Access macht immer mehr Spaß, nur meine Freundin findet das nicht so ;D