Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как подменить текст ошибки? / 12 сообщений из 12, страница 1 из 1
12.12.2002, 01:18
    #32078785
boss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Как подменить текст ошибки:
violation of FOREIGN KEY constraint "FK_T_MAIN_INI" on table "T_MAIN"


Пробовал писать что-то типа:
when sqlcode -530 do
begin
exception "exc_not_del";
end

в тригеры до и после вставки в T_MAIN, но получаю ошибку: invalid token when.
Куда же прописывать эту конструкцию, или есть иной способ выдать свое сообщение взамен стандартного.

Заранее благодарен.

FB 1.0
IBExpert 2.5.0.13
...
Рейтинг: 0 / 0
12.12.2002, 13:22
    #32078840
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Привет. А зачем тебе это нужно? Обрабатывай в клиенте.
...
Рейтинг: 0 / 0
13.12.2002, 19:25
    #32079112
boss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Каким образом? В клиенте на Delphi 7 exception не происходит, сообщение посылает Interbase.
...
Рейтинг: 0 / 0
14.12.2002, 13:36
    #32079155
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Ну как-нибудь так:
procedure TForm1.ApplyButtonClick(Sender: TObject);
begin
IBDatabase1.Open;
IBTransaction1.StartTransaction;
Table1.Insert;
Table1.FieldByName('QUANTITY').AsInteger := StrToInt(Edit1.Text);
try
Table1.Post;
IBTransaction1.Commit
except
ShowMessage('ыыыыыыы');
Table1.Cancel;
IBTransaction1.Rollback
end
end;
...
Рейтинг: 0 / 0
14.12.2002, 16:30
    #32079170
boss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Про QUANTITY в самую точку - есть поле с таким именем!:)
Если следить самому, то смысл во внешних ключах вообще прободает.
Да и способ не подходит, в одной строке разные поля имеют внешние ключи и соответственно нужны разные сообщения, к тому же вставка происходит в разных местах программы клиента и вообще какой смысл городить огород может есть способ решить это на серваке раз он следит все равно за внешними ключами?

Заранее благодарен спецам за ответы.
...
Рейтинг: 0 / 0
15.12.2002, 17:14
    #32079492
Babrow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Поправить текст можно еще так:
Try
Except
on E: Exception do begin
if pos('FK_MEASURE',Uppercase(E.Message))<>0 then
ShowMessage('Неверное кол-во')
else if pos('FK_MAKER',Uppercase(E.Message))<>0
ShowMessage('Неверный производитель')
end;
end;

А вообще надо на уровне заполнения данных не давать заводить "не существующие" внешние ключи
А по коду ошибки ты не определишь какой ключ вызвал exception
...
Рейтинг: 0 / 0
15.12.2002, 21:45
    #32079562
boss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Дело в том, что ошибка как раз и идет в момент заполнения данных. Exception в делфи не происходит, сообщение выдает interbase.
Как отловить сообщение в interbase хотя бы не различая по какому ключу ошибка?
...
Рейтинг: 0 / 0
16.12.2002, 08:55
    #32079611
Acue
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Есть полуизвращенная идея - создать хранимую процедуру на добавление, редактирование, удаление записей в твоей таблице.
В ней ошибку обрабатывать через when .
...
Рейтинг: 0 / 0
16.12.2002, 12:33
    #32079797
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Вобще-то в IB был жук - системные триггеры вызывались перед остальными. Его исправили, но не помню, где. Как альтернатива для ХП - триггер перед вставкой и изменением, который проверяет наличие ключа в родительской таблице. В последних версиях должно работать правильно.
...
Рейтинг: 0 / 0
17.12.2002, 18:52
    #32080723
boss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Тогда внешний ключ вообще теряет смысл, если проверять самому!
...
Рейтинг: 0 / 0
17.12.2002, 19:46
    #32080758
Babrow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Нет, ключ нужен для ссылочной целостности. Но таких ошибок как key violation быть не должно, это не надо обрабатывать на клиенте, надо делать так, чтобы пользователь не мог ввести неверные данные. Т.е. чтоб сотрудник не мог быть не привязан к фирме, товар к подгруппе и т.д. Надо просто продумать интерфейс. Никаких проблем вроде бы нет... :-)
...
Рейтинг: 0 / 0
17.12.2002, 22:39
    #32080810
boss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подменить текст ошибки?
Да проблема сейчас решена на клиенте.
Вопрос в том как это можно решить на серваке.
Как обработать ошибку на сервере?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как подменить текст ошибки? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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