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
archIdent in Odkaz na jednu (archívnu) hodnotu - (nie je kontrolované, či sa pracuje s archívnym objektom - stačí odkaz na objekt).
locVarColValueIdent_Rec in Identifikátor stĺpca lokálnej premennej typu RECORD.
retIdent_Int out Identifikátor typu Int - návratový kód - úspešnosť zápisu (nepovinný parameter).
bRecalcStat_Bool in Identifikátor typu Bool - povolenie / zakázanie prepočtu súvisiacich štatistických archívnych objektov (nepovinný parameter).

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:

Napíšte komentár