Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 1
Регистрация: 20.05.2015
Сообщений: 17
1

Удаление строки из Access

19.12.2017, 19:24. Показов 5365. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Подскажите пожалуйста, в чем может быть ошибка при удалении строки с формы?
Ошибка: отсутствует значение для одного или нескольких требуемых параметров.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                string id1 = dataGridView1.SelectedCells[0].Value.ToString();
                string cmdText = $"DELETE FROM [Таблица1] WHERE [Табельный№]={id1}";
                cmd = new OleDbCommand(cmdText, conn);
                conn.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2017, 19:24
Ответы с готовыми решениями:

Удаление строки из таблицы БД Access
Помогите разобрать с удалением строки в Access через приложение, перепробовал разные способы, но...

Удаление строки из базы данных access
Помогите сделать удаление на Form.5

Удаление строки из базы данных Access
Доброго времени суток. В первую очередь хотелось бы ОЧЕНЬ сильно увидеть в шапке работу БД именно...

Бд access удаление строки из базы данных
На кнопку удалить должна удаляться выбранная строка в DataGridView Вот код подключения бд:...

11
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
19.12.2017, 19:38 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void button2_Click(object sender, EventArgs e){ 
      try {
            using (OleDbConnection conn = new OleDbConnection(ConnString)) {
                  using (OleDbCommand cmd = new OleDbCommand("DELETE * FROM [Таблица1] WHERE [Табельный№]=?", conn)) {
                        cmd.CommandType = CommandType.Text;
                        cmd.Parameters.AddWithValue("@p1", dataGridView1.CurrentRow.Cells[0].Value);
                        conn.Open();
                        cmd.ExecuteNonQuery();
                  }
            }
      }
      catch (Exception ex)
      {
            MessageBox.Show(ex.Message);
      }
}
1
0 / 0 / 1
Регистрация: 20.05.2015
Сообщений: 17
19.12.2017, 19:48  [ТС] 3
А в чем ошибка?
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
19.12.2017, 19:56 4
Цитата Сообщение от Fannini Посмотреть сообщение
А в чем ошибка?
Проще перечислить то, что Вы сделали правильно.
0
0 / 0 / 1
Регистрация: 20.05.2015
Сообщений: 17
19.12.2017, 20:28  [ТС] 5
Цитата Сообщение от Agapov_stas Посмотреть сообщение
Проще перечислить то, что Вы сделали правильно.
Подскажите пожалуйста, а в Вашем варианте если будет не только табельный номер, то в запросе надо будет их просто перечислить через запятую.
C#
1
cmd.Parameters.AddWithValue("@p1", dataGridView1.CurrentRow.Cells[0].Value);
А эту строку продублировать поменяв значение на номер ячейки под которым будет данный столбец?
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
19.12.2017, 20:57 6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try {
            using (OleDbConnection conn = new OleDbConnection(ConnString)) {
                  using (OleDbCommand cmd = new OleDbCommand("DELETE * FROM [Таблица1] WHERE [Табельный№]=? AND [КакоеТоПоле]=?", conn)) {
                        cmd.CommandType = CommandType.Text;
                        cmd.Parameters.AddWithValue("@p1", dataGridView1.CurrentRow.Cells[0].Value);
                        cmd.Parameters.AddWithValue("@p2", dataGridView1.CurrentRow.Cells["Индекс или название поля"].Value);
                        conn.Open();
                        cmd.ExecuteNonQuery();
                  }
            }
      }
      catch (Exception ex)
      {
            MessageBox.Show(ex.Message);
      }
1
0 / 0 / 1
Регистрация: 20.05.2015
Сообщений: 17
21.12.2017, 12:40  [ТС] 7
Agapov_stas, подскажите пожалуйста что не так с запросом
C#
1
com.CommandText ="SELECT * FROM [Таблица1] WHERE [Столбец] '" + comboBox1.SelectedValue + "'"
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
21.12.2017, 14:41 8
Цитата Сообщение от Fannini Посмотреть сообщение
что не так с запросом
Что необходимо выполнить в запросе?И почему не пользуетесь параметром, как положено?

C#
1
2
3
com.CommandText ="SELECT * FROM [Таблица1] WHERE [Столбец] = ?"
cmd.Parameters.AddWithValue("@p1", comboBox1.SelectedValue);
//и не понятно, что хранится в SelectedValue, число или строка..И что хранится в поле "Столбец".
1
0 / 0 / 1
Регистрация: 20.05.2015
Сообщений: 17
21.12.2017, 15:53  [ТС] 9
Что необходимо выполнить в запросе?И почему не пользуетесь параметром, как положено?
В комбобоксе 3 значения
C#
1
2
3
comboBox1.Items.Add("Математика");
            comboBox1.Items.Add("Физика");
            comboBox1.Items.Add("Английский язык");
в поле столбец соответственно хранится текст(название предмета)
надо что бы данный запрос выводил только те строки из БД в которых значение поля столбец будет равно выбранному значению в комбобоксе
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
21.12.2017, 17:54 10
Цитата Сообщение от Fannini Посмотреть сообщение
C#
1
comboBox1.Items.Add("Математика"); comboBox1.Items.Add("Физика"); comboBox1.Items.Add("Английский язык");
Ну так тогда необходимо обращаться к свойству Text, т.е. comboBox1.Text.

Добавлено через 35 секунд
C#
1
2
com.CommandText ="SELECT * FROM [Таблица1] WHERE [Столбец] = ?"
cmd.Parameters.AddWithValue("@p1", comboBox1.Text);
1
Usaga
21.12.2017, 18:26
  #11

Не по теме:

Agapov_stas, лучше не использовать заместитель аргумента "?", а указывать имя этого аргумента (которое должно быть осмысленным). Это не намного дольше в плане писанины, зато исключит путаницу, которая обязательно возникнет, когда количество аргументов станет больше одного.

0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
21.12.2017, 18:50 12
Usaga, да, Вы правы.
Честно говоря, забыл когда в последний раз использовал ADO.NET. Видимо поэтому так написал. А так да, сейчас посмотрел в один свой проект, везде писал с информативным название параметра.
0
21.12.2017, 18:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2017, 18:50
Помогаю со студенческими работами здесь

Удаление строки из access
Есть база данных Access, необходимо при нажатии на кнопку удалить полностью нужную строку....

Удаление строки в access
Подскажите можно узнать что нажал пользователь после удаление строки? Там идет подтверждение...

Удаление строки в БД Access
Не могу разобраться с функцией удаления. Что должно быть вместо id в функции делит void __fastcall...

Удаление строки из БД access c последующим сохранением БД
приветствую читающих, возникли неполадки прошу помощи господа программисты) есть прога с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru