Страница 1 из 1
как отловить ошибку: "Cannot insert duplicate key row i
Добавлено: 19 апр 2006, 17:37
MIE
Добрый вечер
Подскажите пожалуйсто как отловить ошибку: "Cannot insert duplicate key row in object 'Table_Name' with unique index 'Index_Name'", чтобы представлять ее пользователю на русском языке.
Добавлено: 24 апр 2006, 12:04
coolibin
Например:
if(insert current Table_name <> tsOk)
message('Ты че, чудак, одинаковые записи генеришь?!');
Добавлено: 24 апр 2006, 12:15
Maverick
coolibin писал(а):Например:
if(insert current Table_name <> tsOk)
message('Ты че, чудак, одинаковые записи генеришь?!');
В итоге выдастся и Ваше сообщение и сообщение системное...
Здесь необходимо использовать обработчик исключений (соответственно заглушить стандартое сообщение, обработав стандартное исключение, отвечающее за данное сообщение, выдав собственное).
Добавлено: 24 апр 2006, 12:53
coolibin
Maverick писал(а):coolibin писал(а):Например:
if(insert current Table_name <> tsOk)
message('Ты че, чудак, одинаковые записи генеришь?!');
В итоге выдастся и Ваше сообщение и сообщение системное...
Здесь необходимо использовать обработчик исключений (соответственно заглушить стандартое сообщение, обработав стандартное исключение, отвечающее за данное сообщение, выдав собственное).
Уверен?
Вот тебе пример:
interface test1 'Test1' EscClose;
show at (,,,);
table struct tblTest1
(
Field1 : comp,
Field2 : string[10]
)
with index
(
IND01 = Field1 (unique)
)
;
create view
as select *
from
tblTest1
;
HandleEvent
cmInit:
{
ClearBuffer(#tblTest1);
tblTest1.Field1 := 11;
tblTest1.Field2 := 'First record';
if (insert current tblTest1 <> tsOk)
message('Trouble');
else
message('First record's inserted');
ClearBuffer(#tblTest1);
tblTest1.Field1 := 11;
tblTest1.Field2 := 'Second record';
if (insert current tblTest1 <> tsOk)
message('Trouble');
else
message('Second record's inserted');
_loop tblTest1
message(tblTest1.Field2);
Abort;
}
end;
end.
Добавлено: 04 май 2006, 10:01
MIE
Благодарю вас, уважаемые коллеги, но к счастью нашла решение сама.
Добавлено: 04 май 2006, 10:34
coolibin
MIE писал(а):Благодарю вас, уважаемые коллеги, но к счастью нашла решение сама.
А поделиться?
Добавлено: 04 май 2006, 16:07
MIE
На BeforePost запускаю Query, который селекит такую запись, и если нашел то ShowMessage('ля ля ля') и abort. Возможно не рационально, но меня пока устраивает.
Добавлено: 04 май 2006, 16:23
WiRuc
MIE писал(а):На BeforePost запускаю Query, который селекит такую запись, и если нашел то ShowMessage('ля ля ля') и abort. Возможно не рационально, но меня пока устраивает.
Я балдею
Нужно было сразу говорить, что работаете с ADO.
Добавлено: 04 май 2006, 16:27
MIE
Ну извините уж.
Добавлено: 04 май 2006, 16:50
Maverick

мдя...