Predchádzajúci článok bol venovaný HTW šablónam. Témou nasledujúcich dvoch článkov budú WBC konektory. WBC konektor obsahuje popis operácií, ktoré má WBIK vykonať s databázou. Najčastejšie sú to príkazy jazyka SQL. Vybrané údaje sa potom zobrazia v HTW šablóne.

Syntax

Základná syntax WBC konektora je nasledujúca:

<%wbc%>
SQLStatement: názov
+ SELECT …
+ …
[EndSQL]
<%/wbc%>

Blokov SQLStatement v konektore môže byť aj viac, v tom prípade je nutné použiť na ich oddelenie EndSQL. Riadky s príkazmi jazyka SQL sa začínajú znakom +. Je možné použiť všetky príkazy, nie všetky však majú praktický význam. Najčastejšie to bude SELECT, INSERT, UPDATE a podobne. Okrem blokov SQLStatement môžu byť v konektore aj ďalšie príkazy.

Premenné

Konektor môže používať vstupné premenné formulárov. Ďalšie premenné je možné deklarovať nasledujúcim spôsobom:

DeclareVariable: meno_premennej: typ_premennej
DeclareVariable: meno_premennej: typ_premennej :=vyraz

Typy premenných sa definujú rovnako ako v internom programovacom jazyku (teda nie SQL). Ak potrebujeme premennú naplniť konkrétnou hodnotou, môžeme to urobiť ihneď alebo použiť:

GetVariable: meno_premennej :=vyraz_alebo_premenna_projektu

Ďalšou možnosťou použitia GetVariable je vytvorenie novej premennej na základe hodnoty premennej projektu. Typ novej premennej bude rovnaký ako premennej projektu (ktorá môže byť získaná napríklad vo volanom programe). Takúto premennú budeme môcť využiť v šablóne.

Na vstupné premenné formulára sa odkazujeme pomocou názvu uzatvoreného znakmi % (pričom pre textové premenné nesmieme zabudnúť úvodzovky, v časti SQL príkazov odporúčam jednoduché):

%cislo%
‚%text%‘
„%text%“

Operátory

Pri tvorbe zložitejších výrazov sa uplatňujú operátory. Operátory môžu byť:

  • aritmetické: (+), (-), (*), (/), (DIV), (MOD)
  • logické: (AND, OR, NOT)
  • porovnávacie: (<), (>), (=), (<>), (.=.), (.=), (~)

Poznáme aj niekoľko špeciálnych operátorov, napríklad exists. Operátor vráti TRUE, ak premenná alebo stĺpec databázovej tabuľky existuje, v opačnom prípade vráti FALSE. Syntax:

Exists meno_premennej

Ďalším operátorom je už spomínaná mriežka #, ktorá v spojení s názvom premennej alebo názvom bloku SQLStatementu vracia počet hodnôt.

Programy v konektore

V konektore sa môžeme odvolávať na procedúry programu v internom programovacom jazyku. Samozrejme s niekoľkými obmedzeniami – volaná procedúra či funkcia nesmie obsahovať príkazy, ktoré spôsobujú interaktívne akcie (napríklad Open_window, Input_box). Prenos premenných z programov v internom jazyku do konektora je možný len v prípade, že ide o globálne premenné. Syntax si ukážeme na jednoduchom príklade:

<%wbc%>
BeginProgram: moj_program
  zisti_den(%CURRENT_DATE%);
EndProgram;
GetVariable poradie := rozdiel
SQLStatement: sel_1
+ SELECT *
+ FROM Knihy
+ ORDER BY Knihy.napisal, Knihy.nazov
<%/wbc%>

Program v internom jazyku bude mať názov moj_program a bude vyzerať takto:

//deklaracie premennych
var rozdiel : integer;
//procedura
procedure zisti_den(vstup:date);
  var pomoc: string[10];
  begin
   pomoc := „1.1.“ + int2str(year(vstup));
   rozdiel := vstup – str2date(pomoc);
  end;
//hlavny program (prazdny)
begin
end.

V takomto prípade sa bude môcť premenná poradie (ktorá získala typ INTEGER a hodnotu poradového čísla aktuálneho dňa od začiatku roku) použiť v šablóne alebo aj v inom bloku SQLStatement. Interný programovací jazyk je klonom Pascalu, preto vám program určite nemusím podrobnejšie vysvetľovať. Telo hlavného programu v príklade neobsahuje žiaden kód.

Systémové premenné

Už v predchádzajúcom príklade ste si všimli, že som použil systémovú premennú. V stručnosti vymenujem aspoň tie najpoužívanejšie:

  • SERVER_NAME – doménové meno webservera
  • CURRENT_DATE – aktuálny dátum
  • CURRENT_TIME – aktuálny čas
  • CURRENT_TIMESTAMP – aktuálny dátum a čas
  • REMOTE_ADDR – IP adresa počítača – klienta
  • REMOTE_HOST – doménové meno počítača – klienta
  • QUERY_STRING – zoznam všetkých vstupných formulárových premenných
  • HTTP_COOKIE_xxx – hodnota COOKIE s menom xxx
  • wb_url – reťazec, ktorým sa dá nahradiť začiatok adresy v odkazoch, napríklad <A HREF="<%wb_url%>/stranka.htw">
  • wb_www_object – meno aktuálneho www objektu (bez prípon .wbc, .htw, .wbs)

Žádný příspěvek v diskuzi

Odpovědět