Не смогла найти в интернете адекватного объяснения работы с DataTable для изменения записей. Если у кого-то есть ссылки на источники, буду очень благодарна.
Мне нужно при нажатии кнопки проверять, есть ли в DataTable запись в поле Kod_Menu с кодом, который передаётся в Button.Tag . Как это правильно реализовать?
public void Mouse_Click_Menu(object sender, RoutedEventArgs e)
{
Button B = (Button)sender;
SqlConnection conK = Util.ConnectBD.Get_KDB();
SqlCommand Cena = new SqlCommand("Select Cena from _Menu where Kod_Menu = " + B.Tag, conK);
SqlCommand Nazv = new SqlCommand("Select Nazv_Menu from _Menu where Kod_Menu = " + B.Tag, conK);
float cena = Convert.ToSingle(Cena.ExecuteScalar());
string nazv = Nazv.ExecuteScalar().ToString();
//Проверка на наличие номенклатуры в DataTable
DataRow[] row = Sostav.Select("*", "Kod_menu=" + B.Tag);//Попытка получить нужную строку, а после запустить цикл foreach
if (row != null)
{
int i = 0;//Переменная, которая должна хранить значение количества из полученной строки
i = Convert.ToInt32(row[0]["Kol"]);//преобразование
MessageBox.Show(i.ToString());//попытка проверить полученное значение
//Здесь что-то должно быть, но я уже запутался.
Sostav.Rows.Add(new object[] { kod_z, B.Tag, nazv, i+1, cena });//вместо добавления строки должно быть обновление
}
else
{
Sostav.Rows.Add(new object[] { kod_z, B.Tag, nazv, 1, cena });
}
List_Zalkaz();
}
Были идеи брать значение количества из найденной записи, удалять эту запись, а после добавлять с новым значением. Помогите пожалуйста, хотя бы каким-нибудь источником, где можно найти информацию об этом. Очень долго смотрю и ищу, ничего не работает.
Решение оказалось очень простым. Я не знаю, как он там сам устанавливает нужную строку в цикле Foreach, главное, что работает. Вот код:
public void Mouse_Click_Menu(object sender, RoutedEventArgs e)
{
Button B = (Button)sender;
SqlConnection conK = Util.ConnectBD.Get_KDB();
SqlCommand Cena = new SqlCommand("Select Cena from _Menu where Kod_Menu = " + B.Tag, conK);
SqlCommand Nazv = new SqlCommand("Select Nazv_Menu from _Menu where Kod_Menu = " + B.Tag, conK);
float cena = Convert.ToSingle(Cena.ExecuteScalar());
string nazv = Nazv.ExecuteScalar().ToString();
//Проверка на наличие номенклатуры в DataTable
DataRow[] row = Sostav.Select("Kod_menu=" + B.Tag);//Попытка получить нужную строку, а после запустить цикл foreach
if (row.Count() == 0)//Проверка полученных строк из выборки row. В данном случае, если запрос не вернул строк, то добавляем в таблицу запись
{
Sostav.Rows.Add(new object[] { kod_z, B.Tag, nazv, 1, cena });
}
else
{
foreach (var r in row)// я так понимаю, что мы присваиваем элементу r
{
int i = Convert.ToInt32(r["Kol"]);
int c = Convert.ToInt32(r["Cena"]);
r["Kol"] = i + 1;
r["Cena"] = c + c/i;
}
}
List_Zalkaz();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Выдаёт ошибку Fatal error: Uncaught Error: Call to a member function bindValue() on bool in… Не пойму, в чём может быть проблемаВывод var_dump($req); — bool(false)
Например, есть строка с названием файла без путиКак оределить, что нет пути? Делаю так, не работает:
На странице есть несколько полей формы с одинаковым именем name='protectMean[]'UPDATE срабатывает только если в самом последнем поле формы я меняю значение
Ошибок не выводит, но данные не пишет из формы таблицу БД