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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2015, 20:10   #1
иванлеон
Пользователь
 
Регистрация: 04.01.2012
Сообщений: 31
По умолчанию Перехват ошибок от TTable

Как перехватить ошибки, которые происходят в базе данных, если они происходят не в программном коде и выводить свои сообщения. Конкретно, от ADOTable
Например, чтобы сообщения были на русском языке.
События OnDeleteError и подобные вообще не работают(((

Последний раз редактировалось иванлеон; 24.05.2015 в 20:13.
иванлеон вне форума Ответить с цитированием
Старый 24.05.2015, 20:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Через try except. в который помещаешь действия, которые требуют перехвата.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.05.2015, 20:39   #3
иванлеон
Пользователь
 
Регистрация: 04.01.2012
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Через try except. в который помещаешь действия, которые требуют перехвата.
А если кода нет и ошибка происходит при работе с базой данных?
Например, вводишь неверную дату, срабатывает автоматическое исключение "is not a valid date and time".
Как перехватить такое исключение и вывести своё по-русски. Мол - Неверный формат даты и т.п.
иванлеон вне форума Ответить с цитированием
Старый 24.05.2015, 20:46   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Например, вводишь неверную дату
Где вводишь? В компоненте типа DBEdit?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.05.2015, 20:50   #5
иванлеон
Пользователь
 
Регистрация: 04.01.2012
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Где вводишь? В компоненте типа DBEdit?
Нет, TDBGrid. Так уже сделано.
иванлеон вне форума Ответить с цитированием
Старый 24.05.2015, 20:55   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну вот тут я тебе не скажу... Не пользуюсь этим компонентов вообще и давно.
Но вроде бы нет возможности отключить вывод исключений.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.05.2015, 20:56   #7
иванлеон
Пользователь
 
Регистрация: 04.01.2012
Сообщений: 31
По умолчанию

В сети валяется следующий код.
У меня он не работает.

Код:
{Секция Interface} 
procedure HandleException(Sender: TObject; E: Exception); 
... 

{Секция Implementation} 
procedure TForm1.HandleException(Sender: TObject; E: Exception); 
var 
  err: DBIResult; 
begin 
  if E is EDBEngineError then 
  begin 
    err := (E as EDBEngineError).errors[(E as EDBEngineError).errorcount - 
      1].errorcode; 
    if (err = DBIERR_KEYVIOL) then 
      showMessage('Ошибка Key violation!') 
    else if (err = DBIERR_LOCKED) then 
      showmessage('Запись блокирована другим пользователем') 
    else if (err = DBIERR_FILELOCKED) then 
      showmessage('Таблица блокирована кем-то еще') 
    else 
      showmessage('Другая ошибка DB') 
  end 
  else 
    showmessage('Упс!: ' + E.Message); 
end; 

...'инсталлировать' обработчик исключений можно так: 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  Application.onException:=HandleException; 
end;


Для использования предопределенных констант ошибок ('DBIERR_etc.'), вам необходимо включить DBIERRS в список используемых модулей. Полный список кодов ошибок при работе с базами данных вы можете найти в файле DBIERRS.INT, расположенном в каталоге :\DELPHI\DOC.


DBIERRS подключаю.Кричит на EDBEngineError

Последний раз редактировалось Stilet; 24.05.2015 в 21:36.
иванлеон вне форума Ответить с цитированием
Старый 24.05.2015, 21:02   #8
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Например, вводишь неверную дату, срабатывает автоматическое исключение "is not a valid date and time".
Есть же компонент для работы "дату"
Цитата:
TDBGrid. Так уже сделано.
Что там сделано ? и вам спрашивают по DBEdit и не про TDBGrid
Цитата:
DBIERRS подключаю.Кричит на EDBEngineError
На #2 вам уже ответили и вы продолжайте своего . погуглиг бы и посмотрел пример http://delphiworld.narod.ru/base/edbengineerror.html
http://articles.org.ru/cn/showdetail.php?cid=8082

Последний раз редактировалось xxbesoxx; 24.05.2015 в 21:09.
xxbesoxx вне форума Ответить с цитированием
Старый 24.05.2015, 21:06   #9
иванлеон
Пользователь
 
Регистрация: 04.01.2012
Сообщений: 31
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Есть же компонент для работы "дату"

Что там сделано ? и вам спрашивают по DBEdit и не про TDBGrid
В приложении уже сделана БД, где ввод через TDBGrid
иванлеон вне форума Ответить с цитированием
Старый 24.05.2015, 21:21   #10
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Код:
где ввод через TDBGrid
Я бы запретил DBGrid редактирование и для добавление и редактирование делал второе форма , DBGrid это для отображения данных
Изображения
Тип файла: jpg 1.jpg (69.9 Кб, 43 просмотров)

Последний раз редактировалось xxbesoxx; 24.05.2015 в 21:26.
xxbesoxx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват ошибок Konstantin_ua Общие вопросы Delphi 9 17.02.2014 18:34
Перехват ошибок из DLL Crystallon Общие вопросы Delphi 10 22.10.2013 02:36
перехват ошибок Марк Охман БД в Delphi 5 08.12.2010 16:03
Перехват ошибок компилятора Яр|/||< (^_^) Общие вопросы Delphi 4 27.03.2010 16:07
Перехват ошибок от Windows DRUNE Софт 2 09.04.2009 13:24