0

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

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    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

    • Christian_Klar
    • vor 3 Jahren
    • Gemeldet - anzeigen

    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