В настоящее время у меня есть таблица с именем «События», в которой есть столбцы «EquipApprovedDate», «EquipCalDueDate» и «ThemeColor». Я хочу обновить ThemeColor на основе оставшихся дней до EquipCalDueDate .
Зеленый = Хорошо
Оранжевый = Считается, хорошо
Красный = Критический
Общее количество дней будет отличаться для каждого оборудования, зарегистрированного в календаре. Он будет рассчитываться с использованием этой формулы ( totaldays = EquipCalDueDate - EquipApprovedDate). Остальные дни будут рассчитываться по этой формуле ( оставшиеся дни = EquipCalDueDate - DateTime.Now ).
Если оставшихся дней превышает 2/3 от всего дня , то оно будет помечено как «зеленый».
Если оставшихся дней меньше, чем 2/3 из totaldays , но более 1/3 от общего числа дней он будет помечен как ' оранжевый».
Если оставшихся дней меньше 1/3 от всего дня , то оно будет помечено как «красный».
Я хочу применить весь этот процесс к таблице каждый раз, когда страница загружается, особенно для каждой строки, найденной в базе данных. В основном, чтобы собрать данные и вернуть их для каждой строки. На данный момент он работает только частично там, где столбец ThemeColor обновляется до «зеленого» для каждой отдельной строки, несмотря ни на что. Какой правильный SQL-запрос?
Я приложил свою текущую работу вместе для вашего просмотра.
con.Open();
string yyy = "SELECT * FROM [Events]";
using (SqlCommand cmd = new SqlCommand(yyy, con))
{
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
String startdate = reader["EquipApprovedDate"].ToString();
DateTime Sdate = DateTime.Parse(startdate);
String enddate = reader["EquipCalDueDate"].ToString();
DateTime Edate = DateTime.Parse(enddate);
String themecolor = reader["ThemeColor"].ToString();
double totaldays = (Edate - Sdate).TotalDays;
double remainingDays = (Edate - DateTime.Now).TotalDays;
if (remainingDays > (totaldays * (2 / 3)))
{
string sqlCoC = "UPDATE Events SET ThemeColor = 'green'";
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MVCConnectionString"].ConnectionString))
{
SqlCommand coccmd = new SqlCommand(sqlCoC, con);
con.Open();
coccmd.ExecuteNonQuery();
con.Close();
}
//green = means good
}
else if ((remainingDays < (totaldays * (2 / 3))) && (remainingDays > (totaldays * (1 / 3))))
{
string sqlCoC = "UPDATE Events SET ThemeColor = 'orange'";
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MVCConnectionString"].ConnectionString))
{
SqlCommand coccmd = new SqlCommand(sqlCoC, con);
con.Open();
coccmd.ExecuteNonQuery();
con.Close();
}
//orange = considered okay
}
else if (remainingDays < (totaldays * (1 / 3)))
{
string sqlCoC = "UPDATE Events SET ThemeColor = 'red'";
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MVCConnectionString"].ConnectionString))
{
SqlCommand coccmd = new SqlCommand(sqlCoC, con);
con.Open();
coccmd.ExecuteNonQuery();
con.Close();
}
//red = critical
}
else { }
}
reader.Close();
con.Close();
}