Tach!
- Wiederholungen von Terminen. Es wäre einfach, wenn ich wüßte, dass ein Termin periodisch wiederholt wird bis zu einem Datum X. Das entspricht aber nicht immer (oder nur selten) der Praxis. Man macht dort nämlich einen Termin, gibt ihm eine periodische Wiederholung und weiß noch nicht, bis wann das so sein wird. Also denke ich mir, dass ich die vorhandenen Termine beim Abrufen des Kalenders erst erzeugen darf. (Ansonsten müßte ich ja auf Verdacht n Termine anlegen und könnte immer noch nicht sicher sein, dass ein User sich nicht einen Kalenderzeitraum anschauen möchte, der vor meinen auf verdacht angelegten n Terminen ist)
Termine der Vergangenheit, die gar nicht stattgefunden haben, müssen auch nicht in den Kalender. Was ist das Problem, das du da genau siehst und das ich nicht erkenne?
Prinzipiell hast du die beiden Möglichkeiten, die du schon erkannt hast. Regel speichern und beim Abruf anwenden oder die Regel beim Erzeugen anwenden und konkrete Termine draus machen. Es wird nur dann eventuell schwierig, wenn die Regel gelöscht wird dass du dann alle dazugehörigen Termine, zumindest im Bereich der Zukunft, findest. Es gäbe da auch noch die Mischform, dass die Termine per Regel berechnet und angezeigt werden, aber bei konkreten Zusatzdaten die Termine fest in der Datenbank stehen. Dann musst du aber auch sehen, dass die Regel keinen zweiten Termin erzeugt.
Ich kann es nicht beurteilen, was in deinem Anwendungsfall sinnvoll(er) ist.
Bedeutet aber im Umkehrschluss, dass ich bei jedem Erzeugen der Kalenderansicht alle(!) Termine durchgehen muß, die es jemals gab, um nach event. Wiederholungen zu suchen.
Keine Ahnung. Vielleicht musst du da zwischen Vorschau (regelbasiert berechnete Anzeige) und tatsächlich stattgefundenhabenden Terminen (physischer Datensatz) einen Kompromiss finden.
- Termine können Datumszuweisungen sein (01.01.2017). Will ich nun die erste Kalenderwoche anzeigen, kann ich im WHERE-Teil einfach ein WHERE Termin BETWEEN nutzen. Termine können aber auch Terminzeiträume sein (29.01.2017 - 08.02.2017). Will ich nun die ersten 10 Kalenderwochen 2017 anzeigen, wie gestaltet sich dann meine Query bezogen auf den WHERE Teil (s.o.)
Ist die konkrete Frage, wie man sich überschneidende Zeiträume findet?
Abfragezeitraum |------------|
Terminzeitraum |-------|
Dann kannst du schauen, ob Start oder Ende im Abfragezeitraum liegen (logisches Oder, nicht das Exclusiv-Oder der natürlichen Sprache).
dedlfix.