Uživatelské nástroje

Nástroje pro tento web


techdoc:editview

Pravidla pro tvorbu editačních pohledů

Pravidlo editačního pohledu s jednou editovanou tabulkou

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

Pravidlo editačního pohledu s více editovanými tabulkami

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

Postup při uživatelském doplnění sloupců ADD tabulky

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

Postup při definici uživatelského pravidla pohledu pro operaci s řádkem

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

Postup při definici uživatelského FCHANGE pohledu

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

Speciální datové položky

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:

  • MF_ROWSTYLE - definuje barvu pozadí každého řáku v browse/tabulce. Fyzicky se obarví stavový sloupec (1.zleva). Barva se zadává ve tvaru '#RRGGBB', kde položky RR/GG/BB jsou R/G/B složky barvy v hexadecimálním formátu.
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
  • MF_ROWSTYLE_COLOR - umožňuje pro barvy z předchozího bodu doplnit legendu. Legenda obsahuje použitou barvu a její popis/význam. Barva se zadává ve tvaru '#RRGGBB', následuje oddělující mezera a textový popis významu použité barvy.
SELECT
  '#FF0000 Červená barva;#00FF00 Zelená barva;#0000FF Modrá barva' as MF_ROWSTYLE_COLOR     
  • SLOUPEC_ROWSTYLE - definuje barvu pozadí jedné buňky v browse/tabulce. Sloupec je jméno existujícího sloupce z datového

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

Vložení sloupce tlačítek do tabulky

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"> 
techdoc/editview.txt · Poslední úprava: 08.02.2025 13:00 autor: 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki
DokuWiki Appliance - Powered by TurnKey Linux