Dotaz v syntaxi jazyka SQL musí splňovat následující pravidla:
Na prvním místě pohledu musí být identifikační sloupec editované tabulky (IDTABLE). V pohledu nesmí být identifikační sloupce jiných tabulek. V pohledu musí být každý sloupec pod unikátním názvem. Editační pohled nesmí obsahovat vnořený příkaz SELECT (subselect) a alias na vniřek tohoto subselectu.
Příklad:
SELECT HDOK.* UCTOBD.UCET_OBD, UCTOSN_MD.KOD_UCTU, UCTOSN_MD.NAZEV_UCTU, UCTOSN_DAL.KOD_UCTU, UCTOSN_DAL.NAZEV_UCTU FROM HDOK LEFT JOIN UCTOBD ON HDOK.IDUCTOBD=UCTOBD.IDUCTOBD LEFT JOIN UCTOSN UCTOSN_MD ON HDOK.IDUCTOSN_MD=UCTOSN_MD.IDUCTOSN LEFT JOIN UCTOSN UCTOSN_DAL ON HDOK.IDUCTOSN_DAL=UCTOSN_DAL.IDUCTOSN
Dotaz v syntaxi jazyka SQL musí splňovat, kromě pravidel pro jednu editovanou tabulku, také následující pravidla:
V pohledu na jiném než prvním místě musí být identifikační sloupec další editované tabulky s předponou BT. Vazební sloupec mezi hlavní editační tabulkou a další editační tabulkou musí mít předponu R. Tyto dva sloupce musí být uvedeny jako první sloupce z další editační tabulky v definici pohledu. Platí především pro ADD tabulky.
Příklad:
SELECT HDOK.*, UCTOBD.UCET_OBD, UCTOSN_MD.KOD_UCTU, UCTOSN_MD.NAZEV_UCTU, UCTOSN_DAL.KOD_UCTU, UCTOSN_DAL.NAZEV_UCTU, HDOKADD.IDHDOKADD AS BTHDOKADD, HDOKADD.IDHDOK AS RIDHDOK_BTHDOKADD, HDOKADD.DOD_HODADD, HDOKADD.DOD_MINADD FROM HDOK LEFT JOIN UCTOBD ON HDOK.IDUCTOBD=UCTOBD.IDUCTOBD LEFT JOIN UCTOSN UCTOSN_MD ON HDOK.IDUCTOSN_MD=UCTOSN_MD.IDUCTOSN LEFT JOIN UCTOSN UCTOSN_DAL ON HDOK.IDUCTOSN_DAL=UCTOSN_DAL.IDUCTOSN LEFT JOIN HDOKADD ON HDOK.IDHDOK=HDOKADD.IDHDOK
V uživatelských objektech bude uložena procedura s nastaveným parametrem okamžitého spuštění. Názvy přidaných sloupců musí být unikátní v rámci celé databáze. Je nutné uvádět na konci názvů sloupců příponu ADD, aby nedošlo k porušení podmínky unikátnosti ani po dalším rozšíření základních tabulek.
Příklad:
CREATE PROCEDURE SPADDCOL_HDOKADD AS SET NOCOUNT ON IF NOT EXISTS (SELECT * FROM SYSCOLUMNS WHERE (ID = OBJECT_ID('HDOKADD')) AND (NAME = 'DOD_HODADD')) ALTER TABLE HDOKADD ADD DOD_HODADD SMALLINT NULL DEFAULT 0 IF NOT EXISTS (SELECT * FROM SYSCOLUMNS WHERE (ID = OBJECT_ID('HDOKADD')) AND (NAME = 'DOD_MINADD')) ALTER TABLE HDOKADD ADD DOD_MINADD SMALLINT NULL DEFAULT 0 RETURN 0
V uživatelských objektech bude uložena procedura s názvem splňujícím pravidla pro obchodní pravidla pohledu (SPVIEWNAME_BRNAME). Vstupní parametry budou sloupce odpovídajícího pohledu, závěrečný SELECT vrací výstupní parametry. Chybové hlášení lze rozlišit na dvě úrovně na upozornění a na chybu. Při upozornění se akceptují vrácené hodnoty a lze pokračovat v další činnosti. Při chybě je nutné hodnoty řádku opravit a nelze pokračovat v další činnosti. Upozornění musí být vypsáno před závěrečným příkazem SELECT.
Příklad:
CREATE PROCEDURE SPQHDOK_US_CALREC @IDSUBJEKT INTEGER AS SET NOCOUNT ON IF 1=1 --PODMÍNKA, KTERÁ INDIKUJE CHYBU BEGIN RAISERROR('POZOR CHYBA!',16,1) RETURN 50000 END IF 1=1 --PODMÍNKA, KTERÁ INDIKUJE UPOZORNĚNÍ BEGIN RAISERROR('UPOZORNĚNÍ!',1,1) END SELECT -10 AS MNPROCPRIRAZKA RETURN 0
V uživatelských objektech bude uložena procedura která zapíše řádek do tabulky FCHANGE.
Příklad:
CREATE PROCEDURE SPFCHANGE_QHDOK_US_KOD_SUBJEKTU AS SET NOCOUNT ON IF NOT EXISTS(SELECT * FROM FCHANGE WHERE TABLENAME='QHDOK_US' AND FIELDNAME='KOD_SUBJEKTU') BEGIN INSERT INTO FCHANGE (TABLENAME, FIELDNAME, BASE_LOOK, ACTIONORDER, SPNAME) VALUES ('QHDOK_US', 'KOD_SUBJEKTU', 1, 1, 'KS_FCHANGE') END RETURN 0
V uživatelských objektech bude uložena procedura s názvem splňujícím pravidla pro obchodní pravidla. Vnitřní struktura odpovídá pravidlům pro obchodní pravidla řádku.
Příklad:
CREATE PROCEDURE SPQHDOK_US_KS_FCHANGE @KOD_SUBJEKTU INTEGER AS SET NOCOUNT ON IF 1=1 --PODMÍNKA, KTERÁ INDIKUJE CHYBU BEGIN RAISERROR('POZOR CHYBA!',16,1) RETURN 50000 END IF 1=1 --PODMÍNKA, KTERÁ INDIKUJE UPOZORNĚNÍ BEGIN RAISERROR('UPOZORNĚNÍ!',1,1) END SELECT -10 AS MNPROCPRIRAZKA RETURN 0
V datovém zdroji mohou být definovány položky (sloupce) s definovanými jmény, které neslouží primárně k editaci dat. Jedná se o položky:
SELECT CASE WHEN vlChyba = 2 then '#FF0000' /* červená */ WHEN vlChyba = 1 then '#FF6600' /* oranžová */ WHEN vlRucniZapis = 1 then '#0000FF' /* modrá */ END AS MF_ROWSTYLE
SELECT '#FF0000 Červená barva;#00FF00 Zelená barva;#0000FF Modrá barva' as MF_ROWSTYLE_COLOR
zdroje, tj. existuje-li k datovému sloupci sloupec se stejným jménem a příponou _ROWSTYLE, obarví se daná buňka dle zadané hodnoty. Barva se zadává stejným způsobem, jako v případě parametru MF_ROWSTYLE, tj. po R/G/B složkách v hexadecimálním formátu.
SELECT CASE WHEN DATEDIFF(dd, getdate() , dtSplatno) <= -2 then '#FF0033' WHEN DATEDIFF(dd, getdate() , dtSplatno) = -1 then '#FF3333' WHEN DATEDIFF(dd, getdate() , dtSplatno) = 0 then '#FF6633' WHEN DATEDIFF(dd, getdate() , dtSplatno) = 1 then '#FF9933' WHEN DATEDIFF(dd, getdate() , dtSplatno) = 2 then '#FFCC33' WHEN DATEDIFF(dd, getdate() , dtSplatno) = 3 then '#FFFF33' ELSE '' END AS DTSPLATNO_ROWSTYLE
Do ESO9 přichází možnost vložit do tabulky sloupec, který místo textových hodnot zobrazuje tlačítka pro vykonání akce na daném řádku. Tento tlačítkový sloupec umožňuje přehlednější práci s daty a urychluje práci. Tlačítko se chová jako běžná akce na tlačítko v editoru.
Syntaxe Tlačítko se vkládá do HTML předlohy na několika místech s tím, že žádný nelze vynechat. 1. Nejdříve je nutné vložit tlačítko do datového zdroje, tím říkáme, že tlačítko bude součástí dat a je to jediné místo, kde ovlivníme hodnotu a chování tlačítka.
Syntaxe je hodnota tlačítka;akce na tlačítko AS MF_BRWCMD1
Datový název sloupce je MF_BRWCMD1 (případně 2,3,4…pokud jich chceme více) Hodnota se skládá ze dvou částí. První je to co bude napsané na tlačítku a za středníkem samotná akce jako známe z akcí v editoru
př.
SELECT *, '' AS MF_KOD_UZIV, 'Kopie1;spUzivatel_btCopyALL;URL_ACTION=http://www.google.com' as MF_BRWCMD1 FROM QUZIVATEL ORDER BY KOD_UZIV
Tlačítek může být i více:
SELECT *, '' AS MF_KOD_UZIV, 'Kopie1;spUzivatel_btCopyALL;URL_ACTION=http://www.google.com' as MF_BRWCMD1, 'Kopie2;spUzivatel_btCopyALL;URL_ACTION=http://www.seznam.cz' as MF_BRWCMD2 FROM QUZIVATEL ORDER BY KOD_UZIV
2. V datovém zdroji tlačítko máme, ale server jej ještě nepovažuje za sloupec. On ale nemá žádnou interpretanci v inputech v html předloze. Proto musí být vyjmenován v hiddenfields. Pro příkald dvou tlačítek:
<input type="hidden" name="hiddenfields" value="MF_BRWCMD1;MF_BRWCMD2">
3. No jo, jenže teď je to schované a nezobrazí se to v browse. Abychom si zobrazení vynutili, musíme použít parametr BROWSEFIELDS a vyjmenovat přesné pořadí sloupců, v jakém chceme tabulku poskládat. S tím, že tlačítka si umístíme, kam potřebujeme.
<input type="hidden" name="BROWSEFIELDS" value="MF_KOD_UZIV;UZIV_FUNKCE;MF_BRWCMD1;MF_BRWCMD2;JMENO_UZIV">