RT,我需要每周清空一下上周的数据统计表,就判断在每周一,程序第一次启动时。。但这方法怎么才能以【周】为时间线执行呢?        int i = 0;        DayOfWeek weekday = System.DateTime.Now.DayOfWeek;        if (weekday.ToString() == "Monday")
        {
            i = DAL.Am_ProductQuantityDAL.Clear();
            i = DAL.Stock_ProductQuantityDAL.Clear();
        }

解决方案 »

  1.   

    单独做个程序,用windows的计划任务或者sql server的job调用
      

  2.   

    SQLSERVER里有计划任务。可以实现你的需求!
      

  3.   

    1楼已经提供了两种方法了,另外还可以写个windows 服务
      

  4.   

    可以的,你使用 Timer()定时器 这个功能就可以了。上MSDN搜索一下使用方法就OK了。
      

  5.   

    void Application_Start(object sender, EventArgs e) 
        {
            // 在应用程序启动时运行的代码
            try
            {
                System.Runtime.Remoting.RemotingConfiguration.Configure(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "web.config"), false);
                //创建一个新的Timer实例
                System.Timers.Timer sysTimer = new System.Timers.Timer();
                //将sysTimer_Elapsed指定为计时器的 Elapsed 事件处理程序 
                sysTimer.Elapsed += new System.Timers.ElapsedEventHandler(sysTimer_Elapsed);
                //间隔多长时间执行操作,此单位为毫秒
                sysTimer.Interval = (60 * 60 * 1000)*168;//(168小时执行一次)
               // sysTimer.Interval=60 * 1000;//测试1分钟
                sysTimer.AutoReset = true;
                sysTimer.Enabled = true;
            }
            catch
            {
                LogHelper.Write("remoting sever  fail ");
            }
        }
        private void sysTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            try
            {
                //每周清空一下上周的数据统计表的代码写在这里
            }
            catch (Exception ex)
            {
                LogHelper.Write(ex);
            }
            
        }
        
      

  6.   

    可以不用数据库作业
                    //这个去读取数据统计表中最早的时间, 类似(select min(datetime) from table)
                    DateTime referTime;
                    //这个计算出本周一0点的时间
                    DateTime datetime = DateTime.Today.AddDays(1 - (double)(DateTime.Today.DayOfWeek));
                    //判断出数据表里的时间比这个星期一小, 清空数据表
                    if (referTime < datetime)
                    {
                         i = DAL.Am_ProductQuantityDAL.Clear();
                         i = DAL.Stock_ProductQuantityDAL.Clear();
                    }
    把上面的代码加到程序打开时就要运行的地方。 比如Main()或者第一个要加载的窗体的Load过程里。
    然后每次你打开的时候就会去运行, 不必要一直开着
      

  7.   

    因为清空之后再插入的数据时间会晚于周一的0点, 所以不会重复清空。上面这个东西在周日运行的时候可能会有点问题, 解决的办法是判断条件改一下,if (referTime < datetime && referTime.Date != DateTime.Today)最小时间等于今天时, 也不进行清空。
      

  8.   

    自己做个程序,然后用计划任务去定时执行,或者用windows服务来做
      

  9.   


    我刚才试验了一下, 还是有问题。 因为星期天的值是0, 所以每次星期天就会执行清空。解决办法有二种。 一种是每个星期天时进行清空。 计算周日0点语句是:
    DateTime datetime = DateTime.Today.AddDays(0 - (double)(DateTime.Today.DayOfWeek));
    第二种方式是把星期天视为上周最后一天
    当前时间为周日时, 这里
    DateTime datetime = DateTime.Today.AddDays(0 - (double)(DateTime.Today.DayOfWeek));
    算出来的是明天, 加入一个判断, 今天是星期天时, 周一再减七天。
    if(DateTime.Today.DayofWeek == 0)
    {
    datetime.AddDays(-7)
    }两种状态的判断条件:
    if (referTime < datetime)