2012-03-08 32 views
4

我需要在我的数据库中安排事件,任务,约会等。其中一些将是一次性约会,一些将重新发生必须检查的“待办事项”。看过谷歌的日历布局和其他人之后,再加上大量的阅读是我目前为止所做的。如何处理重复日历事件和任务(SQL Server表和C#)

日历表(可以称为日程表我猜):Basic_Event标题,开始/结束,reoccurs信息。

日历出现表:与日程表,出现特定文本,下一个出现日期/时间的关系

看看SQL Server如何完成它的工作:http://technet.microsoft.com/en-us/library/ms178644.aspx 但这略有不同。

为什么有两个表格:我需要跟踪重复执行任务的每个实例的状态。否则,这将是更简单...

所以...到的问题:

1)这个问题似乎像正确的方式去吗?有没有更好的方法来处理多发事件?
2)我多频繁/如何触发创建事件?我真的不想创建一堆事件...但...如果用户想要查看明年的日历怎么办...

+0

任何带有完整源代码的最终解决方案? – Kiquenet 2013-12-29 10:50:21

回答

4

有意义的是在一个表中有一个任务的计划定义,然后是一个单独的表来分别记录每个实例 - 这是我过去采取的方法。

关于创建事件,可能没有必要事先创建它们。特别是当你考虑无限重复的任务!再一次,我过去使用的方法是只创建下一个事件。当该实例被执行时,下一个实例将被计算并创建。

这留下了查看未来事件的问题。为此,您可以从开始/下一个预定事件开始,并在显示时间即时计算未来事件。

+0

感谢您的帮助。我喜欢只创建下一个事件的想法,然后随时计算其余事件。 – pStan 2012-03-09 15:18:02

0

虽然这不是一个确切的答案你的问题我已经通过对基于Unix's cron的解决方案进行建模,在SQL Server中解决了此问题(尽管此处的数据库无关紧要)。

取代字符串解析,我们使用表中的整数列来存储各种时间单位。

我们有可以安排的活动;他们可以指向代表不同时间点(日期/时间)的一次性日程表或者在cron之后建模的循环日程表。

另外记得正确地建模您的解决方案。一个事件有一个持续时间,但持续时间与时间表无关(但是一个事件的持续时间可能会通过引起冲突来影响时间表)。不要试图将持续时间模拟为日程安排的一部分。

0

在过去的时候,我们已经做到了这一点,我们有2个表:

1)时刻表 - >包括复发信息

2)异常 - >编辑/更改特定情况下

使用SQL,可以获取在给定日期范围内至少有一个实例的“计划”列表。然后,您可以在每个实例所在的GUI中展开。