Autor Téma: Zredukovanie zbytočných akcií - Spustenie SQL  (Přečteno 129 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6924
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Zredukovanie zbytočných akcií - Spustenie SQL
« kdy: 04-12-2022, 20:27:54 »

Zámerom je dosiahnuť čo najkratšiu odozvu. Stav - podľa obrázka.
Mám tri podformuláre:
  • ľavá i stredná časť používajú tie isté SQL. Dedia rovnaké triedy
  • pravá strana je samostatný podformulár s 12 totožnými záložkami
Všetky tri časti pracujú s kritickou tabuľkou DEPOSITS. Rozdiel je v detailoch.
.
Ľavá strana "Byty a vlastníci" sa vždy mení rovnako pri zmene SVB. Vždy stačí jediný DataSet.
Stredná a pravá časť sa aktualizujú pri zmene vlastníka vľavo. Pri zmene:
  • SVB použiť "centrálne" SQL = jediný DataSet. Dva kusy
  • vlastníka použiť vlastné, zdedené SQL - nezávislá činnosť
"Listovanie" v strednej a pravej časti nevyvoláva priamu reakciu.
.
Na všetko mám vytvorené vlastné objekty. Pri otváraní formulára, či zmene SVB (totožné činnosti) sa vplyvom dedenia všetky akcie vykonajú 3x. Nechcem to rozbiť na tri samostatné formuláre.
Moja predstava:
Pri zmene SVB volať všetky tri SQL len jediný raz a použiť ich vo všetkých troch podformulároch. To by prakticky trojnásobne skrátilo čas odozvy!
Pri zmene vlastníka by sa zachoval súčasný stav. Každý podformulár, vďaka dedeniu, si všetko spravuje samostatne.
.
Niečo také som nikdy nerobil a netuším ako to mám metodicky zrealizovať. Ako na podformulár v pravo?
Všetky tri triedy majú zhodnú štruktúru pre GUI - vizualizácia údajov.
Kód: Delphi [Vybrat]
  1. type
  2.   TCreditOwner = class(TOwnerBasic) // Ľavá časť
  3.   public
  4.     constructor Create(const ANavigator: TjstIBCNavigator); override;
  5.     constructor CreateForm(const AForm: TBasalForm; const ANavigator: TjstIBCNavigator);
  6.   end;
  7. .
  8.   TCreditDeposit = class(TDepositBasic) // Stredná časť
  9.   public
  10.     constructor Create(const ANavigator: TjstIBCNavigator); override;
  11.     constructor CreateForm(const AForm: TBasalForm; const ANavigator: TjstIBCNavigator);
  12.     ...
  13.   end;
Opäť veľmi dlhý príspevok. Žiaľ. 
PS: to je čo za debilné správanie. Mal som veľkú prílohu. Tlačidlo "Zpět" a príspevok nikde!!!
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.