Autor Téma: SQLCode to string  (Přečteno 2693 krát)

Offline DuPr

  • Příspěvků: 19
  • Karma: 0
SQLCode to string
« kdy: 14-02-2013, 07:04:13 »
Ahoj,

prosím o radu. Lze z uložené procedury (FB 2.1) získat chybu SQLCode ne jako číslo, ale už "převedenou" na textovou zprávu (v parametru)?

OutputParametr - OP_ERROR_MESSAGE varchar(200);

.
.
.
WHEN ANY DO
BEGIN
  OP_EROR_MESSAGE = SQLCODE   //tady bych potreboval ziskat text message
END

Díky

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 2739
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:SQLCode to string
« Odpověď #1 kdy: 14-02-2013, 10:14:42 »
AWHEN ANY DO
BEGIN
  OP_EROR_MESSAGE = SQLCODE   //tady bych potreboval ziskat text message
END

AFAIK, tak prima podpora pro to neni zadna. Ty texty jsou v firebird.msg a na ne DB nevidi. Klient ty texty vola pres API napr. (v principu) isc_sql_interprete(sqlcode),  fb_interpret(gdscode).

Helen Borrie nekde psala, ze to jde, ale bude to dost pracne: musis si udelat tabulku se sloupci SQLCODE, GDSCODE a MESSAGE a nejak do ni dostat obsah souboru firebird.msg. Kdyz jsem zkousel vygooglit format toho souboru, tak jsem nic nenasel - na prvni pohled mi to pripomina nejaky .dbf s hlavickou
a pak recordy CHAR(60), DWORD, DWORD, ale nemam tu nic, cim bych to otevrel.

Jinak na forech vetsinou doporucuji vytahnout ten kod az na klienta a teprve tam ho interpretovat - to uz bys mohl volat to API jako to delaji komponenty.

Offline DuPr

  • Příspěvků: 19
  • Karma: 0
Re:SQLCode to string
« Odpověď #2 kdy: 14-02-2013, 11:36:34 »

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 2739
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:SQLCode to string
« Odpověď #3 kdy: 14-02-2013, 12:14:09 »
Firebird 2.1 Error Codes
http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/Firebird-2.1-ErrorCodes.pdf
No jo, ale to nerika nic o formatu toho souboru firebird.msg: navic kdyz jsem se ted do nej znovu dival podrobneji, tak obsahuje nejakou hlavicku a posloupnost textu ve tvaru CODE:dword, LENGTH:dword, MESSAGE:varchar(LENGTH) a na konci nejakou tabulku, takze s jeho ctenim to bude nejspis slozitejsi, nez se mi na prvni pohled zdalo.

Offline DuPr

  • Příspěvků: 19
  • Karma: 0
Re:SQLCode to string
« Odpověď #4 kdy: 14-02-2013, 12:38:51 »
Nápad s tabulkou se mně líbí. Podle toho PDFka si naplním vlastní tabulku (teda alespoň "nejdůležitější" chyby). Dám si tam message pro češtinu, angličtinu... a podle SQLCODE, GDSCODE budu dotahovat. Toto řešení mně postačuje. Díky

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 2739
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:SQLCode to string
« Odpověď #5 kdy: 14-02-2013, 12:55:42 »
Nápad s tabulkou se mně líbí. Podle toho PDFka si naplním vlastní tabulku (teda alespoň "nejdůležitější" chyby). Dám si tam message pro češtinu, angličtinu... a podle SQLCODE, GDSCODE budu dotahovat. Toto řešení mně postačuje. Díky
Jestli mas IBExperta, tak ten ma v menu Tools polozku Localize IB Messages, ktere umozni nacist a editovat obsah toho firebird.msg souboru a exportovat si ho do textu. Takze alespon texty se daji jednoduse extrovat. Horsi to bude s temi kody, to se mi nikde nepovedlo vygooglit