【问题标题】:C# Dataset - How to show same record with different datesC# 数据集 - 如何显示不同日期的相同记录
【发布时间】:2011-07-30 08:27:46
【问题描述】:

我有一个表格,用于存储有关网站上显示的一些事件的信息。这些事件每周重复一次,因此我不想每周输入相同的事件,而是希望用户只需选择复选框(每周重复一次),然后以某种方式读取记录是否已选中显示记录不同的日期(增加 7 天)。另一个问题是每周可能会重复两个以上的事件。我想我应该在页面加载时在运行时处理这个问题,还是应该在输入数据时处理这个问题?有人可以给我一个方向吗?当页面加载时,我只是按如下方式填充数据集,然后将网格绑定到数据集:

        DataSet eventsDS = new DataSet();

        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;

        SqlCommand command = new SqlCommand("SELECT * FROM [tbl_events]order by [date]", conn);

        SqlDataAdapter daEvents = new SqlDataAdapter(command);
        daEvents.Fill(eventsDS);

【问题讨论】:

    标签: c# ado.net dataset record repeat


    【解决方案1】:

    这种事情远远超出了任何主流数据库系统的能力。它还引入了许多您可能不想处理的问题。处理这些问题会比每周向数据库中添加一个事件更麻烦。

    例如,如果您有一个从 2011 年 1 月 1 日开始并每周重复的事件,那么您的查询 select * from [tbl_events] order by [date] 将产生一个无限的结果集,从 2011 年 1 月 1 日开始。我想你可以通过提供一个日期范围来限制它,但是如果你忘记了一个结束值,那么查询会逐渐生成结果,直到你超过某个限制。

    如果您要编写代码来执行此操作,也会发生同样的事情。您的代码必须对显示事件的周数设置一些上限。

    您的两个选择是:

    1) 每周在数据库中输入一条事件记录,对添加记录的提前周数有某种上限。您还需要一些方法来为重复事件添加更多记录。例如,也许您最初添加了 26 个事件(6 个月),然后在事件每周发生后,程序会在未来 6 个月内自动添加一个。

    2) 输入一个事件记录,每周更新一次新的触发日期。现在你的问题在于报告。查询后,要确定记录是重复事件,然后再决定要显示多少事件。

    如果您想进行范围查询,第二个选项会成为问题,因为您不能只检查[date] 字段以获取将来的事件。您可以存储 begin_dateend_date 字段,并针对这些字段进行范围查询。

    您选择哪种方法在很大程度上取决于您将如何使用该系统。如果它主要针对一次发生的事件,那么您最好使用第一个选项。如果系统主要用于按计划重复的事件,那么您可能希望使用第二个选项并将开始和结束日期的概念正式化,并重复频率。

    【讨论】:

    • 谢谢吉姆!我可以设置一个甚至结束的日期。我很好。不确定您是否是 C# 开发人员,有人可以给我一个 C# 代码方面的选项吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多