Universální tabulka hodnot(UNI)

Do tabulky lze ukládat libovolné hodnoty příslušné danému období a případně i danému zaměstnanci. Vhodným filtrováním lze pak hodnoty pro potřebné období získat zpět. V makrojazyku se ke větě, která je nahrána v paměti přistupuje pomocí klíčového slova UNI.

Stavba věty:

ČísNázev položkyTyp položkySloupecMakroIdx
1 Ident Longint IDENT dbIdent *
2 Attr Word XATTR dbAttr  
3 Typ řádky Longint XTYPE uniTyp *
4 Typ hodnoty Longint XVTYPE uniVTyp
5 Období Longint XPERIOD uniObdobi *
6 Ident zaměstnance Longint XMAN_ID uniPrac
7 Hodnota 1 Longint XVAL_L1 uniValL1
8 Hodnota 2 Longint XVAL_L2 uniValL2
9 Hodnota 3 Real XVAL_R1 uniValR1
10 Hodnota 4 Real XVAL_R2 uniValR2

Použité indexy

  1. dbIdent
    • dbIdent
  2. dnpTyp
    • dnpObdobi
    • dnpPrac
    • dnpTyp
    • Ident
  3. dnpObdobi
    • dnpObdobi
    • dnpTyp
    • Ident

Typ řádky

Používá se pro specifikaci typu řádky, aby bylo možno oddělit význam.

Typ hodnoty

Další obecně použitelná specifikace významu řádky.

Období

Období dávky v binárním tvaru (LongInt): RRRRMMMM .

Ident zaměstnance

V případě, že se informace v řádku nevztahuje k zaměstnanci (např.: suma za celý podnik), vkládejte hodnotu -1.

Příklad:

  
  dim ActPeriod : Longint;
  ActPeriod := _Shl(_SysYear,16) lor _ActMonth;
  StepIdx(dbtUNI, uniTyp);
  {#IFDEF WINDOWS}
  _SetFilter(dbtUNI, _MakeFilter(dbtUNI, uniObdobi, filterEqual,       ActPeriod         + " AND " +
                     _MakeFilter(dbtUNI, uniPrac,   filterEqual,       O[dbIdent])       + " AND " +
                     _MakeFilter(dbtUNI, uniTyp,    filterEqual,       cUNI_DB_TYPE_DNP) + " AND " +
                     _MakeFilter(dbtUNI, dbIdent,   filterBiggerEqual, 0));
  if _StartDB(dbtUNI) then
  {#ELSEDEF}
  if _FindRec(dbtUNI, uniTyp, _LiToKey(ActPeriod) +
                              _LiToKey(O[dbIdent]) +
                              _LiToKey(cUNI_DB_TYPE_DNP)) then
  {#ENDDEF}
    repeat
      . . . 
    {#IFDEF WINDOWS} 
    until (_StepRec(dbtUNI, 1)= false); 
    {#ELSEDEF} 
    until (_StepRec(dbtUNI, 1) = false) or 
          (UNI[uniObdobi] <> ActPeriod) or  
          (UNI[uniPrac] <> O[dbIdent])  or  
          (UNI[uniTyp] <> cUNI_DB_TYPE_DNP);
  {#ENDDEF}
  endif