Главная страница
    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.007 c
15-1202555724
Tirael
2008-02-09 14:15
2008.04.06
про громкость


15-1203690460
Andy BitOff
2008-02-22 17:27
2008.04.06
Transcend JetFlash V60 32-ГБ


2-1204973551
Alex
2008-03-08 13:52
2008.04.06
Вопрос к обсуждению (о вещественном типе данных)


2-1205316322
Dark
2008-03-12 13:05
2008.04.06
xml


15-1203649825
Slider007
2008-02-22 06:10
2008.04.06
С днем рождения ! 22 февраля 2008 пятница





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский