Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
2-1205432829
nstur
2008-03-13 21:27
2008.04.06
XPMan


15-1203500464
pasha_golub
2008-02-20 12:41
2008.04.06
Стоит ли переводить проект с 7 на 2007?


2-1204905452
savyhinst
2008-03-07 18:57
2008.04.06
Отн. путь в абс путь.


3-1195200086
opoloXAI
2007-11-16 11:01
2008.04.06
Microsoft.Jet.OLEDB.4.0 : ошибка в строке "Sum()"


15-1203710810
antonn
2008-02-22 23:06
2008.04.06
Спамеры с интеллектом%)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский