====== Příklady práce s datumem ====== Datum v proměnné LUA by se měl používat vždy ve formátu čísla os.time(). ===== FieldByName/SetFieldByName ===== FieldByName vrací tabulku {dateTimeUnix = integer}. --Nacteni datumu z OBISu - vraci se tabulka s prvkem dateTimeUnix local Datum = DSI:FieldByName("Datum").dateTimeUnix --kdyz je v databazi NULL bude promenna Datum = {dateTimeUnix = ""} --Vlozeni datumu do OBISu SetFieldByName("Datum", {dateTimeUnix=Datum}) --Pokud chci pouzit aktualni datum local Datum=os.time() --prime pouziti v SetField (cf.Now() je obsolete) SetFieldByName("Datum", {dateTimeUnix=os.time()}) ==== Problém NULL ==== Pokud je datum NULL vrací {dateTimeUnix = ""} - toto platí od verze 1788. V předchozích verzích se pro NULL vracel rovnou string "". Pro podmínku zda je datum NULL lze ale v obou verzích použít funkci FieldByNameIsNull() if DSI:FieldByNameIsNull("Datum") then LuaObj:Print("datum je null") end ===== DEBUG ===== DEBUG_WRITE("Datum=",cf.FormatUnixTime(Datum)) ===== Dialogy a SQL ===== Používat nový typ calendartime a pro SQL cf.FormatSQLUnixTime res = dlg.create({Caption="Test dialog", Encoding=encoding, Items={ {"calendar1", "calendartime", "kalendář time", "To", os.time()}, {"calendar2", "calendartime", "kalendář time", "To", DSI:FieldByName("Datum").dateTimeUnix}, } local sql = [[select * from rozpocty_rozpocty where Datum < ']]..cf.FormatSQLUnixTime(res.calendar1)..[[']] ===== Testy ===== local Datum=cf.UnixTimeDDMMYYYY("1.1.2009 10:01:30") local sql = [[select * from rozpocty_rozpocty where Datum < ']]..cf.FormatSQLUnixTime(cf.UnixTimeDDMMYYYY("1.1.2009 10:01:30"))..[[']] ===== Reporty ===== @return DSI:FieldByName("Datum") ===== Optiony ===== local DatumOtevreni = cf.UnixTime(ClientSession:GetOption("UctoDM.DatumOtevreni")) ClientSession:SetOption(cf.FormatUnixTime(DatumOtevreni))