我正在嘗試使用SQL Server Express數據庫在asp.net中創建度假計劃。防止雙重預訂ASP.NET C#
當你添加一個假期時,你必須添加一個begintime
,endtime
,當然你是誰。
有沒有辦法顯示錯誤,當已經有同一時間和同一個員工休假與他們嘗試添加。
這樣系統將防止雙休假。否則,Gridview表在同一天的兩行中顯示兩個相同的名稱。我想阻止人們重複預訂。
比方說,人A已預訂StartDate = 2016-03-06
和EndDate = 2016-03-10
。這意味着我想阻止其他人在開始日期和結束日期之間預訂相同的StartDate
,EndDate
,甚至不包括開始日期和結束日期之間的較早日期和日期,例如我的意思是例如2016-03-01和2016-03-06之間,2016-03-07,2016-03-08 ...因爲這些日期介於開始日期和結束日期之間。
我試圖創建一個像下面這樣的方法,然後我不知道該怎麼做。我將不勝感激任何幫助 //野老編輯插入按鈕,而不是方法:
protected void btnInsertVacation_Click(object sender, EventArgs e)
{
string cs = ConfigurationManager.ConnectionStrings["ResursplaneringConnectionString"].ConnectionString;
TextDateTime.Text = Calendar1.SelectedDate.ToShortDateString();
using (SqlConnection con = new SqlConnection(cs))
{
string check = "SELECT EmployeeId, StartDate, EndDate FROM vacation WHERE (EmployeeId = @EmployeeId) AND(StartDate <= @NewEndDate) AND(EndDate >= @NewStartDate)";
SqlCommand cmd = new SqlCommand(check, con);
cmd.Parameters.AddWithValue("@EmployeeId", DropDownEmployee.SelectedValue);
cmd.Parameters.AddWithValue("@NewEndDate", txtStartDate.Text);
cmd.Parameters.AddWithValue("@NewStartDate", txtEnd.Text);
con.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
if (rdr.HasRows)
{
Response.Write("Dubbel booking");
}
else
{
string insertVacation = "INSERT INTO Planering (StartDate, EndDate, EmployeeId) VALUES (@StartDate, @EndDate, @EmployeeId)";
SqlCommand cmd2 = new SqlCommand(insertVacation, con);
SqlParameter paramPlaneringStart = new SqlParameter("@StartDate", txtStartDate.Text);
cmd2.Parameters.Add(paramPlaneringStart);
SqlParameter paramPlaneringEnd = new SqlParameter("@EndDate", txtEnd.Text);
cmd2.Parameters.Add(paramPlaneringEnd);
SqlParameter paramEmployeeId = new SqlParameter("@EmployeeId", DropDownEmployee.SelectedValue);
cmd2.Parameters.Add(paramEmployeeId);
con.Open();
cmd2.ExecuteNonQuery();
}
}
}
}
}
非常感謝。防止工作正常。我直接在插入按鈕上,但插入現在不工作。我不能再INSERT了。我認爲這是與內部其他內容相關的事情。{}我做錯了什麼。我編輯了我的問題,請檢查一下我做錯了什麼。感謝您的快速回復! –
現在它正在工作,再次謝謝..... –