SQL příkaz - SELECT
Příkaz Select definuje dotaz v jazyce T-SQL k získání dat pro zobrazení. Dotaz příkazu musí obsahovat klauzule WHERE kontrolující přístupové klíče uživatele. V případě, že klauzule nebude obsahovat kontrolu přístupových klíčů, uživatel bude mít přístup ke všem záznamům datové tabulky.
V příkazech se používají tyto stránkou definované parametry:
@userID ... identifikace přihlášeného uživatele
@groupID ... identifikace zvolené uživatelské skupiny
@roleName ... název zvolené uživatelské role
@FiltracniPodminky ... filtrační podmínky zadané uživatelem
Příklady příkazů:
Seznam s filtrem:
SELECT <seznam sloupců>
FROM <název schématu>.<název tabulky>
WHERE <název sloupce s klíčovou hodnotou> IN (SELECT hodnota FROM dbo.tfVratHodnotyKliceInt('<kód klíče = dbo.KliceKody.kod>', @userID, @groupID, @roleName))
AND @FiltracniPodminka
ORDER BY <seznam sloupců>
Detail:
SELECT <seznam sloupců>
FROM <název schématu>.<název tabulky>
WHERE <název sloupce primárního klíče> = @id
AND <název sloupce s klíčovou hodnotou> IN (SELECT hodnota FROM dbo.tfVratHodnotyKliceInt('<kód klíče = dbo.KliceKody.kod>', @userID, @groupID, @roleName))
ORDER BY <seznam sloupců>
Seznam/Detail s odkazem na dokument:
V případě, že se na stránce zpřístupňují odkazy na dokument, má příkaz SELECT obsahovat sloupec s hash kódem ID dokumentu pro ověření přístupu:
SELECT <seznam sloupců>
,<dokumentyID>
,<hash1> = @DokumentyIDHash[<dokumentyID>]
FROM <název schématu>.<název tabulky>
WHERE ...
, kde:
<dokumentyID> je název sloupce v datové větě, který nese ID dokumentu.
<hash1> je název sloupce, do kterého se vygeneruje hash kód ID dokumentu. Tento název uveďte jako hodnotu vlastnosti DokumentyIDHashField u sloupce typu FileDownload, který slouží k vykreslení odkazu na dokument.
<dokumentyID> je u sloupce typu FileDownload hodnotou vlastnosti Datový sloupec.
Barevný management:
Barevný management umožňuje zvýrazňovat řádky v mřížce pomocí vybraného CSS stylu.
Pro použití barevného managementu je nutné v SELECT příkazu přidat sloupec s fixním názvem rowStyle a tomuto sloupci přiřadit hodnotu dostupného CSS stylu.
příklad použití:
SELECT idoklad, cfak, doklad, dvyst, duzp, dspl, mena, pohledkc, pohledmena, odeslano
,rowStyle = case doklad when 'FA' then 'RowCervenePismoTucne' ELSE '' END
FROM FAK.vfhlav
SQL příkaz - INSERT
Příkaz Insert definuje příkaz v jazyce T-SQL k vložení dat. Vkládaná data jsou předávána jako parametry se stejným názvem jako sloupec tabulky.
INSERT INTO <název schématu>.<název tabulky> (<sloupec1>) VALUES (@<sloupec1>)
SQL příkaz - UPDATE
Příkaz Update definuje příkaz v jazyce T-SQL k aktualizaci dat. Vkládaná data jsou předávána jako parametry se stejným názvem jako sloupec tabulky.
UPDATE <název schématu>.<název tabulky> SET <sloupec1> = @<sloupec1> WHERE <klíčový sloupec> = @id;
Obsahuje-li záznam i přílohu (sloupec typu FileUploadPozadavkyDetail) je třeba provádět UPDATE podmíněně, aby nedošlo k výmazu přílohy.
IF (@<sloupec s názvem souboru><>'' AND NOT @<sloupec s obsahem souboru> IS NULL)
UPDATE <název schématu>.<název tabulky>
SET <sloupec s názvem souboru> = @<sloupec s názvem souboru>, <sloupec s obsahem souboru> = @<sloupec s obsahem souboru> WHERE <klíčový sloupec> = @id;
Sloupce mřížky - VALIDACE
Pole Validace se používá pouze na pořizovacích stránkách. Určuje způsob validace vkládaných hodnot. Validuje se pomocí SQL dotazu, který vrací hodnotu errorMessage. ErrorMessage obsahuje chybovou hlášku, která se zobrazí při chybné validaci pole, nebo prázdný řetězec, pokud je validační podmínka splněna.
V příkazu lze použí parametr @parametr, který obsahuje zadanou hodnotu pole.
K dispozici jsou i parametry @roleName, @userID, @groupID předávané podle přihlášeného uživatele, nebo přebírané od zastupovaného uživatele a parametr @id podle ID požadavku.
@id = 0 při pořízení nového požadavku a při kopii požadavku.
@id = parametru idEditace při editaci požadavku
Příklad použití:
SELECT errorMessage =
CASE (SELECT COUNT(*) FROM <název schématu>.<název tabulky> WHERE <název sloupce> = @parametr)
WHEN 1 THEN ''
ELSE 'Nepřípustná hodnota.' END
Sloupce mřížky - DataFormatString
Pole DataFormatString se používá pro formátování zobrazovaných dat.
Příklady formátování:
{0:d} ... datum bez času
{0:N2} Kč ... částka v Kč na 2 desetinná místa
{0:0.00} ... číselný údaj s přesností na 2 desetinná místa
{0:0.00;(0.00);""} ... číselný údaj s přesností na 2 desetinná místa. V případě, že je hodnota 0, zobrazí prázdný string ""
Formátování čísel
znak |
typ |
formát |
výstup
(double 1.2345) |
výstup
(int -12345) |
c |
currency |
{0:c} |
£1.23 |
-£12,345.00 |
d |
decimal
(whole number) |
{0:d} |
System.FormatException |
-12345 |
e |
exponent / scientific |
{0:e} |
1.234500e+000 |
-1.234500e+004 |
f |
fixed point |
{0:f} |
1.23 |
-12345.00 |
g |
general |
{0:g} |
1.2345 |
-12345 |
n |
number |
{0:n} |
1.23 |
-12,345.00 |
r |
round trippable |
{0:r} |
1.23 |
System.FormatException |
x |
hexadecimal |
{0:x4} |
System.FormatException |
ffffcfc7 |
Vlastní formátování čísel
znak |
typ |
formát |
výstup
(double 1234.56) |
0 |
zero placeholder |
{0:00.000} |
1234.560 |
# |
digit placeholder |
{0:#.##} |
1234.56 |
. |
decimal point placeholder |
{0:0.0} |
1234.6 |
, |
thousand separator |
{0:0,0} |
1,235 |
% |
percentage |
{0:0%} |
123456% |
Formátování datumu
znak |
typ |
výstup
(June 8, 1970 12:30:59) |
d |
Short Date |
08/06/1970 |
D |
Long Date |
08 June 1970 |
t |
Short Time |
12:30 |
T |
Long Time |
12:30:59 |
f |
Full date and time |
08 June 1970 12:30 |
F |
Full date and time (long) |
08 June 1970 12:30:59 |
g |
Default date and time |
08/06/1970 12:30 |
G |
Default date and time (long) |
08/06/1970 12:30:59 |
M |
Day / Month |
8 June |
r |
RFC1123 date string |
Mon, 08 Jun 1970 12:30:59 GMT |
s |
Sortable date/time |
1970-06-08T12:30:59 |
u |
Universal time, local timezone |
1970-06-08 12:30:59Z |
Y |
Month / Year |
June 1970 |
Vlastní formát datumu
znak |
typ |
výstup
(June 8, 1970 12:30:59) |
dd |
Day |
08 |
ddd |
Short Day Name |
Mon |
dddd |
Full Day Name |
Monday |
hh |
2 digit hour |
12 |
HH |
2 digit hour (24 hour) |
12 |
mm |
2 digit minute |
30 |
MM |
Month |
06 |
MMM |
Short Month name |
Jun |
MMMM |
Month name |
June |
ss |
seconds |
59 |
tt |
AM/PM |
PM |
yy |
2 digit year |
70 |
yyyy |
4 digit year |
1970 |
: |
seperator, e.g. {0:hh:mm:ss} |
12:30:59 |
/ |
seperator, e.g. {0:dd/MM/yyyy} |
08/06/1970 |
Sloupce mřížky - RegExpression
Pole RegExpression se používá pro stanovení regulárního výrazu ověřujícího zadávanou hodnotu. Není-li regulární výraz splněn, je vypsána chybová zpráva uvedená ve vlastnosti sloupce RegExprMessage.
Příklady regulárních výrazů:
Datum
Regulární výraz |
^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$
|
Popis |
Datum respektuje přestupné roky. Přijímá '.' '-' a '/' jako oddělovače dnů měsíců a let. Např.: dd.mm.yyyy nebo d.mm.yy apod.
|
Shoda |
29.2.2004 | 31121975 | 29/2-00
|
Neshoda |
29.2.2005 | 32121975 | 29.2/01
|
Číselný údaj
Regulární výraz |
^(\d|-)?(\d|,)*\.?\d*$
|
Popis |
Přijímá pouze znaky (0-9) a desetinnou tečku nebo čárku (oddělovač desetinné části je nepovinný). Může začínat znakem mínus.
|
Shoda |
5,000 | -5,000 | 100.04
|
Neshoda |
abc | tisíc | 5.3.6
|
Číselný údaj s 0-2 číslicemi za desetinným oddělovačem
Regulární výraz |
^(\d|-)?\d{0,5}(,|\.)?\d{0,2}$
|
Popis |
Přijímá pouze znaky (0-9) a desetinnou tečku nebo čárku (oddělovač desetinné části je nepovinný). Může začínat znakem mínus.Může obsahovat nejvíce 8 číslic z toho desetinná část může obsahovat žádnou až 2 číslice.
|
Shoda |
5,00 | -5 | 100.04 | 123456.78
|
Neshoda |
5,123 | tisíc | 5.3.6 | 1234567.89
|