2017-03-02 10 views
0

ユーザーが学校のクラスをシステムに追加すると、そのクラスの開始日と終了日が選択されます。私はこの日数を計算し、それをデータベーステーブル 'クラス'の列 'TotalDayNumber'に格納する方法を研究しました。ユーザーの値に応じて複数のINSERTステートメントを作成する

現在、ユーザーがクラスを追加すると、データベースに1行だけが挿入されますが、個々の日の合計「TotalDayNumber」に同じ数の行を追加したいとします。

例:開始日が01/03/2017 - 15/03/17で、合計日数が14であるため、毎日14個の合計行を作成する必要があります。以下は私のINSERTクエリです。私はIFステートメントが必要だと思うが、私はそれを始める方法も知らない。

protected void insertbutton_Click(object sender, EventArgs e) 
    { 

     int? recurrencedata = Convert.ToInt32(ddlRecurrence.Text); 
     if (recurrencedata == 1) 
     { 
      int moduledata = Convert.ToInt32(ddlModule.Text); 
      DateTime startdatedata = Convert.ToDateTime(txtstartdate.Text); 
      DateTime enddatedata = Convert.ToDateTime(txtenddate.Text); 
      int classtypedata = Convert.ToInt32(ddlClassType.Text); 
      int roomcodedata = Convert.ToInt32(ddlRoomCode.Text); 
      int starttimedata = Convert.ToInt32(ddlStartClassTime.Text); 
      int endtimedata = Convert.ToInt32(ddlEndClassTime.Text); 

      startdatedata = DateTime.Parse(txtstartdate.Text).Date; 
      enddatedata = DateTime.Parse(txtenddate.Text).Date; 

      TimeSpan totaldays = enddatedata - startdatedata; 

      // This is rounding the TimeSpan to the day value only 
      string totalday = ((int)Math.Round(totaldays.TotalDays, MidpointRounding.AwayFromZero)).ToString(); 

      string DefaultConnection = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
      SqlConnection myConnection = new SqlConnection(DefaultConnection); 

      myConnection.Open(); 

      string query = "INSERT INTO Class (ModuleId, ClassTypeId, ClassScheduleStartTimeId, ClassScheduleEndTimeId, RoomCodeId, StartTime, EndTime, RecurrenceId, TotalDayNumber) VALUES (@moduledata, @classtypedata, @starttimedata, @endtimedata, @roomcodedata, @startdatedata, @enddatedata, @recurrencedata, @totaldaynumberdata)"; 

      SqlCommand myCommand = new SqlCommand(query, myConnection); 
      myCommand.Parameters.AddWithValue("@moduledata", moduledata); 
      myCommand.Parameters.AddWithValue("@classtypedata", classtypedata); 
      myCommand.Parameters.AddWithValue("@startdatedata", startdatedata); 
      myCommand.Parameters.AddWithValue("@enddatedata", enddatedata); 
      myCommand.Parameters.AddWithValue("@starttimedata", starttimedata); 
      myCommand.Parameters.AddWithValue("@roomcodedata", roomcodedata); 
      myCommand.Parameters.AddWithValue("@endtimedata", endtimedata); 
      myCommand.Parameters.AddWithValue("@recurrencedata", recurrencedata); 
      myCommand.Parameters.AddWithValue("@totaldaynumberdata", totalday); 
      myCommand.ExecuteNonQuery(); 
      myConnection.Close(); 

      SuccessPanel.Visible = true;  
     } 

}

答えて

0

intとして合計日数を取得し、その後

// add for loop 
    for(int i =0; i <= totalday; i++) 
    { 
     myConnection.Open(); 

     string query = "INSERT INTO Class (ModuleId, ClassTypeId, ClassScheduleStartTimeId, ClassScheduleEndTimeId, RoomCodeId, StartTime, EndTime, RecurrenceId, TotalDayNumber) VALUES (@moduledata, @classtypedata, @starttimedata, @endtimedata, @roomcodedata, @startdatedata, @enddatedata, @recurrencedata, @totaldaynumberdata)"; 

     SqlCommand myCommand = new SqlCommand(query, myConnection); 
     myCommand.Parameters.AddWithValue("@moduledata", moduledata); 
     myCommand.Parameters.AddWithValue("@classtypedata", classtypedata); 
     myCommand.Parameters.AddWithValue("@startdatedata", startdatedata); 
     myCommand.Parameters.AddWithValue("@enddatedata", enddatedata); 
     myCommand.Parameters.AddWithValue("@starttimedata", starttimedata); 
     myCommand.Parameters.AddWithValue("@roomcodedata", roomcodedata); 
     myCommand.Parameters.AddWithValue("@endtimedata", endtimedata); 
     myCommand.Parameters.AddWithValue("@recurrencedata", recurrencedata); 
     myCommand.Parameters.AddWithValue("@totaldaynumberdata", totalday); 
     myCommand.ExecuteNonQuery(); 
     myConnection.Close(); 
    } 
以下のように forループをwithing insertコマンドを追加
関連する問題