Autor Téma: Výnimka - dynamicky vytvrený text  (Přečteno 133 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4643
  • Karma: 40
    • Verze Delphi: XE7 professional
Výnimka - dynamicky vytvrený text
« kdy: 03-01-2020, 19:08:18 »
Pokúšam sa vytvoriť oznam výnimky dynamicky. Mám problém s diakritikou
Kód: [Vybrat]
SET TERM ^ ;
CREATE TRIGGER ROOMTITLES_BI FOR ROOMTITLES
ACTIVE BEFORE
  INSERT OR
  UPDATE
POSITION 0
AS
DECLARE VARIABLE NOTICE VARCHAR(1024);
BEGIN
  NOTICE = 'violation of UNIQUE KEY constraint "UQ_ROOMTITLES" on table "ROOMTITLES"
  Problematic key value is ("TITLE" = ' ||''''|| NEW.TITLE ||''''|| ')';  // NEW.TITLE má rozbitú diakritiku. Balkón - BalkĂłn
.
  IF (INSERTING) THEN
  BEGIN
    IF (EXISTS (SELECT *
                FROM ROOMTITLES AS RT
                WHERE (RT.TITLE = NEW.TITLE))) THEN
    BEGIN
      EXCEPTION DUPLICATE_VALUE NOTICE;
    END
  END
  ELSE
  BEGIN
    IF (UPDATING) THEN
    BEGIN
      IF (EXISTS (SELECT *
                  FROM ROOMTITLES AS RT
                  WHERE (RT.TITLE = NEW.TITLE) AND (RT.IDROOMTITLES <> OLD.IDROOMTITLES))) THEN
      BEGIN
        EXCEPTION DUPLICATE_VALUE NOTICE;
      END
    END
  END
END^
SET TERM ; ^
Nastavenie kódovej stránky na W1250 nepomohlo.
Teraz som zistil, že sa nedá zmeniť doména.
« Poslední změna: 03-01-2020, 19:12:02 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 872
  • Karma: 45
    • Verze Delphi: 10.3
Re:Výnimka - dynamicky vytvrený text
« Odpověď #1 kdy: 03-01-2020, 20:35:13 »
Já to řešil tak, že jsem se zaměřil jen na název výjimky a text jsem k tomu přiřazoval až v aplikaci (kvůli diakritice, kvůli překladům, možná jestli tam nebyl i nějaký divný limit délky, taky se to snáz mění v případě potřeby).

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4643
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Výnimka - dynamicky vytvrený text
« Odpověď #2 kdy: 03-01-2020, 21:37:39 »
Hm, texty budem riešiť samostatne v rámci vlastnej triedy výnimiek. Chcel som, aby to malo zhodnú fazónu s FireDAC. Lepšie tam bude dať nejaké číslo - identifikátor výnimky.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.