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
-
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
-
Super!! es funktioniert.
Herzlichen Dank für die Hilfe
Rudi
-
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
-
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
-
Hallo Leonid
Es zeigt folgende Fehlermeldung:
Expression does not return a record: me.Datum in Zeile 3 Spalte 50
lg
Rudi
-
Hallo Rudi, ich vermute, Zeile 3 müsste folgendermaßen lauten:
var myCount := max((select TABELLENNAME where Datum < me.Datum).'Buchungs Nr.') + 1;
-
Danke genau das ist es gewesen
lg
Rudi
Content aside
- vor 3 JahrenZuletzt aktiv
- 7Antworten
- 484Ansichten