0

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

null
    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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)

    • Christian_Klar
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    • Christian_Klar
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    Bildschirmfoto 2020-09-07 um 22.07.54

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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.

    • Christian_Klar
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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)

    Bildschirmfoto 2020-09-08 um 20.23.32

    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)

    Bildschirmfoto 2020-09-08 um 20.25.46

    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