Форум: "Базы";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
Внизобрабатывать код ошибки сервера FB Найти похожие ветки
← →
andreoman (2007-11-13 16:42) [0]Здравствуйте. Использую Firebird_1.5.3. При выполнении некоего запроси при помощи TIBQuery хочу обрабатывать код ошибки сервера. Т.е. получать код ошибки чтоб реагировать на нее и выводить сообщение пользователю на русском языке.
Например как программно узнать код ошибки "violation of PRlМARY or UNIQUE
КЕУ constraint..." (-803) ?
try
with IBQuery1 do
begin
Transaction.StartTransaction;
if Active then Close;
SQL.Clear();
SQL.Text := sqlAddPlata;
ParamByName("id").AsInteger:=listid;
ExecSQL;
Transaction.Commit;
end;
except
on E:exception do
begin
dmManager.qryWrite.Transaction.Rollback;
Windows.MessageBox(Self.Handle, PChar(E.Message),
end;
end;
Зарание спасибо!
← →
Desdechado © (2007-11-13 17:35) [1]Не нужно делать так. Показывай оригинальные сообщения, иначе при ошибках не разберешься, что не так работает.
А заставить сервер ругаться по-русски можно изменением firebird.msg
Можно взять готовый с ibase.ru, а можно самому с помощью IBExpert.
← →
andreoman (2007-11-13 17:53) [2]ну а все-таки ответ на вопрос, как узнать код ошибки ?
← →
andreoman (2007-11-13 18:30) [3]Дело в том, что у меня есть уникальное поле и при добавлении записи я не хочу делать лишнюю проверку есть ли уже такое значение поля, а исходя из кода ошибки сервера (-803) генерировать сообщение "Такое значение уже есть!"
← →
atruhin © (2007-11-14 16:01) [4]> Не нужно делать так. Показывай оригинальные сообщения, иначе
> при ошибках не разберешься, что не так работает.
Вот не надо, потом звонят по телефону и говорят: "Программа выдала ошибку,
но прочитать я не могу."
Поэтому например у нас при возникновении ошибки пользователь получает сообщение:
"Системная ошибка. Код NNN. Обратитесь в техподдержку". Для более грамотных,
есть кнока подробнее, которая показывает исходную ошибку, ну конечно все ошибки в лог.
Автору:
try
qrUpdate.ExecWP([fID]);
trUpdate.Commit;
except
on E:EFIBError do
if E.IBErrorCode = 335544466 then begin // foregin key
qrSQL.Close;
qrSQL.SQL.Text := "select first 5 IDMASTER, NAME from S_FINDOBJECTLINK(:ID)";
qrSQL.ExecWP([fID]);
while not qrSQL.Eof do begin
S := S + qrSQL.FN("NAME").AsString + #13#10;
qrSQL.Next;
end;
S := "Ia iauaeo eia?ony nnueee oaaeyou iaeucy!"#13#10 + S;
MessageBox(0, PChar(S), "Oaaeaiea", MB_ICONERROR or MB_OK);
end else raise;
else raise;
end;
← →
Anatoly Podgoretsky © (2007-11-14 16:27) [5]> atruhin (14.11.2007 16:01:04) [4]
Ну, ну - не передергивай карты, речь шла о другого рода сообщения, типа "Не удалось открыть файл"
← →
Desdechado © (2007-11-14 18:33) [6]> Программа выдала ошибку,но прочитать я не могу
Нехай шлет скриншот или текст ошибки копи-пастом.
Или перевод сделай для MSG-файла, как написано выше.
← →
Германн © (2007-11-14 18:46) [7]Или ещё лучше купить EurekaLog. Будете получать письмо от пользователя с массой полезной информации об ошибке.
http://www.eurekalog.com
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c