1 (edited by denamen 2018-01-19 13:23:37)

Topic: Поиск дубликатов и запрет их внесения при добавлении новой записи.

Добрый день!

База данных формируется из следующих столбцов:
№ |Наименование|Чертеж изделия|Цена|

Как правильно сделать правило для предотвращения внесения дублирующей записи по столбцу чертеж изделия.
Данные вносятся и хранятся в главной таблице.

Re: Поиск дубликатов и запрет их внесения при добавлении новой записи.

procedure form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
     if form1.Edit1.Text = SQLExecute ('SELECT поле FROM таблица WHERE поле = '''+form1.Edit1.Text+'''') then
     showmessage('Такое значение уже существует') else
         begin
         SQLExecute('INSERT INTO таблица (поле) VALUES  ('''+form1.Edit1.Text+''')');
         end;
     UpdateDatabase('таблица');
end;

Если значение вносится с помощью действия "Сохранить запись" то можно на кнопку сохранения повесить событие OnClick, где выбрать все записи и пристрелить последнюю.

procedure form1_btAddRecord_OnClick (Sender: string; var Cancel: boolean);
begin
SQLExecute('DELETE FROM таблица WHERE таблица.поле = ''' + form1.Edit1.Text + ''' AND таблица.id > (SELECT MIN(id) FROM таблица)') ;
end;

Но первый метод, ИМХО, более правильный

Re: Поиск дубликатов и запрет их внесения при добавлении новой записи.

Уважаемый netros большое спасибо за помощь.

Сделал как вы предложили, а именно:

procedure form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
     if form1.Edit1.Text = SQLExecute ('SELECT item number FROM pricemain WHERE item number = '''+form1.Edit1.Text+'''') then
     showmessage('Такое значение уже существует') else
         begin
         SQLExecute('INSERT INTO pricemain (item number) VALUES  ('''+form1.Edit1.Text+''')');
         end;
     UpdateDatabase('pricemain');
end;

Теперь перед попыткой запуска программы появляется табличка  BEGIN exepted 10:1.

Post's attachments

Attachment icon Work.rar 297.06 kb, 377 downloads since 2018-01-23 

Re: Поиск дубликатов и запрет их внесения при добавлении новой записи.

посмотрите тут http://myvisualdatabase.com/forum/viewtopic.php?id=1062

Re: Поиск дубликатов и запрет их внесения при добавлении новой записи.

netros wrote:

     UpdateDatabase('таблица');

В каких случаях необходимо использовать эту команду?

Визуальное программирование: блог и телеграм-канал.

Re: Поиск дубликатов и запрет их внесения при добавлении новой записи.

Я её использую, чтобы вновь введённое значение сразу же появилось для выбора в комбобоксах.
В противном случае иногда приходится перезапускать программу.
А по поводу begin'а - у вас описана процедура, но нет главной программы.
А она, пусть и пустая, должна быть.

procedure бла-бла-бла;
begin
тело процедуры
end;

begin
end.

Re: Поиск дубликатов и запрет их внесения при добавлении новой записи.

pt.82 wrote:

посмотрите тут http://myvisualdatabase.com/forum/viewtopic.php?id=1062

Просмотрел только не смог адаптировать к своему проекту sad

Если не сложно помогите пожалуйста.

У продукции есть уникальный и неповторимый номер который вносится при добавлении продукции через форму additem (чертеж изделия) это все заносится в БД общего прайса.

Для наглядности приложил проект.

Post's attachments

Attachment icon Work.rar 299.27 kb, 348 downloads since 2018-02-09 

8 (edited by pt.82 2018-02-12 03:10:44)

Re: Поиск дубликатов и запрет их внесения при добавлении новой записи.

проверка по "чертеж изделия"
изменил название полей, не очень хорошо ставить пробел в названия полей

Post's attachments

Attachment icon Work1_1.rar 300.25 kb, 371 downloads since 2018-02-12 

Re: Поиск дубликатов и запрет их внесения при добавлении новой записи.

Огромное спасибо!

Замечания учел.