Sosiska
Sosiska

Reputation: 19

Adding records to the table by checkboxlist

There is a certain table (Plot, Subarea, Interval start, Interval end). I need to insert a record into several subareas at once. I decided to do this through checkboxes.

 using (OleDbCommand cmd = Master.Connect.ORACLE_SAARC().CreateCommand())
        {
            cmd.CommandText = @"INSERT INTO SAARC.SUBAREA_EXCLUDE_INTERVAL (
                       ORIGINAL_ROW_ID, OPERATOR_ID, SUBAREA_ID,
                       INTERVAL_START, INTERVAL_END)
                    VALUES ( ? /* ORIGINAL_ROW_ID */,
                     ? /* OPERATOR_ID */,
                     ? /* SUBAREA_ID */,
                     ? /* INTERVAL_START */,
                     ? /* INTERVAL_END */)";

            cmd.Parameters.AddWithValue("ORIGINAL_ROW_ID", (CurrentRecordId > 0) ? (object)CurrentRecordId : (object)System.DBNull.Value);
            cmd.Parameters.AddWithValue("OPERATOR_ID", Authentification.User.UserName);
            if (pnlSelectSubarea.Visible)
            {
                cmd.Parameters.AddWithValue("SUBAREA_ID", cbSelectSubarea.SelectedItem.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("SUBAREA_ID", ddlSubarea.SelectedItem.Value);
            }
            cmd.Parameters.AddWithValue("INTERVAL_START", cldPeriodStart.SelectedDate.Value);
            cmd.Parameters.AddWithValue("INTERVAL_END", cldPeriodEnd.SelectedDate.Value);
            cmd.ExecuteNonQuery();

I expect that the result of inserting an entry into the table will be on several subareas, but the record goes only on the first checkbox.

List<string> subareas = new List<string>(); 
foreach (ListItem it in cbSelectSubarea.Items) {if (it.Selected) subareas.Add(cbSelectSubarea.SelectedItem.Value);

cud some1 correct this shitcode? i think this is the way of resolving my problem

Now i have another prob. The first checkbox is added to the table without any bugs, when the loop processes the second one, an error occurs.

if (pnlSelectSubarea.Visible)
{
 List<int> subareas = new List<int>();
 foreach (ListItem it in cbSelectSubarea.Items)
  {
    if (it.Selected)
    {
     subareas.Add(Convert.ToInt32(it.Value));
     cmd.Parameters.AddWithValue("ORIGINAL_ROW_ID", (CurrentRecordId > 0) ? (object)CurrentRecordId : (object)System.DBNull.Value);
     cmd.Parameters.AddWithValue("OPERATOR_ID", Authentification.User.UserName);
     cmd.Parameters.AddWithValue("SUBAREA_ID", it.Value);
     cmd.Parameters.AddWithValue("INTERVAL_START", cldPeriodStart.SelectedDate.Value);
     cmd.Parameters.AddWithValue("INTERVAL_END", cldPeriodEnd.SelectedDate.Value);
    }
    if (subareas.Count == 0) throw new Exception("Не выбрано ни одного подучастка");
                    cmd.ExecuteNonQuery();
  }

                cmd.Dispose();
            }

Upvotes: 0

Views: 147

Answers (1)

Sosiska
Sosiska

Reputation: 19

Add Parameters.Clear() to foreach (ListItem it in cbSelectSubarea.Items)

like this

if (it.Selected)
    {

     subareas.Add(Convert.ToInt32(it.Value));
     cmd.Parameters.Clear();
     cmd.Parameters.AddWithValue("ORIGINAL_ROW_ID", (CurrentRecordId > 0) ? (object)CurrentRecordId : (object)System.DBNull.Value);
     cmd.Parameters.AddWithValue("OPERATOR_ID", Authentification.User.UserName);
     cmd.Parameters.AddWithValue("SUBAREA_ID", it.Value);
     cmd.Parameters.AddWithValue("INTERVAL_START", cldPeriodStart.SelectedDate.Value);
     cmd.Parameters.AddWithValue("INTERVAL_END", cldPeriodEnd.SelectedDate.Value);
    }

Upvotes: 1

Related Questions