Обработка исключений

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Обработка исключений

Сообщение RAJAH »

Да вы сговорились! Нету у меня такого поля!

Код: Выделить всё

table struct local mc_pos
  (
    fnrec: comp,
    fkol: double,
    fkom: boolean
  )
with index
  (
    inrec=fnrec(unique)
  );
fnrec - это нреки матценностей, и я хочу, чтобы одна МЦ попала в таблицу только один раз.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Обработка исключений

Сообщение m0p3e »

В таких ситуациях стараюсь предварительно проверять наличие записи, т.е.

Код: Выделить всё

If GetFirst FastFirstRow mc_pos Where ((mcpos_view == mc_pos.fnrec))<>tsOk
 ......
Если интересует именно использование обработки исключений, то можно попробовать переписать иначе:

Код: Выделить всё

  ClearBuffer(#mc_pos);
  mc_pos.fkom:=true;
  mc_pos.fkol:=zamkol;
  mc_pos.fnrec:=mcpos_view;
_try
  {
   insert current mc_pos;
  }
_except on ExDbDuplicateKey:
  { 
    message(mat);
  }
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Обработка исключений

Сообщение RAJAH »

m0p3e писал(а):В таких ситуациях стараюсь предварительно проверять наличие записи, т.е.

Код: Выделить всё

If GetFirst FastFirstRow mc_pos Where ((mcpos_view == mc_pos.fnrec))<>tsOK
......
Этот способ, конечно, лучше, но
m0p3e писал(а):интересует именно использование обработки исключений
К сожалению, с ним не получается: ошибка дублирования ключа так и не подавляется.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Обработка исключений

Сообщение m0p3e »

Пример выдран из реально работающих исходников. Работать должен. Видимо причина в тех кусках кода, которые мы не видим. :)
Ответить