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[, ...]]]]]
 )
%HI_RefreshDataTrans(
    INT in refId
    , INT in transHandle
   [, TEXT in whereStr
   [, TEXT in orderByStr
   [, in par1[, in par2[, ...]]]]]
 )
Parametre
refIdOdkaz na zobrazovač (referenčná premenná).
transHandleJednoznačné číslo (handle) spojenia s databázou získané akciou DB_TRANS_OPEN
whereStrSQL podmienka WHERE pre obmedzenie výberu zobrazených dát (len pre zobrazovač typu Browser).
Pri zadaní podmienky #empty# sa do Browsera nenačítajú žiadne dáta.
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.

Funkcia %HI_RefreshDataTrans na rozdiel od funkcie %HI_RefreshData iba naplánuje vykonanie obnovy dát v zobrazovači. Obnova sa vykoná, až keď sa transakcia transHandle commituje akciou DB_TRANS_COMMIT. Pokiaľ je databázová operácia stornovaná (akcia DB_TRANS_ROLLBACK), obnova dát da nevykoná. Pokiaľ je funkcia %HI_RefreshDataTrans volaná viackrát pre ten istý zobrazovač, po commite sa vykoná iba jedna obnova (s parametrami posledného volania funkcie %HI_RefreshDataTrans).
Poznámka: Transakcia transHandle môže byť otvorená aj voči inému objektu typu Databáza (inému ako je Databáza, ktorá je rodičom tabuľky, ktorej dáta sú v zobrazovači), ale je nutné, aby tento objekt typu Databáza mal rovnakého rodiča (proces DBManager) ako je Databáza, ktorá je rodičom tabuľky, ktorej dáta sú v zobrazovači.


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