powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обработка исключений при редактировании записи Delphi/ADO/Access
4 сообщений из 4, страница 1 из 1
Обработка исключений при редактировании записи Delphi/ADO/Access
    #32064754
Diouzshev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема:

Ключевое поле вводится юзером, и поэтому запросто может совпасть с существующем значением в БД (не спрашивайте почему так - так надо).
Также юзер выбирает значение лукапного поля, которое может и забыть выбрать.

Вопрос:
Как разделить эти исключения (Все они EOleException), и выдать юзеру вразумительное сообщение (а не лекцию на 8 листов которую выдает аксес, которая может непродвинутого юзера напугать до полусмерти).

Инфо:
Используется ADODataSet (если чем-то поможет).
Проверять через Locate оччень не хочется.
...
Рейтинг: 0 / 0
Обработка исключений при редактировании записи Delphi/ADO/Access
    #32064794
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переопредели глобальный обработчик исключений типа Application.HandleException или Application.OnException. Там подменяй текст сообщения.
...
Рейтинг: 0 / 0
Обработка исключений при редактировании записи Delphi/ADO/Access
    #32064886
Diouzshev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно, только от этого легче не станет %(.
Текст сообщения я могу и так вывести свой, вот только не пойму КАК РАЗЛИЧИТЬ эти исключения.
Накопал, что можно поковырять ADOConnection.Errors, но в дельфовом хелпе написано:

Use of Errors to directly access the underlying ADO Errors Collection object requires a good working knowledge of ADO objects in general and ADO Errors Collection objects in specific. Using the Errors Collection object directly is not recommended unless you are familiar with connection object operations. Consult the Microsoft Data Store SDK help for specific information on using ADO Errors Collection objects.

т.е. с намеком на то, что должен быть метод попроще...
...
Рейтинг: 0 / 0
Обработка исключений при редактировании записи Delphi/ADO/Access
    #32064921
Diouzshev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что получилось:

Написав вот такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
  s : string;
begin
  Con.Errors.Clear;
  try
    ADODataSet2.InsertRecord(['1234567890', null]);
   {первое поле - varchar( 6 )
     второе - integer not null}
  except
    on E : EOleException do
      ShowMessage('OLE!!! '+ # 13 # 10  + E.Message);
      {сюда, кстати, ни разу не попал!}
    on E : EDatabaseError do
    begin
      s:= '';
      for i :=  0  to Con.Errors.Count -  1  do
        s:= s + Con.Errors.Item[i].Source + # 13 # 10  +
                   Con.Errors.Item[i].Description + # 13 # 10  +
       IntToStr(Con.Errors.Item[i].NativeError) + # 13 # 10  +
       IntToStr(Con.Errors.Item[i].Number) + # 13 # 10 ;
      ShowMessage('DB!!! '+ # 13 # 10  + E.Message + # 13 # 10  + s);
    end
    else  ShowMessage('Что-то другое!');
  end;
end;

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

Возражения есть?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обработка исключений при редактировании записи Delphi/ADO/Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]