Autor Téma: Unique index - aký text ukážete užívateľovi  (Přečteno 228 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4631
  • Karma: 40
    • Verze Delphi: XE7 professional
Unique index - aký text ukážete užívateľovi
« kdy: 09-01-2020, 19:54:29 »
Pokúšam sa o univerzálne riešenie
Kód: Delphi [Vybrat]
  1. ALTER TABLE SERVICEPARAMETERS ADD CONSTRAINT UNQ_SERVPAR_ANAL_SER_PERIOD UNIQUE (FKCAANALYTICOPTIONS,FKSERVICES,PERIOD);
Neviem aký oznam mám zobraziť. Lebo vhodný text viacmenej neviem poskladať. Ako vidieť, tak prvé dva členy sú cudzie kľúč. Vypísanie ich hodnôt je nezmysel. Ja si patričný záznam v dotknutých tabuľkách viem nájsť. Ale neviem ktorú hodnotu z tabuľky mám načítať. Tu by to v prvom prípade malo byť CODE a v druhom TITLE.
.
Viem urobiť funkciu pre každý prípad. Veľa ich nebude. Teraz mám až jeden. Asi ma pošlete touto cestou. Kadeľahšie.
Ďakujem.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 867
  • Karma: 45
    • Verze Delphi: 10.3
Re:Unique index - aký text ukážete užívateľovi
« Odpověď #1 kdy: 09-01-2020, 21:30:59 »
Název toho indexu asi dostaneš zpět v chybové hlášce od serveru, takže můžeš v aplikaci mít číselník, kde pro jednotlivé indexy napíšeš srozumitelnou hlášku ("Záznam není možné uložit, protože...").

Uživatele bych raději nedráždil textem obsahujícím ...ANAL_SER_..., mohl by si to špatně vyložit :-)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4631
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Unique index - aký text ukážete užívateľovi
« Odpověď #2 kdy: 09-01-2020, 21:58:02 »
Ja tu kontrolu robím ešte pred Table.Post. Prechádzam si všetky indexy v tabuľke. Ak názov indexu začína na UNQ a zoznam polí obsahuje ';' tak sa jedná o môj prípad.
Snažím sa predísť výnimke. Ja mám všetko spracované, okrem textu oznamu. Z Tvojej reakcie je jasné, že si mám urobiť samostatné funkcie. Tak ako som predpokladal ;)
Ďakujem za reakciu.
PS: mne sa veľmi páči skratka ANAL = xxAnalyticxx
« Poslední změna: 09-01-2020, 22:00:04 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline miroB

  • Guru
  • *****
  • Příspěvků: 554
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Unique index - aký text ukážete užívateľovi
« Odpověď #3 kdy: 09-01-2020, 22:28:58 »
..
Uživatele bych raději nedráždil textem obsahujícím ...ANAL_SER_..., mohl by si to špatně vyložit :-)
Stanovi: Súhlasím s názorom. Tiež som to bral z prvého pohľadu, že máš tej kontroly nejak až po zuby.. :)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4631
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Unique index - aký text ukážete užívateľovi
« Odpověď #4 kdy: 10-01-2020, 09:12:34 »
..
Uživatele bych raději nedráždil textem obsahujícím ...ANAL_SER_..., mohl by si to špatně vyložit :-)
Stanovi: Súhlasím s názorom. Tiež som to bral z prvého pohľadu, že máš tej kontroly nejak až po zuby.. :)
Hlavne to neústavne testovanie každej prkotiny stále dokola a dokola. 
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 867
  • Karma: 45
    • Verze Delphi: 10.3
Re:Unique index - aký text ukážete užívateľovi
« Odpověď #5 kdy: 10-01-2020, 10:44:01 »
Hlavne to neústavne testovanie každej prkotiny stále dokola a dokola.

Už si nepamatuju - proč že to vlastně chceš testovat ještě OnBeforePost? Nemůžeš prostě jen udělat něco jako:

Kód: Delphi [Vybrat]
  1. try
  2.  Post;
  3. except
  4.  on e: ExceptionKterouDelaFiredac do ZobrazitHezkouHlaskuUzivateli; // v nejakem tDictionary dohledany text pro UNQ_SERVPAR_ANAL_SER_PERIOD
  5.  else raise;
  6. end;
  7.  

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4631
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Unique index - aký text ukážete užívateľovi
« Odpověď #6 kdy: 10-01-2020, 11:39:45 »
Ja to testujem mimo DB. Nevyužívam OnBeforePost.
Ja s tými výnimkami ešte nekamarátim. Okrem toho sa snažím dodržať zásadu, že sa výnimky nemajú používať na aplikačnú/obchodnú logiku. Aj keď v tomto prípade by sa jednalo o vlastnú výnimku.
Tie obmedzenia v DB mám z dôvodu, že by sa niekde niečo posralo. Hlavne to medzi klávesnicou a stoličkou.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2645
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Unique index - aký text ukážete užívateľovi
« Odpověď #7 kdy: 11-01-2020, 10:42:01 »
Okrem toho sa snažím dodržať zásadu, že sa výnimky nemajú používať na aplikačnú/obchodnú logiku.
To je spravne, ale pro jistotu bych pripomenul, ze existuje pomerne jasna delici rovina:
a) validace hodnot zadanych BFU tj. tam, kde se typicky kontroluje a zvyraznuje spatna hodnota v UI vcetne informace o chybe
b) u ostatnich hodnot prirazovanych napr. algoritmicky programatorem se to nechava vypadnout na UNIQUE constraint violation exception.