Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.01.2022
Сообщений: 4

Исключить повторение записей с одинаковым значением ключевого поля в datagridview

25.05.2022, 16:44. Показов 427. Ответов 0
Метки cpp (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, проблема (вернее, баг?) следующая: При вводе записи с несуществующим ключевым полем в таблицу всё работает и в запись в таблице появляется, но, очевидно, если сразу же ввести новую запись с таким же ключом, программа выдаст ошибку "Не удалось внести изменения из-за повторяющихся значений в индексе, первичном ключе или связях.".
Туплю и не могу исправить данное "недоразумение".

Пробовал через счётчик строк (если вводимое значение ключа меньше чем самая нижняя строка с номером "индекс") - не получилось, попробовал через SELECT EXISTS (поиск строки с определённым номером) - тут у меня не получилось чисто из-за недостатка знаний в этой области: идея была в том, что если есть уже строка, где первая ячейка (которая является ключом) с таким номером уже существует, то выдавать ошибку и просить ввести другое число) - не раздуплил как обратится к значение строки через
C++
1
dataGridView1->Rows[index]->Cells[2]->Value->ToString();
(если это вообще возможно)


Выкладываю часть кода, где нужно это реализовать
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
28
29
30
31
32
33
34
35
36
37
38
System::Void SPPR::main::buttonChange_Click(System::Object^ sender, System::EventArgs^ e)
{
    if (dataGridView1->SelectedRows->Count != 1) {
        MessageBox::Show("Выберите только ОДНУ строку для добавления и/или редактирования", "Ошибка");
        return;
    }
 
    String^ connStr = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=pydb.accdb";
    OleDbConnection^ dbConnection = gcnew OleDbConnection(connStr);
 
    dbConnection->Open();
 
    int index = dataGridView1->SelectedRows[0]->Index;
    // Если выбрана таблица Machine Data (Данные о станках)
    if (r == 1) {
        if (dataGridView1->Rows[index]->Cells[0]->Value == nullptr ||
            dataGridView1->Rows[index]->Cells[1]->Value == nullptr ||
            dataGridView1->Rows[index]->Cells[2]->Value == nullptr ||
            dataGridView1->Rows[index]->Cells[3]->Value == nullptr ||
            dataGridView1->Rows[index]->Cells[4]->Value == nullptr) {
            MessageBox::Show("Введены не все данные", "Ошибка");
            return;
        }
 
        String^ Column1 = dataGridView1->Rows[index]->Cells[0]->Value->ToString();
        String^ Column2 = dataGridView1->Rows[index]->Cells[1]->Value->ToString();
        String^ Column3 = dataGridView1->Rows[index]->Cells[2]->Value->ToString();
        String^ Column4 = dataGridView1->Rows[index]->Cells[3]->Value->ToString();
        String^ Column5 = dataGridView1->Rows[index]->Cells[4]->Value->ToString();
 
    String^ query = "INSERT INTO [Machine data] VALUES ("+ Column1 + ", "+ Column2 +", '"+ Column3 +"', '"+ Column4 +"', '"+ Column5 +"')";
    OleDbCommand^ dbComand = gcnew OleDbCommand(query, dbConnection);
 
    if (dbComand->ExecuteNonQuery() != 1)
        MessageBox::Show("Ошибка выполнения запроса", "Ошибка");
    else
        MessageBox::Show("Данные были добавлены", "Успех");
    }
Работаю с БД Access (знаю, что не супер клёво, но выбора нет)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2022, 16:44
Ответы с готовыми решениями:

Вывод записей с одинаковым значением одного поля
Подскажите пожалуйста, что тут нужно изменить? Надо чтоб на странице выдало всех клиентов, у кого в поле "Country" значение...

Выбор записей с одинаковым значением подряд
Всем привет. Очень нужна помощь. Есть таблица (MySQL 5.6) в которую каждые 3 мин добавляется запись (IP_ADDRESS, Time, Result) ...

Выбор записей с одинаковым значением подряд
Всем привет! Очень нужна помощь. Есть таблица вида: «ip_address» «time» «result» «10.10.10.1» ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2022, 16:44
Помогаю со студенческими работами здесь

Выбор записей с одинаковым значением подряд / MySQL
Всем привет! Очень нужна помощь. Есть таблица вида: '10.10.10.1' '30.01.2012 15:45:17' 'Не доступен' '10.10.10.1'...

Выбор записей с одинаковым значением подряд / MySQL
Всем привет! Очень нужна помощь. Есть таблица вида: '10.10.10.1' '30.01.2012 15:45:17' 'Не доступен' '10.10.10.2'...

Выполнить поиск элементов списка с заданным значением ключевого поля
Для заданной предметной области: 1.Сформировать односвязный список элементов структурного типа. 2. Вывести элементы списка на экран в...

Как вывести поля с одинаковым значением
Суть проблемы такова, есть в БД таблица(см. Миниатюры) как мне сделать, что бы на форме отобразились строки с IDКанала = 1? Желательно...

Удаление строк с одинаковым значением поля
Есть база, в ней, допустим, таблица с 100000 строками. Мне надо удалить все строки с одинаковым значением поля mail кроме последней строки...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru