2013-08-13 2 views
2

У меня есть требование, когда в расписании мне нужно отключить поля, когда праздник выпадает на неделю. Мне нужно, чтобы поля этого дня были отключены. Но его цикл до конца праздников присутствует в базе данных. например, я принимаю стартовую форму как 11.08.2013, и мне нужно зацикливаться до 15.08.2013 на эту неделю, поскольку 15 августа - День независимости Индии.Зафиксировать дату недели до тех пор, пока не будет найден отпуск на этой неделе

15 августа поле должно быть отключено. Но здесь я получаю значение, как Рождество, которое последний праздничный день года и его получение пострадавших за все дни ...

Код:

DateTime dtstart = Convert.ToDateTime(startdate); 
con.Open(); 
OleDbCommand cmd1 = new OleDbCommand("select * from ind_holidays", con); 
OleDbDataReader dr1 = cmd1.ExecuteReader(); 
while (dr1.Read()) 
{ 
    string holiday = dr1[0].ToString(); 
    string date = dr1[1].ToString().Substring(0, 10); 
    DateTime holi_date = Convert.ToDateTime(date); 
    while (dtstart <= holi_date) 
    { 
     if (dtstart.DayOfWeek == DayOfWeek.Monday) 
     { 
       devmontxt.Text = holiday; 
       devmontxt.Enabled = false; 
       trmontxt.Text = holiday; 
       trmontxt.Enabled = false; 
       lunmontxt.Text = holiday; 
       lunmontxt.Enabled = false; 
       permontxt.Text = holiday; 
       permontxt.Enabled = false; 
       totmontxt.Text = holiday; 
       totmontxt.Enabled = false; 

     } 
     if (dtstart.DayOfWeek == DayOfWeek.Tuesday) 
     { 

       devtuetxt.Text = holiday; 
       devtuetxt.Enabled = false; 
       trtuetxt.Text = holiday; 
       trtuetxt.Enabled = false; 
       luntuetxt.Text = holiday; 
       luntuetxt.Enabled = false; 
       pertuetxt.Text = holiday; 
       pertuetxt.Enabled = false; 
       tottuetxt.Text = holiday; 
       tottuetxt.Enabled = false; 
     } 
     if (dtstart.DayOfWeek == DayOfWeek.Wednesday) 
     { 

       devwedtxt.Text = holiday; 
       devwedtxt.Enabled = false; 
       trwedtxt.Text = holiday; 
       trwedtxt.Enabled = false; 
       lunwedtxt.Text = holiday; 
       lunwedtxt.Enabled = false; 
       perwedtxt.Text = holiday; 
       perwedtxt.Enabled = false; 
       totwedtxt.Text = holiday; 
       totwedtxt.Enabled = false; 
     } 
     if (dtstart.DayOfWeek == DayOfWeek.Thursday) 
     { 
      devthutxt.Text = holiday; 
      devthutxt.Enabled = false; 
      trthutxt.Text = holiday; 
      trthutxt.Enabled = false; 
      lunthutxt.Text = holiday; 
      lunthutxt.Enabled = false; 
      perthutxt.Text = holiday; 
      perthutxt.Enabled = false; 
      totthutxt.Text = holiday; 
      totthutxt.Enabled = false; 

     } 

     if (dtstart.DayOfWeek == DayOfWeek.Friday) 
     { 
      devfritxt.Text = holiday; 
      devfritxt.Enabled = false; 
      trfritxt.Text = holiday; 
      trfritxt.Enabled = false; 
      lunfritxt.Text = holiday; 
      lunfritxt.Enabled = false; 
      perfritxt.Text = holiday; 
      perfritxt.Enabled = false; 
      totfritxt.Text = holiday; 
      totfritxt.Enabled = false; 
     } 
     if (dtstart.DayOfWeek == DayOfWeek.Saturday) 
     { 
       devsattxt.Text = holiday; 
       devsattxt.Enabled = false; 
       trsattxt.Text = holiday; 
       trsattxt.Enabled = false; 
       lunsattxt.Text = holiday; 
       lunsattxt.Enabled = false; 
       persattxt.Text = holiday; 
       persattxt.Enabled = false; 
       totsattxt.Text = holiday; 
       totsattxt.Enabled = false;  

     } 
     dtstart = dtstart.AddDays(1); 
     continue; 
    } 
} 
dr1.Close(); 
con.Close(); 

}

+0

Почему вы не изменяете свой запрос, чтобы возвращать только праздники, которые попадают в указанный диапазон? – Riv

ответ

1

Вы будете нужно найти последний день недели.

lastDay = dtstart.AddDays(7); 

Теперь, поскольку у вас есть начальный и конечный день, вы можете запросить только праздничные дни на этой неделе.

Первый элемент, возвращенный запросом, станет первым праздником недели.

Другой вариант - выбрать все праздники и сохранить их в списке. Тогда вам просто нужно зациклировать элементы в списке.

+0

FYI Я храню только название праздника и дату праздника в той таблице –

+1

Я был неправ. Я понял, наконец, что вы говорили ... Большое спасибо ... –

0

сохраните свой отпуск в списке и петлях только неделю с сегодняшнего дня и проверьте, содержит ли список любое значение в вашем цикле, отключите его. Используйте текущее время и добавьте количество дней, которое вы хотите.

Смежные вопросы