Midregister.xml
Popisuje strukturu tabulek a jejich vztahu v rámci tzv. Middle. Middle je základní datový objekt se kterým lze pracovat pomocí OBIS API, lze jej zobrazit ve Formě atd.
Middle se skládá z tzv. DataSetItem, což jsou jednotlivé tabulky databáze.
Popis Middle se skládá ze dvou kompoment:
- <DataModel> - umožňuje tabulky pro potřeby middle modifikovat (změny Caption, Visible, ReadOnly, LookupKeyFields apod.)
- <MiddleStructure> - popisuje použité tabulky, jejich návaznost a vlastnosti
Ukázka:
<MidRegister> <Middle Name="VYROBKY"> <DataModel> <Table Name="sklad_vc"> <Caption>Pohyby</Caption> </Table> <Table Name="v_mp_mp"> <Field Name="IDProt"> <LookupKeyFields>MERPROT:IDProt</LookupKeyFields> </Field> </Table> </DataModel> <MiddleStructure> <TableItem Name="v_sklad_vyrobky"> <CounterOption>Vyrobky.Pocit</CounterOption> <TableItem Name="sklad_vc"> <Link>SN=SN;IDPrijemka</Link> <OnlyForView>1</OnlyForView> </TableItem> <TableItem Name="v_mp_mp"> <Link>SN=SN</Link> <OnlyForView>1</OnlyForView> </TableItem> </TableItem> </MiddleStructure> </Middle> </MidRegister>
Popis elementů MiddleStructure
MiddleStructure se může skládát z následujících elementů. Jejich zanoření popisu vzájemnou strukturu.
- <TableItem> - do middle zařazuje tabulku
- <QueryItem> - do middle zařazuje SQL dotaz
- <MemTableItem> - do middle zařazuje memory table
TableItem může obsahovat následující elementy:
- <Link> - vazba mezi nadřazenou a podřazenou tabulkou ve formě MasterFields=DetailFields. Pro složené klíče se fieldy oddělují středníkem. Navíc DetailFields může následovat další seznam fieldů podle kterých je pak provedeno implicitní řazení detail tabulky.
- <CounterOption> - automatické počítadlo pro detail tabulky je ve tvaru +10:IDField
- <MasterChange> - příznak změny ID v detail tabulkách při změně ID v master (0=On, 1=Off, 2=IgnoreNull, 4=IgnoreOnlyForView)
- <CascadeDelete> - příznak mazání v detail tabulkách při smazání v master (0=On, 1=Off, 2=IgnoreNull, 4=IgnoreOnlyForView)
- <OnlyForView> - příznak pro detail tabulku. Tabulka je pak ReadOnly. Typicky jedná o filtrovaný náhled do jiné master tabulky a nikoliv o podřazená data.
- <LockDateOptionName> - název optionu pomocí kterého se zamykají data
- <LockDateFieldName> - datumový field, který rozhoduje o zamknutí záznamu. Je možno použít i více fieldů oddělených středníkem.
Pro MasterChange a CascadeDelete platí:
- příznaky lze sčítat (např. IgnoreNull and IgnoreOnlyForView = 6)
- pokud je v detail tabulce nastaven příznak OnlyForView mazaní a změna ID se implicitně neprovádí
- IgnoreOnlyView ignoruje implicitní chování dle bodu 2
- IgnoreNull ignoruje nastavenou akci pokud je ID null nebo ''
Zamknutí změn k datu
Pomocí elementů <LockDateOptionName> a <LockDateFieldName> lze v tabulce zamezit editaci resp. přidání záznamu s datem menším než zadaná mez. Jde tedy o uzávěrku záznamů v tabulce k zadanému datu.
Příklad:
<Middle Name="PROSTREDKY"> <TableItem Name="prost_vykony"> <LockDateOptionName>FakturyDM.LockRecords</LockDateOptionName> <LockDateFieldName>Datum</LockDateFieldName> </TableItem> <TableItem Name="prost_naklady"> <LockDateOptionName>FakturyDM.LockRecords</LockDateOptionName> <LockDateFieldName>Datum</LockDateFieldName> </TableItem> </Middle>
Uvedený příklad zamezí změnu v tabulce výkonů resp. nákladů pro datum starší než je zadaný datum v uživatelském optionu FakturyDM.LockRecords.