Wie erstelle ich wiederkehrende Kalenderereignisse?

8

Ich benutze asp mvc 3, jquery Vollkalender, ms SQL Server 2008 und c #.

Ich frage mich, ob jemand weiß, wie man wiederkehrende Ereignisse macht?

Ich bin unsicher, wie ich sie machen soll.

Zum Beispiel können Sie in Google Kalender einen Termin für immer wiederholen. Ich bezweifle, dass sie diesen Termin X mal in der Datenbank generieren.

Ich frage mich, wie ich eine Zeile in meiner db haben könnte und irgendwie weiß, dass ich sie bei Bedarf aufrufen kann.

Auch Google Kalender und Outlook haben viele Wiederholungsoptionen wie Wiederholung im 1. Monat, letzten Monat und so weiter.

Gibt es Bibliotheken, die das haben? Oder muss ich es von Grund auf neu machen?

P.S

Ich bin auf einem freigegebenen Host, so dass eine Lösung mit eingeschränkten Rechten arbeiten muss.

    
chobo2 09.02.2011, 19:32
quelle

3 Antworten

9

Das Erzeugen aller möglichen Wiederholungen eines Events würde (theoretisch) Ihren Speicher mit Ereignissen füllen, die der Benutzer höchstwahrscheinlich nie sehen würde (Glückwunsch zu Ihrem Geburtstag: 999.999.999.999.999.999.999.999!).

Es braucht etwas mehr Arbeit, aber die Lösung besteht darin, im Grunde eine Tabelle (oder Tabellen) von Wiederholungsregeln zu speichern, mit denen Sie Ihre Kalendereinträge verknüpfen, während Sie einen Kalender erstellen:

"für jeden Tag der Woche, die gezeigt wird, nach Ereignissen suchen, die sich an diesen Tagen wiederholen"    "Für jede Woche des Monats, die gezeigt wird, nach Ereignissen suchen, die sich in diesen Wochen wiederholen"    "für jeden Monat in einem Jahr", etc ...

Wie viele dieser Überprüfungen Sie durchführen müssen, hängt davon ab, wie viele Wiederholungsarten (und Dauer) Sie wünschen.

Was die Unterdrückung von Ereignissen betrifft, ist dies eine weitere Tabelle, die Punkte zu Daten auflistet, die unterdrückt werden müssen. msgstr "Wenn montags angezeigt wird, zeigen Sie alle Ereignisse an, die sich in Monaten wiederholen, mit Ausnahme der in der Unterdrückungsliste aufgeführten Ereignisse"

Kommentar-Folge:

Nun, Sie haben Ihre Standard-Kalendereintragstabelle, um die Kerninformationen zu speichern. Datum / Zeit, etc ... Dann mindestens zwei andere Tabellen, um die Wiederholungsinformation zu speichern. Eine, die deine Wiederholungsregeln speichert. "jeden Montag", "erster Tag des Monats", "jedes Jahr" usw. und eine dritte Tabelle, die die Kalendereinträge mit den Regeln verknüpft

so:

%Vor%

Das Abfragen würde eine Frage des Aufbaus von Dingen sein, so dass für das Datum, das Sie in Betracht ziehen, die passenden Regeln herauskommen und Ihnen die IDs von Kalendereinträgen geben, um anzuzeigen. Es kann hässlich werden, wenn Sie eine ausgeklügelte Abfrage erstellen, die basierend auf einem von Ihnen übergebenen Datum dynamisch mit den entsprechenden Regeln verknüpft.

    
Marc B 09.02.2011, 19:40
quelle
0

Wenn jemand eine solche Frage stellt, erscheint der Link zum Erstellen von zeitorientierten Datenbankanwendungen in SQL. Es ist legitim als kostenloses PDF und auf Amazon .

    
Cymen 09.02.2011 20:59
quelle
0

Da Sie das # google-calendar-Tag eingefügt haben, vermute ich, dass Sie damit arbeiten. Google Kalender verwendet REST- und JSON-Aufrufe. Hier ist ein Beispiel:

%Vor%

Dadurch wird ein Ereignis mit dem Titel "Tägliches Projekt" erstellt, das täglich von 10.00 bis 11.00 Uhr stattfindet und an fünf aufeinander folgenden Tagen wiederholt wird.

Da Sie C # verwenden, können Sie auch das Google API (v3) -Ereignisobjekt verwenden. Dies hat alle Eigenschaften, die Sie zum Erstellen eines rekursiven Ereignisses benötigen. Dennoch sollten Sie sich die JSON-Struktur ansehen, um herauszufinden, wie die Rekursionsregeln gebildet werden.

Wenn Sie Google Kalender nicht verwenden, können Sie die API weiterhin als Richtlinie verwenden: Erstellen Sie einfach Regeln für wiederholte Ereignisse und nicht für tatsächliche Instanzen. Verwenden Sie einen Thread oder einen Timer, um die Datenbank jede Minute nach neuen Ereignissen abzufragen, basierend auf einzelnen Ereignissen (die keine Rekursionsregeln haben) und auf Regeln für wiederholte Ereignisse.

    
Victor Stoddard 12.02.2015 16:22
quelle