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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2008, 17:30   #1
cpGrey
 
Аватар для cpGrey
 
Регистрация: 26.09.2007
Сообщений: 6
По умолчанию Повторяющиеся значения в БД.

Здравствуйте, уважаемые.

Есть небольшая база данных MS Access и простенькая прога на Delphi 7.
В ней таблица ADOTable через ADOConnection соединяется
с базой данных MS Access (mdb). Первое поле индексированное (повторения не допускаются),
остальные по-умолчанию. Все прекрасно работает: добавление записи в таблицу, редактирование,
удаление и т.п. Но при добавлении записи, уже существующей в таблице, естественно, вылетает
ошибка. Добавление делаю прямо в таблице.
Как обработать исключительную ситуацию так, чтобы показать "Showmessage" пользователю,
что "...такая запись, мол, уже есть в таблице...", пользователь жмет OK, и курсор перемещается
на существующую запись в таблице, выделяя ее?
Что-то с этими Locate-ами и Lookup-ами я уже запарился, не получается как хотелось бы.
Выручайте, пацаны.
Заранее всем спасибо.
Grey.
cpGrey вне форума Ответить с цитированием
Старый 25.01.2008, 21:05   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Можно попробывать так:
Код:
try
Table.Post;
Except
ShowMessage('Такая запись уже есть в БД');
  with Table do
  begin
  SetKey;
  FieldByName('FAMILY').AsString:=Edit1.Text;
  GoToKey;
  end;
end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 26.01.2008, 10:19   #3
cpGrey
 
Аватар для cpGrey
 
Регистрация: 26.09.2007
Сообщений: 6
По умолчанию

В том-то и дело, что нет никаких EDIT-ов!
Ты добавляешь запись прямо в таблице и она переходит в состояние
вставки или редактирования. Вызвав Locate (Lookup), если я не ошибаюсь, курсор уходит с новой записи и , похоже, пытается постить новую запись, а запись то - повторяющаяся! И первой обрабатывает ошибку база данных MS Access. Может я заблуждаюсь?
Поправьте, спецы.
cpGrey вне форума Ответить с цитированием
Старый 26.01.2008, 20:01   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Например:
Код:
var tmp: string;
...
tmp:=Table.FieldByName('FAMILY').AsString;
try   
Table.Post;   
Except   
ShowMessage('Такая запись уже есть в БД');   
  with Table do   
  begin   
  SetKey;   
  FieldByName('FAMILY').AsString:=tmp;   
  GoToKey;   
  end;   
end;
или Locate по этому же ТМР...
mihali4 вне форума Ответить с цитированием
Старый 29.01.2008, 18:32   #5
cpGrey
 
Аватар для cpGrey
 
Регистрация: 26.09.2007
Сообщений: 6
По умолчанию Доброта спасет этот гребанный мир

Короче, сам все сделал.
Прекрасно работает...
Всем спасибо за советы.
cpGrey вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторяющиеся элементы массива Stanislav Общие вопросы Delphi 10 23.05.2008 12:31
Повторяющиеся записи DBGrid Crookers БД в Delphi 2 21.05.2008 13:26
повторяющиеся строки ShenDy Общие вопросы C/C++ 4 27.03.2008 08:52
Выбрать повторяющиеся записи Andrei SQL, базы данных 2 13.09.2007 14:28
Удалить из Memo повторяющиеся строки Etar Компоненты Delphi 2 28.06.2007 18:34