Multidatabázové prostředí
Jedna aplikace ESO9 pracuje standardně s jednou aplikační databází. V některých případech může být užitečné mít možnost z jedné aplikace pořizovat data do jiné databáze/-í (např. pro firmy ve skupině či holdingu lze pořizovat došlé doklady centrálně v jedné aplikaci bez nutnosti přihlašovat se do více aplikací). V jedné stránce lze tak mít každou formu napojenou na jinou databázi. Napojení formy na jinou pracovní databázi se provádí parametrem:
<input type="hidden" name="ESO9DB" value="nazev_databaze">
Napojení formy na jinou pracovní databázi znamená zejména:
- čtení dat do formy
- zápis nových dat ve formě
- editace stávajících dat ve formě
- volání všech obchodních pravidel nad formou
- volání všech číselníků nad formou
- volání uživatelských akcí nad formou
- tisk sestav z formy
Při stisku libovolného odkazu z takto modifikovaného formuláře se i do následujícího formuláře či sestavy přenáší stejný parametr, není-li v cílovém formuláři tímto parametrem řečeno jinak.
Uživatel se v jiné pracovní databázi ověřuje podle svého kódu z aplikační databáze. Pokud je tedy v aplikaci přihlášen (kterýmkoli ze tří způsobů podporovaných v ESO9) např. pod uživatelem s kódem klient, bude se v jiné pracovní databázi hledat uživatel se stejným kódem. Pokud nebude nalezen, dojde při prvním otevření takové formy k chybě Uživatel nebyl v databázi nazev_databaze nalezen. Pokud bude nalezen, použije se jeho ID a kompletní sada UP parametrů pro práci ve formě.
Další možností je parametr ESO9DB dále parametrizovat v syntaxi:
<input type="hidden" name="ESO9DB" value="%MF_DBNAME%">
Hodnota takového parametru se pak hledá v datovém zdroji zdrojové formy. Lze si tak dynamicky přepínat pracovní databázi u vybraných forem. Zdrojová forma pak může vypadat např. takto:
<form method="POST" name="DBS"> <input type="hidden" name="NavBar" value="None"> <input type="hidden" name="VIEWNAME" value="QESO9DB"> <input type="hidden" name="VIEW" value="SELECT 1 as ID, 'eso9start' as MF_DBNAME"> <table border="0" cellpadding="0" cellspacing="1" width="100%"> <caption>Výběr databáze</caption> <tr> <td><label for="fpDBName">Aplikační databáze</label></td> <td> <select name="MF_DBNAME" size="1" id="fpDBName" Title="Rychlý výběr pracovní databáze"> <option value="eso9start">ESO9Start</option> <option value="eso9start2">ESO9Start 2</option> <option value="eso9start3">ESO9Start 3</option> </select> </td> </tr> </table> </form>
Pokud není hodnota takového parametru nalezena v datovém zdroji zdrojové formy, hledá se v jejích parametrech.
Pokud stránka obsahuje další formy, není třeba v nich parametr ESO9DB explicitně uvádět, automaticky se přebírá ze zdrojové formy. Je tím zajištěna referenční integrita, tj. všechny datové parametry z více forem se musí vztahovat k datům ve stejné databázi.
Pokud je změna hodnoty položky MF_DBNAME navázána na pohledový FChange, který má na rozhraní položku @REQUERYSTATE, provede se po jeho zavolání obnova dat ve všech závislých formách a tím dojde k načtení datového zdroje závislé formy z jiné pracovní databáze.