RON dokumentace

XML formuláře CSS Javascript

<record>

  <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" 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:

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.

<recordfield>

Definuje pole v databázové tabulce.

Atributy:

Formát databázového pole může být:

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ě.

<recordwhere>

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.

<insertrecord>

Provede zápis nového záznamu do databáze.

<updaterecord>

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í).

<updateorinsertrecord>

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.

<editrecord>

Toto je pouze alias pro <updaterecord>.

<loadrecord name="JMENO_PROMENNE">

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.

Příklady použití


  <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.