Dotaz na datum |
Top Previous Next |
Seznam témat:
Velmi často je potřeba se před tiskem sestavy zeptat uživatele na interval datumů (nebo alespoň na jeden datum). Tato situace se dá dobře řešit pomocí příkazu DATEBOX(<text>,<formát>,<výchozí hodnota>). Zde je uveden příklad použití tohoto příkazu ve skriptu "před tiskem":
// dotaz na spodní mez intervalu (datum od) a ošetření odpovědi uživatele // nejdříve se jako spodní mez intervalu naplní proměnná vd výchozí hodnotou, // která odpovídá prvnímu dni období, do kterého je uživatel přihlášen set vd = query('select period from dba._gusers')
// tečky v datumu se nahradí pomlčkami Set vd = replacestr(vd,'.','-')
// Uživatel je dotázán na datum a je mu přednabídnuta hodnota vd set var_dateod = datebox('Zadejte datum "od" pro soupis pohybů','dd-mm-yyyy',vd)
// výsledek odpovědi se zformátuje o předá do datovému zdroji "pohyby" do proměnné "qvar_dateod" if (var_dateod <> '') set var_dateod = copy(var_dateod,7,4)+'-'+copy(var_dateod,4,2)+'-'+copy(var_dateod,1,2) SETQUERYPARAM('pohyby','qvar_dateod',var_dateod)
// pokud zmáčkne ESC, nebo datum vymaže, vezme se jako výchozí datum 1.1.1900 else OKBOX('Nebylo zadáno datum, sestava bude k dnešnímu dni') set var_dateod = '1900-01-01' SETQUERYPARAM('pohyby','qvar_dateod',var_dateod) endif
// proměnná var_dateod se znovu zformátuje tak, aby se dala použít // někde na sestavě (jiný důvod pro to již není) set var_dateod = copy(var_dateod, 8+pos('-',copy(var_dateod,8,1)),2)+' - '+ copy(var_dateod, 6,2-pos('-',copy(var_dateod,7,1))) +' - '+copy(var_dateod,1,4)
// Nyní bude dotaz na horní mez intervalu, ale tak, že se nabídne dnešní datum. // Nejdříve se proměnná vd naplní dnešním datumem a rovnou v takovém formátu, // který je možno předat do funkce DATEBOX Set vd =str(extractday(date))+'-' + str(extractmonth(date))+'-'+ str(extractyear(date)) set var_date = datebox('Zadejte datum "do" pro soupis pohybů','dd-mm-yyyy',vd)
// Nyní se opět ošetří různé odpovědi uživatele a hodnota se předá datovému // zdroji v požadovaném formátu. if (var_date <> '') set var_date = copy(var_date,7,4)+'-'+copy(var_date,4,2)+'-'+copy(var_date,1,2) SETQUERYPARAM('pohyby','qvar_date',var_date) else OKBOX('Nebylo zadáno datum, sestava bude k dnešnímu dni') set var_date = str(extractyear(date))+'-'+ str(extractmonth(date))+'-'+str(extractday(date)) SETQUERYPARAM('pohyby','qvar_date',var_date) endif
// Na závěr se opět provede zformátování proměnné "var_date" pro účely tisku v záhlaví sestavy set var_date = copy(var_date, 8+pos('-',copy(var_date,8,1)),2)+' - '+ copy(var_date, 6,2-pos('-',copy(var_date,7,1))) +' - '+copy(var_date,1,4)
// Aktivovat dotaz !!! Open('Dotaz1')
// kontrola dotazu okbox(GETSQL('Dotaz1'))
Příklad následující sestava s použitím datumu
návrh sestavy Ve skriptu je zadán postup popsaný v této kapitole
zadání skriptu
datový zdroj
volba data před zobrazením
zobrazení sestavy
Související témata |