Autor Téma: Zoznam nových a odstránených rokov  (Přečteno 653 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Zoznam nových a odstránených rokov
« kdy: 07-08-2023, 07:55:41 »
Mám DB tabuľku s opakovanými rokmi.  V zoznamoch nebude ani 200 jedinečných rokov. Moja úvaha je nasledovná:
  • Získam zoradený aktuálny zoznam rokov - Select
  • Získam zoradený nový zoznam rokov - Select
  • Porovnaním zoznamov získam:
  • Zoznam nových rokov
  • Zoznam odstránených rokov
Otázka znie: ako to urobiť čo najjednoduchšie?
  • existuje nejaký štandardný komponent čo mi s tým pomôže?
  • musím zoznamy prechádzať a porovnávať "ručne"?

Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 234
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Zoznam nových a odstránených rokov
« Odpověď #1 kdy: 07-08-2023, 08:24:55 »
pouzivas tam vyraz "zoznam novych rokov" aj v bode "2". aj v v prvej bodkovej odrazke. je to ten isty zoznam rokov? asi nie. definuj to radsej cez zoznam  prvkov, skupina A a B, kde dochadza k nejakemu prieniku.
ak tym selectom je myslene ze to ma byt pre sql databazu, tak cez JOIN (spravnym pouzitim left/right a pripadne naslednym filtrom) by malo ist ziskat aj prienik, aj to chybajuce ci uz z jednej strany alebo druhej.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3534
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Zoznam nových a odstránených rokov
« Odpověď #2 kdy: 07-08-2023, 08:29:53 »
Neni jasne, k cemu to ma byt a jestli to tvuj RDBMS podporuje, ale ty rozdily muzes rovnou ziskat na urovni SQL pomoci mnozinovych operaci INTERSECT nebo EXCEPT

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Zoznam nových a odstránených rokov
« Odpověď #3 kdy: 07-08-2023, 09:25:10 »
Musím to upresniť.
  • Otvorím formulár a načítam existujúce roky = aktuálny
  • Zatvorím formulár a načítam existujúce roky = nový zoznam rokov
  • Oba uložím do samostatných zoznamov
  • Porovnaním zoznamov hore získam:
  • Zoznam nových rokov
  • Zoznam odstránených rokov
Celkovo budem mať 4 zoznamy.
SQL mi nepomôže. Vždy mám len jeden stav tabuľky. Musím pracovať so zoznamami.
To martinnr: v 2 mám nový zoznam rokov

Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Jan Fiala

  • Hrdina
  • ****
  • Příspěvků: 453
  • Karma: 6
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:Zoznam nových a odstránených rokov
« Odpověď #4 kdy: 07-08-2023, 09:39:06 »
Promin, ale ani z toho dlouheho vysvetleni jsem nepochopil, o co ti jde.
Zkus vysvetlit vyznam "novy" a "stary" rok ve tve aplikaci a co jsou nove a stare roky.

SQL ti umoznuje ziskat jednim dotazem seznam zaznamu, ktere ve druhe tabulce nejsou. Takze nove nebo naopak stare, ktere v novych chybi
« Poslední změna: 07-08-2023, 09:41:34 od Jan Fiala »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Zoznam nových a odstránených rokov
« Odpověď #5 kdy: 07-08-2023, 10:03:25 »
Jedná sa o jedinú tabuľku!
  • Otvorenie formulára - načítam aktuálny, starý zoznam rokov
  • Pridám, uberiem nejaké roky
  • Zatvorenie formulára - načítam nový zoznam rokov
Porovnaním zoznamov získam
  • Vložené roky - nové roky. Neexistujú starom zozname. V novom áno
  • Vymazané roky - odstránené roky. Neexistujú v novom zozname. V starom áno
Lepšie to už vysvetliť neviem. Na SQL zabudnite!!!
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Jan Fiala

  • Hrdina
  • ****
  • Příspěvků: 453
  • Karma: 6
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:Zoznam nových a odstránených rokov
« Odpověď #6 kdy: 07-08-2023, 10:33:43 »
K čemu ty roky slouží? Nějaký číselník roků?
Pokud jsou použité pro nějakou evidenci a ty je smažeš, tak se má stát co? Promažeš veškeré záznamy, které se roků týkají?
Pokud vložíš nové roky, tak se má stát co?

Pokud je rok použitý, pak bych přidal sloupec s indikací třeba "Zrusen" a tyto roky bych standardně nevybiral do sestav.
Nové roky do tabulky jednoduse vlozis pomoci SQL - pouze ty, které tam dosud nejsou.
« Poslední změna: 07-08-2023, 10:36:05 od Jan Fiala »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Zoznam nových a odstránených rokov
« Odpověď #7 kdy: 07-08-2023, 11:03:39 »
Takto vyzerá, že moja úvaha je nesprávna.
Malo mi to slúžiť na nastavenie GUI.
Ale ja sa vlastne obídem bez toho. Stačí ak na hlavnom formulári aktualizujem patričné komponenty. Všetko ostatné si viem urobiť.
Nuž čo. Občas strelím capa a stratím kopu času.
Ale ďakujem za posledný príspevok. Ten ma osvietil.

Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.