0

Sortieren nach Datum

Ich benötige wieder eure Hilfe

Ich habe in meiner Tabelle eine Spalte "Buchungs Nr.". Die Nummer wird automatisch beim erstellen eines neun Datensatztes vergeben. Weiters ist eine Spalte "Datum", nach der die Tabelle sortiert wird.

Es kann vorkommen, dass ein Datensatz mit einem früheren Datum erfasst wird und dadurch die Reihenfolge der Buchunsnummer nicht fortlaufend ist. Ist es möglich, wenn in einem Datensatz das Datum eingegben wird, die Tabelle automatisch nach Datum sortiert wird und die Buchungs Nr. dementsprechend neu fortlaufend vergeben wird?

Danke für eure Hilfe

Rudi

7 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Rudi,

    Prinzipiel ist es möglich. Z.B. als Trigger nach Änderung im Feld Datum:

    ---

    var myCount:=1;
    for i in select TABELLENNAME order  by Datum do
    i.'Buchungs Nr.':=myCount;
    myCount:=myCount+1
    end
    ---

    je nach Tabellengröße kann es dabei zu Performance-Problemen kommen

    Grüße

    Leo

    • Rudolf_Schabl
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Super!! es funktioniert.

    Herzlichen Dank für die Hilfe 

    Rudi

    • Rudolf_Schabl
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leonid

    Ich habe noch eine Frage. Bei dieser Formel wird in der gesamten Tabelle die Buchungsnummer neu vergeben (was eigentlich nicht nötig ist) und wie du geschrieben hast wird die Performance verschlechtert. Ist es machbar, dass die neue Nummer ab dem kleinerm Datum der eingfügten Buchung, neu vergebn wird. Da sind es normalerweise nur wenige Nummern(max 10 - 20) die neu vergeben werden müssen.

     

    Liebe Grüße 

    Rudi

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Rudi,

    etwa so:

    ---

    let me:=this;
    let myTab:=select TABELLENNAME where Datum>=me.Datum;
    var myCount:=max(select TABELLENNAME where Datum<me.Datum.'Buchungs Nr.')+1;
    for i in myTab order by Datum do
    i.'Buchungs Nr.':=myCount;
    myCount:=myCount+1
    end

    ---

    Leo

    • Rudolf_Schabl
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leonid

    Es zeigt folgende Fehlermeldung:

    Expression does not return a record: me.Datum in Zeile 3 Spalte 50

     

    lg

    Rudi

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

    Hallo Rudi, ich vermute, Zeile 3 müsste folgendermaßen lauten:

     

    var myCount := max((select TABELLENNAME where Datum < me.Datum).'Buchungs Nr.') + 1;

    • Rudolf_Schabl
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke genau das ist es gewesen

    lg

    Rudi