powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как подменить текст ошибки?
12 сообщений из 12, страница 1 из 1
Как подменить текст ошибки?
    #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
Как подменить текст ошибки?
    #32078840
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. А зачем тебе это нужно? Обрабатывай в клиенте.
...
Рейтинг: 0 / 0
Как подменить текст ошибки?
    #32079112
boss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким образом? В клиенте на Delphi 7 exception не происходит, сообщение посылает Interbase.
...
Рейтинг: 0 / 0
Как подменить текст ошибки?
    #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
Как подменить текст ошибки?
    #32079170
boss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про QUANTITY в самую точку - есть поле с таким именем!:)
Если следить самому, то смысл во внешних ключах вообще прободает.
Да и способ не подходит, в одной строке разные поля имеют внешние ключи и соответственно нужны разные сообщения, к тому же вставка происходит в разных местах программы клиента и вообще какой смысл городить огород может есть способ решить это на серваке раз он следит все равно за внешними ключами?

Заранее благодарен спецам за ответы.
...
Рейтинг: 0 / 0
Как подменить текст ошибки?
    #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
Как подменить текст ошибки?
    #32079562
boss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что ошибка как раз и идет в момент заполнения данных. Exception в делфи не происходит, сообщение выдает interbase.
Как отловить сообщение в interbase хотя бы не различая по какому ключу ошибка?
...
Рейтинг: 0 / 0
Как подменить текст ошибки?
    #32079611
Acue
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть полуизвращенная идея - создать хранимую процедуру на добавление, редактирование, удаление записей в твоей таблице.
В ней ошибку обрабатывать через when .
...
Рейтинг: 0 / 0
Как подменить текст ошибки?
    #32079797
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобще-то в IB был жук - системные триггеры вызывались перед остальными. Его исправили, но не помню, где. Как альтернатива для ХП - триггер перед вставкой и изменением, который проверяет наличие ключа в родительской таблице. В последних версиях должно работать правильно.
...
Рейтинг: 0 / 0
Как подменить текст ошибки?
    #32080723
boss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда внешний ключ вообще теряет смысл, если проверять самому!
...
Рейтинг: 0 / 0
Как подменить текст ошибки?
    #32080758
Babrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, ключ нужен для ссылочной целостности. Но таких ошибок как key violation быть не должно, это не надо обрабатывать на клиенте, надо делать так, чтобы пользователь не мог ввести неверные данные. Т.е. чтоб сотрудник не мог быть не привязан к фирме, товар к подгруппе и т.д. Надо просто продумать интерфейс. Никаких проблем вроде бы нет... :-)
...
Рейтинг: 0 / 0
Как подменить текст ошибки?
    #32080810
boss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да проблема сейчас решена на клиенте.
Вопрос в том как это можно решить на серваке.
Как обработать ошибку на сервере?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как подменить текст ошибки?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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