Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Entity Framework. SQL Exception "Invalid column name" http://www.cyberforum.ru/ado-net/thread1886323.html
Здравствуйте, мне надо создать базу данных, используя Entity Framework В базу надо записать ключевое слово, дату и двоичный файл с данными я делаю стратегией Code First в коде ниже у меня...
C# Данные в промежуточную таблицу В таблице goods-orders(промежуточная) должны добавляться данные из datagridview2. Но выдает ошибку: Syntax error in INSERT INTO statement. В запросе ошибки вроде как бы нет.. При нажатии на кнопку... http://www.cyberforum.ru/ado-net/thread1886261.html
C# Entity Framework. Что указать в строке подключения чтобы бд создалась в папке с проектом?
Всем привет. Начал изучать Entity framework. Возник вопрос как в конфиге написать строку подключения чтобы бд создалась в папке с проектом?
C# Выгрузить данные из SQL и сохранить их в таблицу Excel
Здравствуйте. Уважаемые гуру в C# помогите плз. Необходимо по запросу выгрузить данные из SQL и сохранить их в таблицу Excel. Реализую это при помощи ClosedXML, но вот только не могу сообразить:...
C# Ввод картинки в базу SQL Server и превышение длины строки http://www.cyberforum.ru/ado-net/thread1885659.html
Здравствуйте, возникла такая проблема. При попытке ввести картинку кодом OpenFileDialog opf = new OpenFileDialog(); if (opf.ShowDialog() == DialogResult.OK) { ...
C# Можно ли программно узнать ключевое поле? Всем привет. Как можно узнать ключевое поле в подключенной базе данных SQL? подробнее
Ent_ws
0 / 0 / 1
Регистрация: 30.10.2015
Сообщений: 27
0

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

23.12.2016, 18:19. Просмотров 479. Ответов 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 при попытке найти запись в DataSet происходит ошибка...

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

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

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

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