<record tablename="JMENOTABULKY" logdescription="Popis pro zapis do logu" name="jmeno promenne">
<recordfield name="JMENOPOLE1" format="FORMAT_POLE1" size="DELKA_TEXTOVEHO_POLE" readonly="0" updatelog="0" checkmultiple="1" value="HODNOTA">JINAK_ZADANA_HODNOTA</recordfield>
...
<recordwhere>SQL podminka pro SELECT a UPDATE</recordwhere>
<insertrecord />
<updaterecord />
<updateorinsertrecord />
<deleterecord />
<loadrecord name="JMENO_PROMENNE" />
</record>
Slouží k editaci, vkládání a mazání záznamů v databázi. Kromě samotného zápisu do databáze provede podrobný zápis do logu.
Musí obsahovat definici alespoň jednoho databázového pole (tag <recordfield>) a dále jednu akci, která se má se záznamem provést (jeden z tagů <updaterecord>, <insertrecord>, <updateorinsertrecord>, <loadrecord>, <deleterecord>). V případě editace nebo mazání záznamů by měl obsahovat také podmínku pro vyhledání konkrétního záznamu zadanou v tagu <recordwhere>.
Atributy:
tablename - (nepovinný) Jméno databázové tabulky.logdescription - (nepovinný) Popis zdroje události pro zápis do logu. Pokud není zadán, použije se text "XML <id sablony>".name - (nepovinný) Jméno proměnné, do které se uloží vytvořený záznam. K jednotlivým prvkům záznamu pak lze přistupovat jako k položkám pole.
Pokud není zadáno jméno tabulky (atribut tablename), musí být zadán atribut name. Použije se pak hodnota zadané proměnné.
To lze využít v událostech (např. ..._BEFORE_POST, ..._AFTER_POST), ve kterých je obvykle aktuálně zpracovávaný záznam v proměnné record.
Definuje pole v databázové tabulce.
Atributy:
name - (povinný) Jméno pole v databázové tabulce.format - (nepovinný) Formát pole v databázi.size - (nepovinný) Maximální délka textového pole. Pro jiné datové typy nemá žádný význam. V případě, že má hodnota větší délku, bude při editaci a vkládání oříznuta.readonly - (nepovinný) Příznak určuje, jestli je pole pouze pro čtení. Pokud je nastaven na 1, tak se u pole neprovede update. Při insert se tento příznak ignoruje - pole bude naplněno.updatelog - (nepovinný) Příznak, že je pole pouze "logovací" (například pole Update_UserName).value - (nepovinný) Nová hodnota pro zápis do databáze. V případě, že není zadána, načte se hodnota z těla tagu.udpateexistingfield - (nepovinný) Pokud už pole se stejným názvem existuje, tak jej nepřidává, ale aktualizuje jej podle zadaných hodnot atributů.int, integerfloat, doubledate - datum. Pokud zadaná hodnota obsahuje i čas, tak se čas ořeže.datetime, timestamp - Datum a čas. Zadaná hodnota musí být timestamp.time - čas bez datumudatestr - datum zadaný textověsqltimestamp, sqldate - čas nebo datum načtený z databáze (například pomocí forsql)memo - text bez omezení délkyblob - blob pole. Zapsaná hodnota se normálně loguje, takže je to vhodné použít pouze pro textová data.binary - binární data. Zapsaná hodnota se neloguje.serial - sériové číslo záznamu - při vkládání se automaticky nastaví na novou hodnotu zjištěnou pomocí SELECT MAX ...sequence - ID záznamu automaticky číslované pomocí SQL sekvence
Nastavení příznaku updatelog="1" způsobí, že se u pole nekontroluje změna hodnoty. Pokud nebude změněno žádné jiné pole,
které nemá updatelog="0", tak se update vůbec neprovede. Lze použít například pro pole "Update_TimeStamp", "Update_UserName" a podobně.
Definuje SQL podmínku pro vyhledání konkrétního záznamu. Podmínka se zadává v těle tagu. Zadává se jen výraz bez klíčového slova WHERE. Podmínka musí vybrat jeden maximálně jeden záznam.
Provede zápis nového záznamu do databáze.
Provede editaci (UPDATE) záznamu v databázi.
Editace se provede pouze v případě, že došlo ke změně hodnoty alespoň jednoho datového pole - (pole, která mají nastaveno updatelog="1" se při kontrole změny ignorují).
Nejdříve se pokusí načíst záznam z databáze. V případě, že existuje, provede editaci (UPDATE). V případě, že neexistuje, provede vložení nového záznamu.
Toto je pouze alias pro <updaterecord>.
Načte do proměnných JMENO_PROMENNE_JMENOPOLE hodnoty jednotlivých polí záznamu.
Jména proměnných začínají jménem zadaným v atributu name, následuje podtržítko a jméno příslušného pole.
<record tablename="PuvodniDochazka">
<recordfield name="DatumCasOperace" format="timestamp" value="{$NOW}" />
<recordfield name="RC" value="{$pp_rc}" />
<recordfield name="OsobniCislo" value="{$pp_osobnicislo}" />
<recordfield name="DatumNastupu" format="sqldate" value="{$pp_datumnastupu}" />
<recordfield name="KodOperace" value="01" />
<recordfield name="Karta">XML {$XML_IDSABLONY}</recordfield>
<recordfield name="VlozenoManualne" format="int" value="1" />
<recordfield name="VlozenoOnLine" format="int" value="1" />
<insertrecord/>
</record>
Vloží záznam se zadanými hodnotami do tabulky PuvodniDochazka.
<record tablename="Osoba">
<recordfield name="RC" readonly="1" />
<recordfield name="Jmeno" readonly="1" />
<recordfield name="Titul" readonly="1" />
<recordfield name="Uzivatelska9" size="50" updatelog="1">Posledni editace v XML: {$NOWSTR} ({$USER_LOGIN})</recordfield>
<recordfield name="Uzivatelska12" size="100">{$uzivatelska12}</recordfield>
<recordwhere>RC = {$USER_RC}</recordwhere>
<updaterecord />
</record>
Aktualizuje záznam v tabulce osoba - nastaví hodnotu pole Uzivatelska12. V případě změny nastaví také pole Uzivatelska9.
Pokud nedojde ke změně pole Uzivatelska12, tak UPDATE neprovede, protože ostatní pole jsou readonly (RC, Jmeno, Titul)
nebo mají nastaven příznak updatelog (Uzivatelska9).
<record tablename="JMENOTABULKY">
<recordfield name="JMENOPOLE1" format="FORMAT_POLE1" size="DELKA_TEXTOVEHO_POLE">HODNOTA1</recordfield>
<recordfield name="JMENOPOLE2" format="FORMAT_POLE2">HODNOTA2</recordfield>
...
<recordwhere>
... podmínka, která se vloží do SQL výrazu SELECT (při načítání původní hodnoty)
</recordwhere>
<loadrecord name="JMENO_PROMENNE"/>
</record>
Načte do proměnných JMENO_PROMENNE_JMENOPOLE... hodnoty jednotlivých polí záznamu.
<record name="record">
<recordfield name="NEJAKE_DALSI_POLE" updateexistingfield="1">HODNOTA</recordfield>
</record>
Doplní do proměnné record další pole, které v ní nemusí existovat. Pokud by existovalo, tak jej aktualizuje.