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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2008, 12:56   #1
Liones
Пользователь
 
Аватар для Liones
 
Регистрация: 26.11.2008
Сообщений: 81
По умолчанию Обработка ошибок

Подскажите, пожалуйста! Есть таблица (Paradox), для работы в таблицей на форме используются DBGrid и DBNavigator. При добавлении не уникальной записи выходит сообщение "Key violation". Как перехватить этот момент, чтобы выдать пользователю сообщение, например, "Такая запись уже существует".
Liones вне форума Ответить с цитированием
Старый 01.12.2008, 15:25   #2
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Сделай проверку на ввод данных ... и если данные Вводились то выдай сообщение ... не пойму трудности объясни подробнее (тоесть объясни как именно происходить добавление данных)...
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 01.12.2008, 20:13   #3
Самоучка
Пользователь
 
Аватар для Самоучка
 
Регистрация: 09.10.2008
Сообщений: 41
По умолчанию

Цитата:
Подскажите, пожалуйста! Есть таблица (Paradox), для работы в таблицей на форме используются DBGrid и DBNavigator. При добавлении не уникальной записи выходит сообщение "Key violation". Как перехватить этот момент, чтобы выдать пользователю сообщение, например, "Такая запись уже существует".
можете использовать обработчик исключительных ситуаций
Код:
try
\\здесь какое-нибудь условие или выполнение операции
except
   on exception do
ShowMessage('В таблице уже есть запись с такими данными' +#13);
end;
пример обработчика исключительных ситуаций можно посмотреть здесь
http://programmersforum.ru/showthrea...t=29370&page=2
Писать на стенах туалета, увы, мой друг не мудрено.....
Среди говна - мы все поэты. Среди поэтов - мы говно!
Самоучка вне форума Ответить с цитированием
Старый 01.12.2008, 20:29   #4
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

не думаю что SQL запрос сможет перехватить Трай - Ексепт =)))

ввод наверняка будет через Форму а тоесть Едиты и Мемо - отсюда перед переносом данных легким запросом проверить ....
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 01.12.2008, 20:37   #5
Самоучка
Пользователь
 
Аватар для Самоучка
 
Регистрация: 09.10.2008
Сообщений: 41
По умолчанию

Код:
не думаю что SQL запрос сможет перехватить Трай - Ексепт =))) 

ввод наверняка будет через Форму а тоесть Едиты и Мемо - отсюда перед переносом данных легким запросом проверить ....
Я и не писал, что нужно использовать те коды которые были использованы у меня. Я дал ссылку как пример использования try
except
Писать на стенах туалета, увы, мой друг не мудрено.....
Среди говна - мы все поэты. Среди поэтов - мы говно!
Самоучка вне форума Ответить с цитированием
Старый 02.12.2008, 10:06   #6
Liones
Пользователь
 
Аватар для Liones
 
Регистрация: 26.11.2008
Сообщений: 81
По умолчанию

Проблема в том, что я не поняла в какой момент вставить обработку исключения. В коде есть обработка AfterPost.
Liones вне форума Ответить с цитированием
Старый 02.12.2008, 10:30   #7
Mitriy08
Пользователь
 
Регистрация: 11.07.2008
Сообщений: 91
По умолчанию

Приведите код как вы сохраняете записи...сдесь телепатов нету....
Mitriy08 вне форума Ответить с цитированием
Старый 02.12.2008, 10:49   #8
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

К примеру у тебя есть поля ввода Edit1 i Edit2 Батон Как подтверждение того что ты ввела ,в 1 ты вводиш Свой ключ.

Ты ввела, и нажала на подтвердить, теперь е примеру использую Query.
Form1.Query.close;
Form1.query.SQL.text='select * from NAME_TABLE where ID='+Form1.Edit.text+';'
Form1.Query.OPen;
If Form1.Query.RecordSet<>0 then
alert('Ошибка!! Воода !!! Повторите !!!') - типа того =)))
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 03.12.2008, 07:03   #9
Liones
Пользователь
 
Аватар для Liones
 
Регистрация: 26.11.2008
Сообщений: 81
По умолчанию

В проекте используется компонент TTable. Вот код который обрабатывает события для этого компонента:
procedure TDM.TTarifAfterPost(DataSet: TDataSet);
begin
dat:=DM.TTarifDAT.Value;
end;
procedure TDM.TTarifBeforeInsert(DataSet: TDataSet);
begin
kod:=DM.TTarif.RecordCount+1;
while DM.TTarif.Locate('KOD_T',kod,[]) do
begin
kod:=kod+1;
end;
end;
procedure TDM.TTarifNewRecord(DataSet: TDataSet);
begin
DM.TTarifKOD_T.Value:=kod;
if DateToStr(dat)='' then
begin
DM.TTarifDAT.Value:=dat;
end else begin
DM.TTarifDAT.Value:=Date;
end;
end;
Так какое событие обработать? Куда включить обработку исключения? В OnPostError, BeforePost?
Liones вне форума Ответить с цитированием
Старый 03.12.2008, 09:52   #10
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Ну Наверно Before тебе ж надо проверить данные перед сохранением ....
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка ошибок Ivanich JavaScript, Ajax 1 24.04.2008 22:49
Обработчик ошибок XPAiN Microsoft Office Excel 3 21.04.2008 09:30
Обработка ошибок в Delphi 7 Наташкин БД в Delphi 3 21.12.2007 22:07
обнаружение ошибок makar575 Фриланс 3 18.12.2007 07:56
Обработка ошибок. Serviceprofi Помощь студентам 7 19.11.2007 15:12