Wiederkehrende Termine

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Wiederkehrende Termine

Beitrag von Koverhage »

Ich habe einen Kalender mit Terminen die sich jedes jahr wiederholen und wenn möglich
immer am gleichen Datum stattfinden sollen.
z.B. Freitag 05.12.14 soll wenn möglich auch 2015 am 05.12.2014 stattfinden, was
allerdings ein Samstag wäre und somit kein Werktag.
Wie könnte ich die ganzen Termine vom Dezember 2014 in Dezember 2015 verschieben
ohne dabei Termine auf Samstag/Sonntag zu verschieben.

Eventuell hat jemand so was schon gemacht und kann mir einen Tipp geben.
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von brandelh »

Das Jahr um eins erhöhen und das Datum mit dow() auf Samstag prüfen, dann entweder -1 oder +2
eventuell noch die Feiertage des Jahres prüfen
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von Jan »

Ich hätte jetzt das Gleiche gesagt wie Hubert. Aber es gibt da meiner Meinung nach zwei Probleme:
  • Wenn der Termin immer wieder auf einen Wochenendtag fällt, schiebt der sich von jahr zu jahr immer weiter nach hinten. Wäre das OK?
  • Was ist mit Feiertagen? Die kann man so einfach nicht festsellen. das braucht eine Kombination aus einer Aufstellung fester Feiertage (Allerheiligen, 3. Oktober, Heiligabend liegen immer auf exakt dem gleichen Datum), und den meisten kirchlichen Feiertagen. Die sind nahezu komplett abhängig von einer korrekten Osterberechnung.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von brandelh »

Die Osterberechnung hab ich irgendwo ... wenn nötig kann ich das suchen.

Die Verschiebung ist entweder nach hinten oder nach vorne, da könnte man auch variabel sein je nach Anforderung, aber in einen sauren Apfel muss man beißen ;-)
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von Jan »

Ich hab auch eine Osterberechnung, die ich intensiv nutze. Ein Kunde von mir verschickt Pflanzen, was natürlich vor Feiertagen und langen Wochenenden nicht geht - das überleben die so lange im Karton nicht. Deswegen gibt es da die Kombination aus einer Tabelle fester Feiertage und der Osterberechnung. Und für die Familienforschung brauch ich das ohenhin, weil die Pfarrer immer gerne den Namen des Sonntags in die Urkunden eingetragen haben, und nicht das Datum.

Das Problem mit den Feiertagen, gerade den kirchlichen, ist, das die nicht überall gleich sind. Viele davon gelten nur in katholischen Bundesländern. Da muß man also schauen ob ein entsprechender Unterscheidungsbedarf besteht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von Koverhage »

Nur mal so am Rande:
In meinem Terminkalender werden die gesetzlichen Feiertage angezeigt und auch die "lokalen" entsprechend dem Bundesland
in dem der Kunde ist.

@Jan,

es soll wie im Beispiel der Termin immer am 05.12.

sein.
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von brandelh »

Code: Alles auswählen

es soll wie im Beispiel der Termin immer am 05.12. 
das und die Aussage "nicht am Wochenende" von vorher beißt sich, habe ich da was missverstanden ?

Geburtstage z.B. müssen natürlich vom Termin auf immer dem gleichen Tag lauten,
aber man könnte wenn man wollte die Anzeige auf den Werktag davor setzen, falls es aufs Wochenende fällt.

So würde der Termin nicht "wandern", und in der Anzeige würde man z.B. sehen "Klaus hat am ... Geburtstag" aber eben am Tag zuvor ...

Diese Logik musst du dir überlegen was am Besten passt. Bankzahltage etc. haben andere Regeln als Geburtstage ...

Die grundlegende Funktion bleibt aber gleich !

Code: Alles auswählen

dDate := DatumAddJahr(date())

function DatumAddJahr(dDatum,nAnzJahr)
   local cDate
   if empty(nAnzJahr)
      nAnzJahr := 1
   endif
   cDate := left(dtoc(dDatum),6)+right(strZero(nAnzJahr,10),4)
return ctod(cDate)
PS: ungetestet, Fehler dürfen behoben werden ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von Tom »

Eine Systematik, die ich in irgendeinem Modul für solche Termine verwende, besteht darin, sie mit einer "falschen" Jahreszahl zu speichern, die aber für ein Schaltjahr (!) gelten sollte, also beispielsweise das Jahr 2196. Bei allen Terminprüfungen (z.B. für heute, also den 11.09.) wird zusätzlich geprüft, ob ein Termin für den entsprechenden Tag (also den 11.09.2196) gefunden wird. Wenn das der Fall ist, hängt die Betrachtung des Termins davon ab, ob es ein unbeweglicher Termin ist (Geburtstag) und dann noch, ob es zufällig um den 29.02. geht, wofür dann per Voreinstellung entschieden werden kann, ob der vorige (28.02.) oder der folgende Tag (01.03.) betrachtet wird, wenn das aktuelle Jahr kein Schaltjahr ist. Bei beweglichen Terminen (nur Werktage) muss die Prüfung auf drei Tage im Voraus und in der Vergangenheit erweitert werden, wenn sie z.B. nur an Werktagen stattfinden dürfen. Dafür gibt's dann Funktionen, die ermitteln, ob ein Tag ein Werktag, ein Feiertag, ein Sonntag oder ein Samstag ist. Je nach hinterlegter Regel verschiebt man dann den Quelltermin bzw. legt ihn beim Kopieren entsprechend an.
Herzlich,
Tom
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von Koverhage »

@Hubert,
das und die Aussage "nicht am Wochenende" von vorher beißt sich, habe ich da was missverstanden ?
Ja oer ich habe mich falsch ausgedrückt.
Der Termin soll immer am 05.12. sein ausgenommen hiervon natürlich das Wochende.
In dem Beispiel müsste also der neue Termin entweder am 04.12. stattfinden oder am 07.12.

In Deiner Function addierst Du ja nur ein Jahr. Das ist schon klar. Danach muss ich mit day of week testen ob Samstag, Sonntag oder Feiertag ist.
Das schwierige ist ob ich vom Datum alle Termine vom 05.12. einen Tag zurücksetze, oder 2 Tage vorsetze.
Gruß
Klaus
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von Jan »

Hallo klaus,

OK, jetzt versteh ich das. Du hast also eine dbf, in der die Temrine drin stehen, und in der Planung für das komende Jahr wird der Tag gesucht, der dazu passt. Also direkt der Tag, wenn es nicht Wochenende oder Feiertag ist, und ansonsten so wenig wie möglich verschieben.

Ich hatte Dich so verstanden, das die Termine des kommenden Jahres anhand der Termine dieses Jahres berechnet werden sollen - Du hattest gesagt, Du hast einen Kalender, von ener dbf war keine Rede gewesen. Dann hätte es die von mir angedeuteten Verschiebungen geben könnne.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von brandelh »

Koverhage hat geschrieben:Das schwierige ist ob ich vom Datum alle Termine vom 05.12. einen Tag zurücksetze, oder 2 Tage vorsetze.
das hat nix mit Programmierung zu tun, das ist eine fachliche Frage ... was würde ein Mensch der sich auskennt in dieser Situation tun ;-)
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Wiederkehrende Termine

Beitrag von Wolfgang Ciriack »

Lieber vorziehen, dann kann man ihn immer noch nach hinten verschieben. Aber so etwas sollte man über eine Option dem Kunden überlassen.
Aber das was Tom schrieb ist wichtig, das Ursprungsdatum 5.12. lassen, sonst wandert der Termin von Jahr zu Jahr evtl. immer weiter vor.
Viele Grüße
Wolfgang
Antworten