Akcia UPDATEARCHVAL


Funkcia
Zmena alebo zápis hodnoty do archívu.
Deklarácia
UPDATEARCHVAL valueIdent, archIdent [,[retIdent_Int], bRecalcStat_Bool]
Parametre
valueIdentinIdentifikátor hodnoty zapisovanej do archívu.
archIdentinOdkaz na jednu (archívnu) hodnotu - (nie je kontrolované, či sa pracuje s archívnym objektom - stačí odkaz na objekt).
retIdent_IntoutIdentifikátor typu Int - návratový kód - úspešnosť zápisu (nepovinný parameter).
bRecalcStat_BoolinIdentifikátor typu Bool - prepočet súvisiacich štatistických archívnych objektov (nepovinný parameter). Možné hodnoty:
  • @TRUE - povolenie prepočtu (prednastavená hodnota)
  • @FALSE - zakázanie prepočtu
Popis
Akcia zmení (alebo zapíše novú) hodnotu do archívu pre archívny objekt archIdent. Hodnota je daná parametrom valueIdent. Čas, pre ktorý bude hodnota do archívu zapísaná, je daný časom vzniku hodnoty valueIdent. Ak nie je uvedený identifikátor retIdent_Int, akcia nečaká na potvrdenie zápisu. Ak identifikátor je uvedený, nadobúda niektorú z nasledujúcich hodnôt:
  • _ERR_TRANS_ABORT
  • _ERR_TRANS_ERROR
  • _ERR_TRANS_IGNORED
  • _ERR_NO_ERROR
Poznámka
Ak identifikátor retIdent_Int nie je uvedený, 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 hodnoty do archívnej databázy.

Dôsledok:
Ak je použitá akciu zápisu do archívu bez čakania a následne sa bude táto hodnota čítať, prečítaná hodnota takmer určite nebude tá, ktorú bola v predchádzajúcej akcii zapisovaná.

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:
 
 REAL _archVal
 TIME _archTime
 INT _retCode
 
 ; čas archivácie
 _archTime := %StrToTime("12:0:0 1-12-2000")
 ; príprava hodnoty spolu s časom
 _archVal := 1 TIME _archTime
 ; zápis do archívu
 UPDATEARCHVAL _archVal, H.Int, _retCode
 ; test úspešnosti akcie
 IF _retCode # _ERR_NO_ERROR THEN
 ; chyba pri zápise
 ENDIF

Súvisiace stránky:

Write a comment...