Страница 2 из 2
Re: Обработка исключений
Добавлено: 07 мар 2012, 16:15
RAJAH
Да вы сговорились! Нету у меня такого поля!
Код: Выделить всё
table struct local mc_pos
(
fnrec: comp,
fkol: double,
fkom: boolean
)
with index
(
inrec=fnrec(unique)
);
fnrec - это нреки матценностей, и я хочу, чтобы одна МЦ попала в таблицу только один раз.
Re: Обработка исключений
Добавлено: 07 мар 2012, 16:52
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);
}
Re: Обработка исключений
Добавлено: 13 апр 2012, 11:08
RAJAH
m0p3e писал(а):В таких ситуациях стараюсь предварительно проверять наличие записи, т.е.
Код: Выделить всё
If GetFirst FastFirstRow mc_pos Where ((mcpos_view == mc_pos.fnrec))<>tsOK
......
Этот способ, конечно, лучше, но
m0p3e писал(а):интересует именно использование обработки исключений
К сожалению, с ним не получается: ошибка дублирования ключа так и не подавляется.
Re: Обработка исключений
Добавлено: 13 апр 2012, 13:08
m0p3e
Пример выдран из реально работающих исходников. Работать должен. Видимо причина в тех кусках кода, которые мы не видим.