String Random Generator/Passwörter/doppelte Vergabe ausschliessen
Hallo!
https://forum.ninox.de/t/q6hra1y
Dieser Post ist schon älter (in der "Goldgrube" gefunden) und meine Suchwörter waren:
String Random Generator, Passwortzahlen, Seriennummer. u.s.w und alles was mit erzeugten einmaligen Nummern / Zahlen erzeugte Liste of Codes mit der Möglichkeit der Überprüfung hinsichtlich von doppelt vergebenen z.B. Seriennummer bzw Codes die zu Seriennummer passen.
Das habe ich weiter unten in dem Post gefunden:
let chars := "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let l := 26;
substr(chars, floor(random() * l), 1)
+ substr(chars, floor(random() * l), 1)
+ substr(chars, floor(random() * l), 1)
+ substr(chars, floor(random() * l), 1)
>Beispiel: EEMB
Der Post war von @Frank Böhmer und ist 7 Jahre alt! Voran gegangen war ein Post von @leonid_semik und war ähnlich meiner Fragestellung. Das war dann ein glücklicher Fund.
Habe das dann verstanden und nach meinen Vorstellungen erweitert
let chars := "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
let l := 35;
substr(chars, floor(random() * l), 1) + substr(chars, floor(random() * l), 1) +
substr(chars, floor(random() * l), 1) +
substr(chars, floor(random() * l), 1) +
substr(chars, floor(random() * l), 1) +
substr(chars, floor(random() * l), 1) +
substr(chars, floor(random() * l), 1)
>Beispiel: 7K74B97
Nun die Frage: Wie vermeide ich Doppelvergabe bzw. wie kann ich das überprüfen lassen?
23 Antworten
-
Versuche es mal so. Script ist für einen Button. Wenn das Feld frei bleibt, mußt du noch einmal klicken. Mirko
let chars := "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; let result := ""; for i in range(0, 7) do let rand := substr(chars, floor(random() * 35), 1); result := result + rand end; if cnt((select TABELLE)[Textfeld = result]) < 1 then Textfeld := result end
-
Wenn ich einen Vorschlag machen darf:
Ich nehme an, dass let chars definiert, welche Buchstaben und welche Ziffern für das result verwendet werden sollen. Dann würde ich die Null 0 und den Buchstaben O weglassen. Das führt in der Praxis dann doch immer wieder dazu, dass man nicht weiß, worum es sich handelt. -
said:
Wenn ich einen Vorschlag machen darf:Immer!
said:
Das führt in der Praxis dann doch immer wieder dazu, dass man nicht weiß, worum es sich handelt.Erwischt, ich kann mich noch erinnern, da gab es noch ein "rtfm". Der Mut soll mich nicht verlassen,
so schnell gebe ich nicht auf, bin ich gerade doch erst am Anfang. Mein Workoutsystem ist Try &Error,
angerührt mit so etwas wie Ahnung und davon ist auch noch nicht so viel da.
-
Das ist mir auch aufgefallen, wenn ich im gleichen Formular Buttons mitlaufen lasse (QR-Code Erzeugung bzw. Die Taste vom oben genannten Code noch mal berühre, kommt es zu diesem Phänomen, dass im Formular die Zahle/codes sich änder aber in der Tabelle nicht. Das ist jetzt nichts ernstes denn das ist meine Test/Lern DB und ich versuche bestimmte Fragen und Lösungen umzusetzen.
-
-
said:
Bei fortlaufender Nummerierung bietet sich immer an, die Datensätze einer Tabelle zu zählen und damit dann seine Nummernkreise aufzubauen.Vielleicht verstehe ich dich falsch, aber der Sicherheit halber: Die Zahl der Datensätze für eindeutige, laufende Nummern zu verwenden, ist prinzipiell keine gute Idee, weil es dabei zu doppelten Nummern kommen kann, wenn Datensätze gelöscht werden (z. B. leere). Das Löschen von Datensätzen gänzlich zu verhindern, macht wiederum nur bei Rechnungen Sinn (GoBD).
Besser ist es, immer die aktuell höchste Nummer zu ermitteln und um 1 zu erhöhen.
-
said:
(Zahnrad oben links, "Felder bearbeiten..."Schon klar, ist einer von den Wegen zur Bearbeitung/Einstellung. Mir fehlt etwas so wie dieser Datensatz dieser Tabelle dürfen nicht gelöscht werden. Sowie Ausschluss von Bearbeitung /Manipulation von bestimmten Datensatzfelder.
Also ich betätige das Papierkorbsymbol oder das Klonsymbol und die Meldung erscheint: Vergiß es!
-
said:
Leider lässt sich das Löschen von Datensätzen mit Bordmitteln nicht komplett verhindern, sondern nur auf eine Rolle beschränken, z. B. "admin", was bei mehreren "editor"-Nutzern immerhin schon hilfreich sein kann. Man kann den Spieß aber natürlich auch umdrehen und das Löschen nur der Rolle "editor" erlauben. Dann ist die Funktion für alle Nutzer mit "admin"-Rolle deaktiviert ...Du könntest eine Rolle "Delete" erstellen, das Recht zum Löschen auf Tabellenebene nur der Rolle "Delete" zuweisen und allen Nutzern mit Löschrechten zusätzlich zu "Editor" usw. die Rolle "Delete" geben. Nicht perfekt, könnte aber für Deine Zwecke ausreichen. Der Admin kann sich natürlich jederzeit auch die Rolle "Delete" zuweisen, auch wenn er sie nicht hat, aber der Editor kann das z. B. nicht.
Content aside
- Status Answered
- vor 1 JahrZuletzt aktiv
- 23Antworten
- 127Ansichten
-
7
Folge bereits