Reihenfolge generieren
Hallo Forum!
Ich müsste in meiner Tabelle tblSortierung welche Gruppiert ist in OrtBezirk in der Spalte Reihenfolge per Button eine aufsteigende Zahlenreihenfolge generieren. Also z.B. 1,2,3,4,5,6,7,8,9,10 kann aber auch 2,4,6,8,10,12,14,16,18,20 oder 3,6,9 usw. sein. Beginnend beim ersten Datensatz in der Gruppe bis zum letzten Datensatz der Gruppe. Hoffe es ist verständlich und jemand hat eine Idee dazu.
Vielen Dank und LG
5 Antworten
-
Hallo Andreas, vielleicht so (als Code des Funktionsfeldes 'Reihenfolge'):
let myOrt := OrtBezirk;
let thisNr := number(Nr);
cnt(select tblSortierung where OrtBezirk = myOrt and number(Nr) <= thisNr)
-
Hallo Copytexter !
Danke mal für den Tip. Funktioniert leider nicht oder ich habs nicht ganz kapiert :-)
Bin auf jeden Fall weiter im Selbststudium.
LG Andreas
-
Hallo Copytexter !
Habs jetzt verstanden und funktioniert auch bestens. Ich denke nur das ich das falsch erklärt habe. Ich probiers nochmal mit anderem Beispiel.
Also, in der Tabelle werden neue Datensätze importiert wobei in der Reihenfolge eine Null steht. Das Feld Reihenfolge ist ein bestehendes Feld.
In diesem Beispiel möchte ich die Reihenfolge neu durchnummerieren. Also aus der ersten 0 wird eine 1 aus der zweiten 0 eine 2 usw.
Hoffe das war verständlicher.
Falls dir da auch noch was einfällt, wäre super.
Vielen Dank nochmals.
LG Andreas
-
Hallo Andreas, mit einem Funktionsfeld und obigem Code würden die Datensätze ja permanent durchnummeriert, auch wenn neue Datensätze dazukommen. Man könnte das statt dessen natürlich auch mit einer Schaltfläche machen und die berechnete Nummer in ein Datenfeld schreiben:
let myOrt := OrtBezirk;
let lfdNr := 1;
let myArr := (select tblSortierung where OrtBezirk = myOrt);
for i in myArr do
i.(Reihenfolge := lfdNr);
lfdNr := lfdNr + 1
end
Und da du oben ja auch noch verschiedene Schrittweiten für die Nummerierung genannt hattest, könnte man statt der 1 auch noch ein entsprechendes Zahlenfeld angeben:
let myOrt := OrtBezirk;
let lfdNr := Schrittweite;
let SchrW := Schrittweite;
let myArr := (select tblSortierung where OrtBezirk = myOrt);
for i in myArr do
i.(Reihenfolge := lfdNr);
lfdNr := lfdNr + SchrW
end
Oder die Schrittweite über einen Dialog abfragen:
let myRes := substr(dialog("Nummerieren", "Bitte Schrittweite angeben", ["1", "2", "3", "Abbrechen"]), 0, 1);
if myRes != "A" then
let myOrt := OrtBezirk;
let lfdNr := number(myRes);
let SchrW := number(myRes);
let myArr := (select tblSortierung where OrtBezirk = myOrt);
for i in myArr do
i.(Reihenfolge := lfdNr);
lfdNr := lfdNr + SchrW
end
end
Allerdings bin ich mir immer noch nicht sicher, ob ich das Problem richtig verstanden habe.
-
Hallo Copytexter !
Das Script funktioniert und du hast das alles richtig verstanden. Ich muss noch Erklärung nachliefern.
Der Haken ist die Ninox Datensatznummer.
Ich Importiere die Daten, Gruppiere und Sortiere Aufsteigend nach der Reihnfolge. (sieht z.B. wie im nachfolgenden Bild aus)
Danach führe ich mit einer Befehlsschaltfläche dein Script aus und es wird natürlich bei der niedrigsten Datensatznummer mit 1 begonnen. (sieht dann so aus)
Es müsste so sein das die Zahlenreihe 1 bis x immer vom ersten Datensatz der Gruppierung bis zum letzten Datensatz der Gruppierung verläuft. Unabhängig von der Datensatznummerierung. Kurz noch zum Hintergrund warum ? Neue Kundendaten mit 0 bekommen Manuell die Reihenfolge eingegeben da wir in den Ortschaften bei der Mülltonnenreinigung unsere Touren nach den hinterlegten Adressen abfahren .
Wäre toll wenn das möglich wär.
Danke noch für die Hilfsbereitschaft und die Mühe, es ist ja nicht einfach sich in die Arbeiten anderer gedankklich reinzuhängen.
LG Andreas
Content aside
- vor 4 JahrenZuletzt aktiv
- 5Antworten
- 645Ansichten