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

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

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

Инфо:
Используется ADODataSet (если чем-то поможет).
Проверять через Locate оччень не хочется.
...
Рейтинг: 0 / 0
05.11.2002, 09:32
    #32064794
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений при редактировании записи Delphi/ADO/Access
Переопредели глобальный обработчик исключений типа Application.HandleException или Application.OnException. Там подменяй текст сообщения.
...
Рейтинг: 0 / 0
05.11.2002, 11:32
    #32064886
Diouzshev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений при редактировании записи Delphi/ADO/Access
Можно, только от этого легче не станет %(.
Текст сообщения я могу и так вывести свой, вот только не пойму КАК РАЗЛИЧИТЬ эти исключения.
Накопал, что можно поковырять 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
05.11.2002, 12:40
    #32064921
Diouzshev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка исключений при редактировании записи Delphi/ADO/Access
Что получилось:

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

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


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