Datumsvergleich Zeitumstellung
Hallo Forum und Support!
Seit einigen Tagen plage ich mich mit dem Problem des Datumsvergleiches. Im Script können je nach Einstellung (myInterID kann *1 oder *2 oder *4 usw. sein),wöchentlich, 14 tägig, monatlich usw. Reinigungstermine erstellt werden die auch gleich mit einer Tabelle Feiertage verglichen und verknüpft wird. Damit sehe ich welches Datum für den Reinigungstermin geändert werden muss. Der Durchlauf geht immer bis zm Ende des Jahres.
Ich teste das gerade für 2021. Funktioniert auch bis zur Umstellung auf Sommer oder Winterzeit. Ich denke das es an der Zeile die Fett und Unterstrichen hinterlegt ist liegt. Ich hoffe Ihr könnt euch etwas darunter vorstellen und habt eine Idee wie ich das anders lösen könnte.
Vielen Dank, Andreas
let myJahr := number(text(Jahr));
let myBezID := ID;
let myTonnenID := BehaelterID;
let myTonne := text(Behaelter);
let myInterID := IntervallID;
let myRB := Bemerkungen;
let myDatFirst := Erstreinigung;
let myDatEnd := date(year(Erstreinigung), 12, 31);
do as server
for ii from date(year(myDatFirst), month(myDatFirst), day(myDatFirst)) to myDatEnd step 1000 * 60 * 60 * 24 * 7 * myInterID do
let my := this;
let newReinigung := (create TblReinigungstermine);
newReinigung.(TblBezirke := my);
newReinigung.(ReinigungsDatum := ii);
newReinigung.(TonnenID := myTonnenID);
newReinigung.(BezirksID := myBezID);
newReinigung.(ReinigungsBemerkung := myRB);
newReinigung.(TonnenID := myTonnenID);
for i in select TblReinigungstermine where ReinigungsDatum = ii and not TblFeiertage do
let myFT := first(select TblFeiertage where Datum = i.ii);
i.(TblFeiertage := myFT);
end
end
end
4 Antworten
-
das sollte die Zeile Fett und Unterstrichen sein :-)
for ii from date(year(myDatFirst), month(myDatFirst), day(myDatFirst)) to myDatEnd step 1000 * 60 * 60 * 24 * 7 * myInterID do
-
Hallo Andreas,
ich würde es so machen
---
while myDatFirst<=myDatEnd do
...
newReinigung.(ReinigungsDatum := myDatFirst);
myDatFirst:=myDatFirst+7*myInterID
...
...
...
end----
Leo
-
Hallo Leo!
Vielen Dank für die Hilfe.
Hab es nach einiger Zeit geschafft da es für den Vergleich bei der Zeitumstellung nicht gleich funktioniert hat.
Wichtig ist das ie addition nur beim Tag passiert.
Danke noch .
LG Andreas
while myDatFirst <= myDatEnd do
let my := this;
let newReinigung := (create TblReinigungstermine);
newReinigung.(TblBezirke := my);
newReinigung.(ReinigungsDatum := myDatFirst);
newReinigung.(TonnenID := myTonnenID);
newReinigung.(BezirksID := myBezID);
newReinigung.(ReinigungsBemerkung := myRB);
newReinigung.(TonnenID := myTonnenID);
for i in select TblReinigungstermine where ReinigungsDatum = myDatFirst and not TblBehaelter do
let myTonne := first(select TblBehaelter where ID = i.TonnenID);
i.(TblBehaelter := myTonne)
end;
for i in select TblReinigungstermine where ReinigungsDatum = myDatFirst and not TblFeiertage do
let myFT := first(select TblFeiertage where Datum = i.myDatFirst);
i.(TblFeiertage := myFT)
end;
myDatFirst := date(year(myDatFirst), month(myDatFirst), day(myDatFirst) + 7 * myInterID) -
Danke auch noch für eure wirklich tolle und schnelle Unterstützung.
Andreas
Content aside
- vor 4 JahrenZuletzt aktiv
- 4Antworten
- 787Ansichten