Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 09-01-2020, 19:54:29

Název: Unique index - aký text ukážete užívateľovi
Přispěvatel: Stanislav Hruška 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.
Název: Re:Unique index - aký text ukážete užívateľovi
Přispěvatel: vandrovnik 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 :-)
Název: Re:Unique index - aký text ukážete užívateľovi
Přispěvatel: Stanislav Hruška 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
Název: Re:Unique index - aký text ukážete užívateľovi
Přispěvatel: miroB 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.. :)
Název: Re:Unique index - aký text ukážete užívateľovi
Přispěvatel: Stanislav Hruška 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. 
Název: Re:Unique index - aký text ukážete užívateľovi
Přispěvatel: vandrovnik 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.  
Název: Re:Unique index - aký text ukážete užívateľovi
Přispěvatel: Stanislav Hruška 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.
Název: Re:Unique index - aký text ukážete užívateľovi
Přispěvatel: pf1957 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.