====== 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))