Zufallszahl mit Schleife generieren
Ein Hallo an alle Experten,
ich bin leider nicht der absolute Ninox-Programmiercrack und benötige daher etwas Hilfe.
Habe mir diesen Code zur Generierung einer Zufallszahl hier aus dem Forum geholt und an meine Bedürfnisse angepasst.
let myZ := 1 + floor(99999 * random());
'Design ID' := myZ;
if cnt((select Design)['Design ID' = myZ]) > 1 then
alert("Achtung, diese Design ID existiert bereits");
'Design ID' := null
else
'Design ID' := myZ
end
Jetzt möchte ich diesen Code aber nicht manuell anstoßen, sondern beim Anlegen eines Datensatzes automatisiert ablaufen lassen. Sprich: "Generiere eine Zufallszahl -> guck nach ob es sie bereits gibt -> wenn nicht dann trage sie ein -> wenn doch, generiere eine neue und trage sie ein - usw.". Also im Prinzip eine Schleife, ohne den derzeit vorhandenen Alert.
Danke vorab und schöne Weihnachten an die Community
Dietmar
3 Antworten
-
Hallo Dietmar. Der Code kommt in den Tabelleneinstellungen unter "Trigger bei neuem Datensatz". Die if-Bedingung ist nötig, damit der Code ab 100000 Datensätzen nicht abstürzt. Mirko
if cnt((select Design).'Design ID') < 100000 then let randNumber := first((select Design).'Design ID'); while cnt((select Design)['Design ID' = randNumber]) = 1 do randNumber := floor(random() * 99999) +1 end ; 'Design ID' := randNumber end
-
Hallo Mirko,
vielen Dank für die auf dem Silbertablett servierte Lösung, es funktioniert so wie gewünscht. Jetzt muss ich mich nur mal damit beschäftigen, zu verstehen wie der Code arbeitet.
Gruß Dietmar
-
- If: wenn die Gesamtzahl der Ziffern der Tabelle unter 100000 liegt...
- let: weise der Variablen randNumber eine beliebige, schon vorhandene Ziffer zu...
- while: solange es diese Ziffer schon gibt ... (cnt() = 1) do ...
- weise der obigen Variablen eine neue Zufallsziffer zwischen 1-100000 zu
- while bricht ab, wenn diese neu ist (cnt() = 0)
- Variable wird Deinem Feld zugewiesen
Content aside
- Status Answered
- vor 2 JahrenZuletzt aktiv
- 3Antworten
- 66Ansichten
-
2
Folge bereits