Nacházíte se zde:   Zákaznický portál > Správa > > Mřížky > Hodnoty
  |  Přihlásit se

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

 

 


 

Javascript

Javascript definuje kód prováděný na stránce pořízení požadavku. V kódu jsou definované javascriptové funkce, které lze spouštět z vybraných sloupců mřížky.

Cílem může být například zobrazení součtu některých polí. Sloupce, které mají funkci spouštět musí mít uvedeno jméno  funkce ve vlastnosti JavaScriptFunction.

Identifikace sloupce typu BoundField, CheckBoxField, ComboboxField, CalendarField pro použití ve výpočtu probíhá přes hodnotu vlastnosti „Datový sloupec“.

Příklad vloženého javascriptu:
<script language='javascript'>
    function PohledMenaFunkce() {
          var txt1 = document.getElementById('zaklad1');
          var txt2 = document.getElementById('dph1');
          var lbl = document.getElementById('pohledmena');
          
          var txt1Int;
          txt1Int = TryParseInt(txt1.value, 0);
 
          var txt2Int;
          txt2Int = TryParseInt(txt2.value, 0);
          
          var soucet = txt1Int + txt2Int;
          lbl.innerHTML = number_format(soucet, 2, ',', ' ');
    }

window.onload = function() { PohledMenaFunkceOnLoad(); };

    function PohledMenaFunkceOnLoad() {
          var txt1 = document.getElementById('zaklad1');
          var txt2 = document.getElementById('dph1');
          var lbl = document.getElementById('pohledmena');
          
          var txt1Int;
          var int1
          // Hodnota se načítá podle toho jestli je formulář v modu editace nebo prohlížení.
          if(txt1.innerHTML != ""){int1 = txt1.innerHTML} else {int1 = txt1.value}
          txt1Int = TryParseInt(int1, 0);
 
          var txt2Int;
          var int2
          if(txt2.innerHTML != ""){int2 = txt2.innerHTML} else {int2 = txt2.value}
          txt2Int = TryParseInt(int2, 0);
          
          var soucet = txt1Int + txt2Int;
          lbl.innerHTML = number_format(soucet, 2, ',', ' ');
    }

    function DatumVystFunkce() {
          var dprij = document.getElementById('dprij');
          var dvyst = document.getElementById('dvyst');
          var splatnost = document.getElementById('splatnost');
          var dspl = document.getElementById('dspl');

          if(dprij.value != ""){
                                dvyst.value = dprij.value
                                dspl.value = FormatujDatum(PrictiDnyKDatumu(PrevedNaDatum(dprij.value), splatnost));
          } 
    }

   function KontrolaDSPL() {
      var dspl = document.getElementById('dspl').value;
      var splatnost = document.getElementById('splatnost').innerHTML;
      var duzp = document.getElementById('dprij').value;
 
      var datumdspl = PrevedNaDatum(dspl);
      var datumduzp = PrevedNaDatum(duzp);
      var datumduzpSeSplatnosti = PrictiDnyKDatumu(datumduzp, splatnost);
 
      if (datumduzpSeSplatnosti.getTime() > datumdspl.getTime()) {
          alert("Datum splatnosti je menší než d. u. z. p + počet dní splatnosti");
      }

    }
</script>

Pro snadnější použití jsou připraveny některé funkce:
TryParseInt(vstup, vychoziHodnota) - Funkce se pokusí převést řetězec vstup na desetinné číslo. Pokud převod není možný, tak vrací číslo vychoziHodnota.

Pro formátování čísel je funkce number_format. Jako parametr se předává:

  • formátovaný řetězet
  • počet desetinných míst
  • oddělovač desetinných čísel
  • oddělovač tisíců

př. použití:

number_format(1234.56); 
Vrací:
'1,235'

number_format(1234.56, 2, ',', ' '); Vrací:
'1 234,56'

Pro práci s datumy jsou připraveny obecné funkce

  • PrevedNaDatum(datumString) - přijímá řetězec jako parametr a převádí ho na datum.
  • PrictiDnyKDatumu(datum, pocetDni) - přičte k datumu počet dní předané v parametru pocetDni. Parametr datum musí být ve formátu Date!
  • FormatujDatum(datum) - Převede Date na čitelný řetězec datum ve formátu dd.mm.yyyy

Příklad pro kontrolu datumů je funkce KontrolaDSPL(), která využívá výše popsané pomocné funkce pro práci s datumy a při zjištění zadání menšího data splatnosti než je duzp + počet dní splatnosti vyhazuje hlášku.

V tomto případě bude ve vlastnosti JavaScriptFunction u sloupce vyplněna hodnota PohledMenaFunkce(). Toto způsobí, že při změně hodnoty v nastaveném poli se vyvolá javascriptová funkce PohledMenaFunkce().

Pro vyvolání výpočtu na detailu pořízeného požadavku je potřeba v jascriptu nastavit funkci, která výpočet při loadu stránky pustí:
window.onload = function() { PohledMenaFunkceOnLoad(); };
A je potřeba tuto funkci nadefinovat(viz. příklad). Změny jsou ve získávání hodnoty z prvků na formuláři. Při zobrazení detailu se hodnota získává pomocí txt1.innerHTML místo získávání hodnoty z txt1.value při pořizování.

 

Maska

Nastavení masky určuje formát a povolené znaky zadávané do vstupního pole.

příklady masky:

  • pro čísla: 9,999,999.99
  • pro datum: 99/99/9999
  • pro čas: 99:99:99
  • pro datum a čas: 99/99/9999 99:99:99

Znaky pro zadání masky:

9 - Pouze číselné znaky
L - Pouze písmena
$ - Poue písmena nebo mezery
C - Pouze uživatelské znaky (case sensitive)
A - Pouze písmena nebo uživatelské znaky
N - Pouze čísla nebo uživatelské znaky
? - Libovolné znaky

/ - Oddělovač datumu
<ESC>:</ESC> - Oddělovač času
. - Desetinný oddělovač
, - Oddělovač tisíců
\ - Escape character
{ - Počáteční oddělovač pro opakování masek
} - Konečný oddělovač pro opakování masek

Příklady 
9999999 - 7 číselných znaků 
99\/99 - 4 číselné znaky oddělené uprostřed znakem "/"

Typy Masky:

None - Bez validace
Number - Validace čísel
Date - Validace datumu
Time - Validace času
DateTime - Validace datumu a času

Další možnosti použití na stránce: www.asp.net/ajaxlibrary/act_MaskedEdit.ashx, nebo www.asp.net/ajax/ajaxcontroltoolkit/samples/maskededit/maskededit.aspx