Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Ent_ws
0 / 0 / 1
Регистрация: 30.10.2015
Сообщений: 27
1

Повторяющиеся значения в ключевое поле

23.12.2016, 18:19. Просмотров 459. Ответов 0

Доброго времени суток.
Имеется три таблицы - товары, заказы, и товары-заказы(связующая таблица)
В т.товары-заказы имеется два поля id_заказа(из т.заказы) и id_товары(из т.товары), эти два поля имеют составные ключи.

В форме нужно добавить данные из datagridview в т.товары-заказы. В datagridview содержится допустим три строки с данными, и в цикле я добавляю эти данные поочередно в access(товары-заказы), но добавляется только первый элемент, на добавление второго элемента выскакивает ошибка: "Изменения не были успешно внесены из за повторяющихся значений в индексе, ключевых полях или связях. Измените данные в поле или полях, содержащих повторяющиеся значения, удалите индекс или переопределите его, чтобы разрешить повторяющиеся значения, и повторите попытку". Т.е. он ругается на то, что я не могу добавить другой товар, с таким же номером заказа.
По идее допустим я должна получить такие данные:
id_Товара id_заказа Наименование
3 1 Стул
6 1 Кровать
и т.д. Но на добавление второго элемента выскакивает ошибка.
В самом accesse же данные с разными товарами, но с одинаковыми заказами добавляются без проблем.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private void saveBDbutton_Click(object sender, EventArgs e)
        {
            myCom.Connection = conn;
            
            myCom.CommandText = "insert into orders([Дата],[Время]) values(\'" + label3.Text + "\',\'" + label5.Text + "\')";
            myCom.ExecuteNonQuery();
            myCom.CommandText = "select max(id_заказа) from orders";
            object id_zak = myCom.ExecuteScalar();
            int id_zakaza = Convert.ToInt32(id_zak);
            for (int i = 0; i < dataGridView2.RowCount; i++)
            {
                myCom.CommandText = "select id_товара from goods where [Наименование] = \'" + dataGridView2.Rows[i].Cells[0].Value.ToString() + "\'";
                object id_tov = myCom.ExecuteScalar();
                int id_tovara = Convert.ToInt32(id_tov);
                myCom.CommandText = "select Стоимость from goods where [Наименование] = \'" + dataGridView2.Rows[i].Cells[0].Value.ToString() + "\'";
                object cena = myCom.ExecuteScalar();
                int cena_za_ed = Convert.ToInt32(cena);
                myCom.CommandText = "insert into [goods-orders]([id_товара],[id_заказа],[Наименование],[Количество],[Цена_за_единицу],[Стоимость]) values(?,?,?,?,?,?)"; //
                myCom.Parameters.AddWithValue("@id_товара", id_tovara); 
                myCom.Parameters.AddWithValue("@id_заказа", id_zakaza);
                myCom.Parameters.AddWithValue("@Наименование", dataGridView2.Rows[i].Cells[0].Value.ToString());
                myCom.Parameters.AddWithValue("@Количество", dataGridView2.Rows[i].Cells[2].Value);
                myCom.Parameters.AddWithValue("@Цена_за_единицу", cena_za_ed);
                myCom.Parameters.AddWithValue("@Стоимость", dataGridView2.Rows[i].Cells[1].Value);
                myCom.ExecuteNonQuery();  //ошибка выскакивает тут, при i=1. i=0 проходит успешно.
            }          
  }
Добавлено через 6 часов 55 минут
Разобралась. Может кому пригодится)
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void saveBDbutton_Click(object sender, EventArgs e)
        {
            myCom.Connection = conn;            
            myCom.CommandText = "insert into orders([Дата],[Время]) values(\'" + label3.Text + "\',\'" + label5.Text + "\')";
            myCom.ExecuteNonQuery();
            myCom.CommandText = "select max(id_заказа) from orders";
            object id_zak = myCom.ExecuteScalar();
            int id_zakaza = Convert.ToInt32(id_zak);
            for (int i = 0; i < dataGridView2.RowCount; i++)
            {
                myCom.CommandText = "select id_товара from goods where [Наименование] = \'" + dataGridView2.Rows[i].Cells[0].Value.ToString() + "\'";
                object id_tov = myCom.ExecuteScalar();
                int id_tovara = Convert.ToInt32(id_tov);
                myCom.CommandText = "select Стоимость from goods where [Наименование] = \'" + dataGridView2.Rows[i].Cells[0].Value.ToString() + "\'";
                object cena = myCom.ExecuteScalar();
                int cena_za_ed = Convert.ToInt32(cena);
                myCom.CommandText = "insert into [goods-orders]([id_товара],[id_заказа],[Наименование],[Количество],[Цена_за_единицу],[Стоимость]) values (\'" + id_tovara + "\',\'" + id_zakaza + "\',\'" + dataGridView2.Rows[i].Cells[0].Value.ToString() + "\',\'" + dataGridView2.Rows[i].Cells[2].Value + "\',\'" + cena_za_ed + "\',\'" + dataGridView2.Rows[i].Cells[1].Value + "\')";
                myCom.ExecuteNonQuery();
            }             
        }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2016, 18:19
Ответы с готовыми решениями:

Можно ли программно узнать ключевое поле?
Всем привет. Как можно узнать ключевое поле в подключенной базе данных SQL?

Как правильно указать ключевое поле в DataSet?
как правильно указать ключевое поле в DataSet при попытке найти запись в...

Запрос, возвращающий значения поля одной таблицы и складывающий эти значения в поле другой таблицы
доборого дня всем, подскажите процедуру которая будет возвращать значение поля...

Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?
В таблицу DicFactor вводятся факторы, а в связанную с ней таблицу FactorValue...

Как можно получить числовое поле из таблицы при выборе значения в combobox
Здравствуйте, помогите новичку. Я сделал combobox и привязал его к...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2016, 18:19

Ключевое слово fixed
Здравствуйте! Правильно ли я понял? Если объявить массив с ключевым словом...

Шифр Цезаря: чтобы было еще ключевое слово и возможность дешифрования
Здравствуйте уважаемые. Написал прогу реализующую шифр Цезаря со смешением....

Повторяющиеся значения в ключевом поле
вот дали мне лабу.но там в ключ поле значения повторяются.что за?!акс ошибку...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru