Neue Tabelleneinträge mit Datum und KW erstellen.
Hallo Forum!
Versuche es mal ohne Bild zu erklären. :-)
In der Tabelle TblReinigungstermine habe ich z.B. in 14 tägigem Abstand Datums.
Die Spalte KW dient nur zur besseren Übersicht, sie ist nicht in der Tabelle enthalten.
ReinigungsDatum. KW
04.02.2021. 5
18.02.2021. 7
04.03.2021. 9
18.03.2021. 11
01.04.2021. 13
15.04.2021. 15
29.04.2021. 17
usw.
28.10.2021. 43
11.11.2021. 45
25.11.2021. 47
09.12.2021. 49
Eine andere Tabelle TblIntervalle enthält
IntervallID. ReinigungVon. ReinigungBis
4 Januar März
2 April Oktober
4 November. Dezember
Nun sollten neue Einträge in TblKundenreinigungstermine erstellt werden:
Das erste ReinigungsDatum > Heute. wird erstellt 04.02.2021 zu der KalenderWoche in der sich das Datum befindet also KW 5 wird die IntervallID 4 hinzugezählt da sich das Datum auch zwischen Jänner und März befindet.
Als nächstes Datum sollte der 04.03.2021 erstellt werden da KW 5 + IntervallID 4 die KW 9 ergibt. Ab April ändert sich der Intervall auf 2 und dann wieder auf 4 je nach dem Monat in dem sich das Datum befindet.
Ich komm bei meinem Scriot einfach nicht mehr weiter, keine Idee mehr. Habe soweit möglich alles unnötige weggelassen. Die Datums je Monat werden eingetragen das funktioniert aber dann die bestimmten Kalenderwochen noch raus zu filtern. Hmmm ??
do as server
let me := this;
let myToday := today();
let myVertragSID := ID;
let myBezirkID := TblAdressen.BezirkID;
let myTonnenID := TonnenID;
let myTGroesse := TonnenGroesseID;
let myVertragID := VertragID;
let myTPreis := first((select TblVertraegeDetails)[VertragsID = myVertragID and TonnenGroesseID = myTGroesse].TonnenPreis);
for i in select TblReinigungstermine where BezirksID = myBezirkID and TonnenID = myTonnenID and ReinigungsDatum > myToday do
for ii in select TblIntervalle where PaketID = myVertragID do
let myMonthBegin := ii.ReinVon;
let myMonthEnd := ii.ReinBis;
if number(format(i.ReinigungsDatum, "MM")) >= myMonthBegin and number(format(i.ReinigungsDatum, "MM")) <= myMonthEnd then
let newKRT := (create TblKundenReinigungstermine);
newKRT.(TblKundenVertraege := me);
newKRT.(Termin := i.ReinigungsDatum);
end
end
Also, bin für jede Idee oder Anregung Dankbar.
LG Andreas
2 Antworten
-
Hallo Andreas,
nach fünf mal Lesen bin immer noch genauso schlau wie vorher. Vielleicht hilft das:
yearweek(Datum) ergibt bei 04.03.2021 -> "2021/09"
week(Datum) ->9
yearmonth(Datum) ->"2021/03",
year(Datum)->2021
Leo -
Hallo Leo!
Danke für die Antwort. Es ist immer schwierig für andere die eigenen Tabellen und Scripte zu erklären.
Also die Tabelle der Reinigungsdatums besteht bereits, das. sind die Datums die ich beim ersten mal gesendet habe. Die Tabelle Intervalle besteht ebenfalls.
Der Intervall dient dazu die Kalenderwochen hochzuzählen.
IntervallID. ReinigungVon. ReinigungBis
4 Januar März
2 April Oktober
4 November. Dezember
Das was dann in die neue Tabelle (create TblKundenReinigungstermine).Termine entstehen soll wären die fett geschriebenen Termine.
Die Spalten KW, intervall,Von und Bis habe ich zum besseren Verständnis dazugeschrieben.
Die KW 7, KW11, KW47 dürfen nicht dabei sein .
Termine KW InterVall Von Bis
04.02.2021. 5 + 4 Januar März
04.03.2021. 9 + 4 Januar März
01.04.2021. 13 + 2 April Oktober
15.04.2021. 15 + 2 April Oktober
29.04.2021. 17 + 2 April Oktober
.......
.......
.......
28.10.2021. 43. +. 2 April Oktober
11.11.2021. 45. + 4 November. Dezember
09.12.2021. 49. + 4 November. Dezember
Falls es eine andere Möglichkeit gibt damit ich das besser Erklären kann, gerne. :-)
Vielen Dank LG Andreas
Content aside
- vor 3 JahrenZuletzt aktiv
- 2Antworten
- 381Ansichten