2016-08-03 37 views
1

私は、従業員が自分の休暇の時間をオフに挿入し、その特定の日付範囲のデータを削除することができますスケジュールページを作成しようとしています。行全体を削除せずに2つの日付範囲の間で日付を削除するにはどうすればよいですか?

Iは、日付範囲の二つのテキストボックスがあり、Iは、インとの間のデータ以下のコードを使用してみてくださいが、日付が一致する範囲であればそれだけで行全体を削除し、そしていません。助けて?

protected void Delete_Click(object sender, EventArgs e) 
    { 
     if (StartTextBox.Text == "" || EndTextBox.Text == "") 
     { 
      ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Please Enter a Date Range to Submit for employee.');", true); 
     } 
     string find = "DELETE FROM Schedule where start >= @DateTo AND end_date <= @DateFrom"; 

     SqlCommand cmd = new SqlCommand(find, con); 
     cmd.Parameters.AddWithValue("@DateTo", SqlDbType.NVarChar).Value = StartTextBox.Text; 
     cmd.Parameters.AddWithValue("@DateFrom", SqlDbType.NVarChar).Value = EndTextBox.Text; 

     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

     ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Time-off submitted successfully!');", true); 
    } 
+0

データの行は次のように何を求めていますか?私は理解しづらい。 – Cameron

+1

あなたはあなたのargsを後方に持っていると思います。 'start> = @DateFromとend_date <= @ DateTo'が必要です。 –

+0

「間のデータではない」とはどういう意味ですか? – Rahul

答えて

2

データ型としてnvarcharを使用しています。 <と>の動作は期待通りではありません。

日時その後

に列タイプを変更することを検討してください、あなたはにコードを変更することができます。

cmd.Parameters.AddWithValue("@DateTo", SqlDbType.DateTime).Value = DateTime.Parse(StartTextBox.Text); 
cmd.Parameters.AddWithValue("@DateFrom", SqlDbType.DateTime).Value = DateTime.Parse(EndTextBox.Text); 
+0

ご協力ありがとうございますが、依然として行全体が削除されています。 –

+0

さらなる例は:私は開始に行Aを持っている場合です:07-27-16とEND_DATEです:08-04-16 ...私は開始時刻と08時間のためにオフ日付(07-27-16を削除したいです-01-16 for end_date)既存の行の中にA.行を削除して更新する方法はありますか?タイムオフの日付行を挿入した後に行Aは現在:08-02-16開始と08- 04-16 for end_date? –

+0

「行全体」を削除するはずです。つまり、すべての単一の行が 'where'節に一致します。引数 'DateTo'の後または 'start'列の値と 'DateFrom'パラメータの前または 'end_date'列の値を持つ 'schedule'テーブルの行。あなたが達成しようとしていることではありませんか? –

関連する問題