Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2010, 11:54   #1
postaveche
Пользователь
 
Регистрация: 30.08.2010
Сообщений: 77
По умолчанию Проверка на дубликат в базе

Здраствуйте
Создал новую форму для ввода записей в БД посоветуйте как зделать проверка на уникальность и есле совпадений нет то записать новую строку в базу

Использую Delphi 2009 и Firebird 2
postaveche вне форума Ответить с цитированием
Старый 30.08.2010, 11:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В базе создай поле уникального ключа. Или создай уникальный индекс по полям, содержимое которых (вкупе) не должно повторяться.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.08.2010, 12:58   #3
postaveche
Пользователь
 
Регистрация: 30.08.2010
Сообщений: 77
По умолчанию

ну это понятно а как вернуть то свой месадж пользователь ... ну типо что такое значение уже есть и введите другое ...

просто если так то месадж от бд на английском вылазит ... ну ни все же знают его...
postaveche вне форума Ответить с цитированием
Старый 30.08.2010, 13:00   #4
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

смотрите в сторону обработки исключений!!! Потому как при добавление дубликата будет сгенерировано исключение, вам и нужно его обработать
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 30.08.2010, 13:09   #5
postaveche
Пользователь
 
Регистрация: 30.08.2010
Сообщений: 77
По умолчанию

а можно по конкретней ... или какойто пример?
postaveche вне форума Ответить с цитированием
Старый 30.08.2010, 13:10   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну Можно банально описать исключения в триггерах. Но я FB не знаю

А вот в Делфи это может выглядеть так:
Код:
try
     ado.ExecSQL;
    except
     on E: Exception do begin
       if pos('ORA-01422',e.Message)<>0 then   ShowMessage('элемент не уникален в базе данных.')
       else
        ShowMessage('Неизвестная ошибка');
     end;
    end;
т.е. тебе вернется некая строка с ошибкой, ты проверишь если в строке такая то ошибка - то вывести свой месседж.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.08.2010, 06:02   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Или непосредственнно перед вставкой записи делать проверку на уже ранее внесенную эту запись в БД.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 31.08.2010, 06:16   #8
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Можно еще сделать поле в базе уникальным и в коде программы писать:

Код:
try
//вставка в базу
except
   MessageDlg("Ошыбко", mtError, [mbOK],0);
end
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 31.08.2010, 09:18   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,091
По умолчанию

У DataSet'a должны быть события OnInsertError, OnPostError и всё в этом духе. Можно обрабатывать их с последующим откатом изменений в случае ошибки вставки, изменения,...
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка наличия в базе на лету BloodWizard JavaScript, Ajax 1 12.08.2010 19:34
Проверка на существование слова в базе при добавлении santax БД в Delphi 0 09.05.2010 22:34
проверка по Access базе CraZZy RabbIt БД в Delphi 6 26.07.2009 21:55
Отбор в базе. Nikolaeva БД в Delphi 4 10.02.2009 12:43
Проверка на дублирование в базе данных POPOV Помощь студентам 9 04.12.2007 18:21