Funkcia %HI_RefreshData


Funkcia
Funkcia %HI_RefreshData (riadiaca funkcia) spôsobí:
  • pre zobrazovač typu Browser - znovu načítanie (aktualizáciu) zobrazených dát. Umožňuje taktiež zmeniť triediacu podmienku alebo spôsob usporiadania (triedenie).
  • pre zobrazovač typu Report (ktorý obsahuje report typu Crystal report) - nastavenie hodnôt parametrov, pre ktoré bola zavolaná funkcia %HI_ReportPar.
Deklarácia
%HI_RefreshData(
   INT in refId
   [, TEXT in whereStr
   [, TEXT in orderByStr
   [, in par1[, in par2[, ...]]]]]
 )

BOOL

%HI_RefreshDataSync(
   INT in refId
   [, TEXT in whereStr
   [, TEXT in orderByStr
   [, in par1[, in par2[, ...]]]]]
 )


Parametre
refIdOdkaz na zobrazovač (referenčná premenná).
whereStrSQL podmienka WHERE pre obmedzenie výberu zobrazených dát (len pre zobrazovač typu Browser).
orderByStrSQL príkaz ORDER pre riadenie poradia výberu (triedenie) zobrazených dát (len pre zobrazovač typu Browser).
par1, par2, ...Zoznam konštánt alebo lokálnych premenných, ktoré sa použijú na mieste parametrov parametrizovanej SQL podmienky.
Poznámka

Podmienku a triedenie je možné zadať aj pri konfigurácii zobrazovača v prostredí D2000 GrEditor. Pri volaní funkcie %HI_RefreshData sú tieto zmenené (ak sú uvedené) a zobrazenie sa aktualizuje.
Pre zobrazovač typu Report sú tieto parametre nepoužiteľné.

Podmienka zmenená volaním funkcie %HI_RefreshData môže byť parametrizovaná. Použitím parametrizácie je možné uľahčiť prácu SQL databáze, pretože príprava (kompilácia) parametrizovaného SQL výrazu sa vykoná iba pri zmene podmienky alebo triedenia (t.j. textovej podoby SQL výrazu). Vhodným nastavením parametrov databázy (napr. Oracle: session_cached_cursors) je možné zabezpečiť recyklovanie kurzorov (skompilovaných príkazov) medzi volaniami %HI_RefreshData.

Pravidlá pre parametre:

  • parameter refId musí byť platný vždy,
  • pravidlá pre parametre whereStr a orderByStr:

     Zadaný platnýNezadaný alebo zadaný, ale neplatný
    whereStrzmena podmienkyOstáva v platnosti naposledy zadaná podmienka (ak nebola nikdy zadaná, tak prázdny reťazec).
    orderByStrzmena triedeniaOstáva v platnosti naposledy zadané triedenie (ak nebolo nikdy zadané, tak prázdny reťazec).
  • ak sú parametre par1parN zadané, ich počet musí zodpovedať podmienke (počet #PAR#), pričom pri zmene podmienky nesmú byť vynechané,
  • ak má niektorý parameter par1parN neplatnú hodnotu, reprezentuje to hodnotu NULL.

Funkcia %HI_RefreshData vykoná svoju činnosť tak, že nové podmienky zobrazenia doručí príslušnému zobrazovaču a končí bez ohľadu na výsledok alebo úspešnosť zobrazenia.

Funkcia %HI_RefreshDataSync na rozdiel od funkcie %HI_RefreshData počká na vykonanie výberu podľa nových parametrov a úspešnosť operácie oznámi prostredníctvom svojej hodnoty (@TRUE = úspešné vykonanie, @FALSE = chyba). Ak je browser zobrazujúci DB tabuľku nakonfigurovaný tak, že je inicializovaný automaticky (parameter "Otváracia podmienka" je zaškrtnutý), funkciu nie je možné použiť v inicializačnej (BEGIN..END) časti schémy - v takom prípade vráti @FALSE.

Pokiaľ bola zmenená veľkosť schémy so zobrazovačom typu Browser, ktorý ma nakonfigurovaný dynamický počet riadkov podľa výšky browsera (parameter Riadkov), dôjde až pri volaní funkcie %HI_RefreshData k znovu načítaniu stránky so zmeneným počtom riadkov.

Príklad
 %HI_RefreshData(_browser)                  ; aktualizácia (bez zmeny podmienky, triedenia či parametrov)
 %HI_RefreshData(_browser, "ID=21")         ; zmena podmienky a aktualizácia
 %HI_RefreshData(_browser, "ID=21", "ID")   ; zmena podmienky, triedenia a aktualizácia
 
 
 
 INT _cnt ; lokálna premenná pre parametrizovanú podmienku
 TEXT _name ; lokálna premenná pre parametrizovanú podmienku
 TEXT _INVALID = 1/0 ; pomocná neplatná konštanta typu text  
 
 _cnt := 1
 _name := "%SELF%"
 
 ; 1. zmena podmienky (parametrizovanej), triedenia, parametrov a aktualizácia
 %HI_RefreshData(_browser, "CNT=#PAR# AND NAME LIKE #PAR#", "NAME", _cnt, _name)
 
 _cnt := 2
 _name := "%ODBC%"
 
 ; 2. len zmena parametrov (recyklácia SQL výrazu) a aktualizácia
 %HI_RefreshData(_browser, "CNT=#PAR# AND NAME LIKE #PAR#", "NAME", _cnt, _name)
 %HI_RefreshData(_browser, _INVALID, _INVALID, _cnt, _name) ; rovnocenná alternatíva pre zápis o riadok vyššie (ak sa od bodu 1. podmienka nezmenila)
 
 ; 3. bez zmeny (recyklácia SQL výrazu) a aktualizácia
 %HI_RefreshData(_browser, "CNT=#PAR# AND NAME LIKE #PAR#", "NAME", _cnt, _name)
 %HI_RefreshData(_browser) ; rovnocenná alternatíva pre zápis o riadok vyššie (ak sa od bodu 2. podmienka, triedenie a parametre nezmenili) 
Napíšte komentár