Здравствутйе. Возник вопрос, так как я чайник, то решил обратиться к вам. Суть: Есть некая таблица (Участок, Подучасток, Начало интервала, Окончание интервала) в нее нужно запихнуть запись на несколько подучастков сразу. Я решил это делать через чекбоксы. При групповом добавлении записи отмеченных чекбоксов, запись идет только по первому чеку.
//вставка новой версии записи
using (OleDbCommand cmd = Master.Connect.ORACLE_SAARC().CreateCommand())
{
cmd.CommandText = @"INSERT INTO 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();
cbSelectSubarea - подучастки с чекбоксами
//возврат списка порядковых номеров выбранных подучастков
List<string> subareas = new List<string>();
foreach (ListItem it in cbSelectSubarea.Items)
{
if (it.Selected)
subareas.Add(cbSelectSubarea.SelectedItem.Value);
}
if (subareas.Count == 0) throw new Exception("Не выбрано ни одного подучастка");
cmd.Parameters.AddWithValue("SUBAREA_ID", cbSelectSubarea.SelectedItem.Value);
Думаю, что решение кроется через цикл, но выдает ошибку типа инвалид намбер UPD: Теперь возникла следующая проблема, первый чекбокс он добавляет в таблицу спокойно, а когда цикл идет на второй отмеченный чекбокс, то выдает ошибку
Добавил Parameters.Clear()
в foreach (ListItem it in cbSelectSubarea.Items)
Пример:
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);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть таблица записей с полями datetime(Int) и status(Smallint)Статус может быть 1 - Успех, 2 - Отказ
Всем доброго времени сутокПопалась интересная задачка