Autor Téma: Uživatelské označení záznamu  (Přečteno 731 krát)

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 441
  • Karma: 9
    • Verze Delphi: XE2
Uživatelské označení záznamu
« kdy: 02-03-2020, 20:01:58 »
Potřeboval bych aplikovat funkci kdy uživatel si může (např. klikem myši) označit jeden či více záznamů v tabulce (gridu)
1. varianta
Přimo v definici tabulky mít pole X typu BOOL   které poklikáním bude přes SQL Update příkaz nabývat hodnoty True/False

2. varianta
Mít pracovní tabulku provázanou přes IdTable, IdRecord  opět s polem X typu BOOL  která by udržovala info o výběru daného řádku v mateřské tabulce

Hlavně mi jde o to zda při použití 1. varianty (která je samozřejmě jednodušší na obsluhu) nebudu  zatěžovat "transakční historii" a tak mi bude víceméně zbytečně bobtnat velikost databáze
Zejména při masívním hromadném označování /odznačování záznamů

Prosím o váš názor ..

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1289
  • Karma: 51
    • Verze Delphi: 10.3
Re:Uživatelské označení záznamu
« Odpověď #1 kdy: 02-03-2020, 20:22:51 »
Bude seznam označených záznamů potřeba na serveru, nebo ne? Přímo do té tabulky bych to dával jen v případě, že se označení má stát součástí záznamu (bude potřeba v budoucnu, je společné pro všechny uživatele).

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 441
  • Karma: 9
    • Verze Delphi: XE2
Re:Uživatelské označení záznamu
« Odpověď #2 kdy: 02-03-2020, 20:31:44 »
Bude seznam označených záznamů potřeba na serveru, nebo ne? Přímo do té tabulky bych to dával jen v případě, že se označení má stát součástí záznamu (bude potřeba v budoucnu, je společné pro všechny uživatele).
Tuto možnost a případná omezení jsem také zvažoval,  ale v této fázi mi jde přednostně o "bobtání" databáze  a s tím spojené případné potíže s rychlostí dotazů atp.
Záznam má většinou několik desítek polí (velikost několik set bajtů ).

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1289
  • Karma: 51
    • Verze Delphi: 10.3
Re:Uživatelské označení záznamu
« Odpověď #3 kdy: 02-03-2020, 20:40:55 »
Na server přímo do té tabulky bych to dával, jen pokud bych to na serveru v té tabulce vyloženě potřeboval, jinak bych se tomu snažil vyhnout. Bobtnání tam bude, ale předpokládám, že Firebird umí volné místo po neplatných verzích záznamu časem znovu využít, tzn. neporoste to donekonečna.

Něco takového na klientovi jsem kdysi dělal pomocí calculated field - stranou jsem si držel tList, který obsahoval ID označených řádků (bylo to pár položek, kdyby jich bylo víc, určitě by to chtělo použít něco s rychlejším přístupem - tDictionary apod.), a to počítané pole bylo True, pokud se ID záznamu vyskytovalo v tList. Tam ale bylo třeba označení jen v rámci daného formuláře a bylo naopak žádoucí, aby se při zavření okna označení zapomnělo.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 441
  • Karma: 9
    • Verze Delphi: XE2
Re:Uživatelské označení záznamu
« Odpověď #4 kdy: 02-03-2020, 20:55:25 »
Něco takového na klientovi jsem kdysi dělal pomocí calculated field - stranou jsem si držel tList, který obsahoval ID označených řádků (bylo to pár položek, kdyby jich bylo víc, určitě by to chtělo použít něco s rychlejším přístupem - tDictionary apod.), a to počítané pole bylo True, pokud se ID záznamu vyskytovalo v tList. Tam ale bylo třeba označení jen v rámci daného formuláře a bylo naopak žádoucí, aby se při zavření okna označení zapomnělo.

Tento způsob umí nějakým způsobem i grid (podle Id recordu)  ale já bych potřeboval tyto výběry použít i v rámci volaní SP či vnořených dotazů takže tu hodnotu  potřebuji mít uloženou v databázi i pro pozdější použití.
Asi pro začátek vyzkouším tu pomocnou tabulku - sice to dá více práce ale zase si nebudu zbytečně aktualizovat záznamy.
A v budoucnu to půjde rozšířit i na výběry podle uživatele či stanice

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1289
  • Karma: 51
    • Verze Delphi: 10.3
Re:Uživatelské označení záznamu
« Odpověď #5 kdy: 02-03-2020, 21:05:45 »
Taky existují dočasné tabulky (temporary table), záleží, jak dlouho má ten seznam označení vydržet.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 441
  • Karma: 9
    • Verze Delphi: XE2
Re:Uživatelské označení záznamu
« Odpověď #6 kdy: 02-03-2020, 21:54:42 »
Taky existují dočasné tabulky (temporary table), záleží, jak dlouho má ten seznam označení vydržet.
jj. GTT  občas používám v SP.

Jinak jsem si již aplikoval obecnou tabulku a funguje to zatím k plné spokojenosti .
Teď to ještě udělat tak aby to mělo společnou obecnou funkčnost u požadovaných tabulek (View)

Děkuji ti za diskuzi  k tématu ..