Akcia INSERTARCHARR


Funkcia
Zmena alebo zápis poľa hodnôt do archívu.
Deklarácia
INSERTARCHARR archIdent, locVarColValueIdent_Rec [,[retIdent_Int], bRecalcStat_Bool]
Parametre
archIdentinOdkaz na jednu (archívnu) hodnotu - (nie je kontrolované, či sa pracuje s archívnym objektom - stačí odkaz na objekt).
locVarColValueIdent_RecinIdentifikátor stĺpca lokálnej premennej typu RECORD.
retIdent_IntoutIdentifikátor typu Int - návratový kód - úspešnosť zápisu (nepovinný parameter).
bRecalcStat_BoolinIdentifikátor typu Bool - povolenie / zakázanie prepočtu súvisiacich štatistických archívnych objektov (nepovinný parameter, default prepočty sú povolené - @TRUE).
Popis
Akcia zapíše pole hodnôt do archívu pre archívny objekt daný parametrom archIdent. Pole hodnôt predstavuje stĺpec na ktorý sa odkazuje parameter locVarColValueIdent_Rec. Čas, pre ktorý sú jednotlivé hodnoty do archívu zapísané, je daný časom vzniku hodnôt. Ak nie je uvedený identifikátor retIdent_Int, akcia nečaká na potvrdenie zápisu. Ak je identifikátor uvedený, nadobúda niektorú z nasledujúcich hodnôt:
  • _ERR_TRANS_ABORT
  • _ERR_TRANS_ERROR
  • _ERR_TRANS_IGNORED
  • _ERR_NO_ERROR
Poznámka
Ak nie je uvedený identifikátor retIdent_Int, skript nemá žiadnu spätnú väzbu pre zistenie úspešnosti zápisu. Čas trvania akcie je krátky, lebo ide len o požiadavku, ktorá je odoslaná do systému.

Ak je identifikátor retIdent_Int uvedený, skript čaká na fyzický zápis hodnôt do archívnej databázy aj na ukončenie prepočtu súvisiacich štatistických archívnych objektov.

Dôsledok:
Ak použijem akciu zápisu do archívu bez čakania a následne budem túto hodnotu čítať, prečítaná hodnota takmer určite nebude tá, ktorú som v predchádzajúcej akcii zapisoval.

Prepočet súvisiacich štatistických objektov je možné zakázať, ak uvedieme nepovinný parameter bRecalcStat_Bool s hodnotou @FALSE.

Príklad
Zápis hodnoty do archívu:
 
 RECORD (SD.ArchDemo) _data
 INT  _value
 INT  _idx
 TIME _bt
 INT  _retCode
 
 _bt := %StrToTime("8:01:00 16-10-2003")
 REDIM _data[60]
 
 ; naplním nejaké dáta
 _idx := 1
 _value := 100
 DO_LOOP
   EXIT_LOOP _idx > _data\DIM
 
   _data[_idx]^value := _value TIME _bt
   _idx := _idx + 1
   _value := _value + 1
   _bt := %AddTime(_bt, 1)
 END_LOOP
 
 
; zápis
 INSERTARCHARR H.ArchObj, _data^value, _retCode
 
 ; test úspešnosti akcie
 IF _retCode # _ERR_NO_ERROR THEN
 ; chyba pri zápise
 ENDIF
 

Súvisiace stránky:

Write a comment...