Procedury a funkce ve sriptu

Top  Previous  Next

Seznam témat:

popis použití procedur

Popis použití procedur

Umístění ve scriptu

Popis a nastavení procedur a funkcí ve skriptu (průvodce zadáním):

umístění

seznam a popis

 

 

Použití

 

FIELD - slouží k získání proměnné z dotazu.

Příklad 1 : 

Výběr poboček za již vybranou firmu (při #selrows)

 

Dotaz musí být aktivní před vlastním spuštěním scriptu, pokud ho tedy máme nekativní, je potřeba ho otevřít a v případě, že naše další akce bude mít vliv i na tento dotaz, pak nesmíme zapomenout dát na závěr REFRESH('dotaz')

 

OPEN('odberatel')

 

SET fico= FIELD('dotaz1','id_ico')

SET fmulti=LOOKUPBOX('Vyberte pobočku','id_multi','SELECT id_multi, nazev1,ulice,obec FROM dba.gfirmy WHERE id_ico=:fico',fico)

 

další práce s proměnnou je již standardní.

 

 

 

 

GETREPORTFILENAME()  - funkce vracející jméno aktuálně generované sestavy.
DIALOGINIT(<title>) - založí editační dialogové okno se zadaným titulkem. Usnadňuje vytvoření dialogových oken pro vstup dat od uživatele.
DIALOGADDITEM(<type>, <varname>, <title>[, <params>]) - v dialogovém okně vytvoří editační prvek. Přípustné typy jsou TEXT,INT,FLOAT,DATE,BOOL,LOOKUP,COMBO. Parametr <varname> určuje proměnnou udržující hodnotu pole. Parametr <params> má specifický význam pro prvky typu LOOKUP a COMBO (viz demo).
DIALOGSHOW() - zobrazí dialogové okno a vrátí TRUE nebo FALSE pokud uživatel okno potvrdí resp. stornuje.

Příklad 2:

Příklad pro využití finkcí DIALOGADDITEM, DIALOGINIT, DIALOGSHOW. Sdružení dotazů do jednoho dialogového okna (formuláře) pro nastavení parametrů výběru  a zpracování dat před tvorbou tiskového výstupu. Výběr dat má být omezen obdobím, nastaveno třídění, dále nastaveno omezení tisku (všechno, či jen součtové řádky):

 

SET DlgIsValid=FALSE

LOOP

 DIALOGINIT('Parametry sestavy')  

 DIALOGADDITEM('LOOKUP', 'varobd', 'Vyberte z číselníku období', 'id_dat1;  select id_dat1, nazev from dba.gobdobi order by id_dat1 desc')                                                              

 DIALOGADDITEM('COMBO', 'var1', 'Zvolte třídění', 'Podle firmy, Podle času;0')  

 DIALOGADDITEM('COMBO', 'vtisk', 'Zpusob tisku','Položkově,Součty;0')  

 IF (DIALOGSHOW=FALSE)

   RETURN(FALSE) //stornuje generování sestavy

   EXIT

 ENDIF

 

 SET DlgIsValid=YESNOBOX('Použít tyto parametry pro tisk?')

 set varobd = getvar('varobd')  

 set var1 = getvar('var1')      

 set vtisk = getvar('vtisk')

 

 if (varobd = '')

   OKBOX('Chybí parametr "období"')  

   set DlgIsValid=FALSE  

 endif      

 

  if (var1 = 0)

   OKBOX('Chybí parametr "způsob třídění"')  

   set DlgIsValid=FALSE  

 endif

 

 if (vtisk = 0)

   OKBOX('Chybí parametr "způsob tisku"')  

   set DlgIsValid=FALSE  

 endif

 

 IF (DlgIsValid=TRUE)

   BREAKLOOP

 ENDIF

ENDLOOP

 

 

 

 

DUALLOOKUPBOX(<text>, <temptable>, <key fileds>, <select>, [params1], [params2]....] - možnost výběru více záznamů ze seznamu sestaveného dotazu- použití pro omezení výběru dat do tiskového výstupu - vazba datového zdroje na temporery vytvořenou tabulku.. Do zadané tabulky se ukládají primární klíče záznamů.
ADDSQLCLAUSE( <dotaz>, <klause>, <dodatek>) -  do zadaného datového zdroje, k zadané klausuli SQL připojí dodatek
SETSQLCLAUSE(<dotaz>, <klause>, <obsah klause>) - nastaví klauzuli (obsah) v SQL dotazu (zadaném datovém zdroji) typu select

Příklad 2:

Příklad pro výběr parametrů pro sestavení SQL dotazu před tiskem, v SQL dotazu již je klauzule WHERE a je doplněna o dotaz na období:

 

IF (CHECKQUERY('select * from #zd1') = TRUE)

     EXECSQL('DROP table #zd1')

ENDIF

 

IF (DUALLOOKUPBOX( 'Vyberte období:', '#zd1', 'id_dat1, dat2','SELECT id_dat1, dat2, nazev FROM dba.gobdobi ORDER BY id_dat1 desc') = FALSE)

 RETURN(FALSE)

 EXIT

ENDIF

 

ADDSQLCLAUSE('query1','from', ' ,#zd1')

ADDSQLCLAUSE('query1','where',' and (v.datum >= #zd1.id_dat1  and v.datum <= #zd1.dat2)')

 

Příklad 3:

Příklad pro výběr parametrů pro sestavení SQL dotazu před tiskem, do SQL dotazu má být doplněna klauzule WHERE s dotazem na období:

 

IF (CHECKQUERY('select * from #zd1') = TRUE)

     EXECSQL('DROP table #zd1')

ENDIF

 

IF (DUALLOOKUPBOX( 'Vyberte období:', '#zd1', 'id_dat1, dat2','SELECT id_dat1, dat2, nazev FROM dba.gobdobi ORDER BY id_dat1 desc') = FALSE)

 RETURN(FALSE)

 EXIT

ENDIF

 

ADDSQLCLAUSE('query1','from', ' ,#zd1')

SETSQLCLAUSE('query1','where','(v.datum >= #zd1.id_dat1  and v.datum <= #zd1.dat2)')

Související témata

Příklady použití scriptovacích funkcí