Uživatelské nástroje

Nástroje pro tento web


lua:lua_dialogy

Toto je starší verze dokumentu!


Lua dialogy

Přehled možností

  local res = dlg.create({Caption="Test dialog", Encoding=encoding,
  Items={
    {"label1", "label", "Nápis"},
    {"edit1", "edit", "editační pole", "", "default val"},
    {"lookup1", "lookup", "lookup pole", "partneri_partneri:firma", "default val"},
    {"lualookup1", "lualookup", "lualookup pole", "return cf.ShowMsg('LuaLookup pole')"},
    {"combo1", "combo", "combo pole", "zobraz1=vrat1|zobraz2=vrat2"},
    {"checkbox1", "checkbox", "checkbox pole", "", "1"},
    {"calendar1", "calendartime", "kalendář pole", "To", cf.UnixTimeDDMMYYYY("1.1.2005")},
    {"calbetween1", "calbetweentime", "datum od|datum do","From|To"},
    {"calc1", "calc", "kalkulačka pole", "1.1.2005,EUR", "", "1000"},
    {"dir", "dirdialog", "Výběr adresáře", "", "default dir"},
    {"file", "filedialog", "Výběr souboru", "Filter EXE|*.exe|Filter DLL|*.dll", "default file"}
  },
  Buttons={
    {"show", "Ukaž výsledek", 18},
    {"cancel", "Storno", 19}
 
  }})

Správná práce s datumy

Použítí LUA a LUA dialogů v SQL

Příklad SQL dotazu pro zobrazení pořadí dodavatelů/odběratelů dle ceny

<lua>       
  local res = dlg.create(Caption="Výběr", Encoding=encoding,
  Items="datum", "calbetweentime", "datum od|datum do","From|To",    
         "znamenko", "combo", "Odběratelé/dodavatelé","Odběratelé=1|Dodavatelé=-1",
         "pocet", "edit", "Vypsat prvních ... (prázdno = všechny)"
        )
 
if res.Result == "Cancel" then return [[select '  Storno' from common_nast]] end
local pocet = '' 
if res.pocet ~= "" then pocet = [[first ]]..cf.tonumber(res.pocet) end
 
local sql = [[select ]]..pocet..[[ prijemky.idpartner, partneri.firma, 
sum(ppolozky.mnozstvi * ppolozky.cena ) as cena, count(prijemky.idprijemka) as pocet
from sklad_prijemky prijemky      
JOIN sklad_ppolozky ppolozky ON ppolozky.idprijemka = prijemky.idprijemka
JOIN sklad_karty karty ON ppolozky.idskladkarta = karty.idskladkarta    
LEFT JOIN partneri_partneri partneri ON partneri.idpartner = prijemky.idpartner
where       
  prijemky.datum between ']]..cf.FormatSQLUnixTime(res.datumfrom)..[[' and ']]..cf.FormatSQLUnixTime(res.datumto)..[[' and
  prijemky.znamenko = ']]..res.znamenko..[['
group by prijemky.idpartner, partneri.firma
order by 3 desc]]
 
return sql
</lua> 

Použítí "lualookup" pole

Příklad použití "lualookup" pole pro výběr hodnot z navázané tabulky. Tento p říklad se používá při tisku obratové předvahy v deníku.

--zobrazeni osnovy pro vyber uctu.
--osnova se zobrazuje pres lualookup z dialogu
--vraci oznacene ucty jako string oddeleny strednikama
 
--Params je pole s hodnotama vsech fieldu v dialogu
--Sender je jmeno fieldu, ktery akci vyvolal
function ucto_denik.reports.SelectIDUcet(Params, Sender)
  local md=ClientSession:ActivateMid("ucto_osnova")
  local ds=md:FindDataSetItem("ucto_osnova")
  local form=WindowsManager:CreateDetailMidDBForm(md)
  local OutSP=WindowsManager:ShowFormSP(form, {Modal=true})
  local values=form:GetSelectedRows()
  local str=""
  table.foreachi( values, function(k, v)
    if k ~= values.n then
      str = str..v..";"
    else --posledni (nedavat strednik)
      str = str..v
    end
  end)
  ClientSession:Passivate(md)
  return str
end
 
-- ucto print dialog (datum OD, DO, druh, prefix, vyber uctu)
function ucto_denik.reports.UctoPrintDialog()
  local res = dlg.create({Caption="Zadejte rozmezí datumů, druh a prefix", Encoding="ISO-8859-2",
  Items={
    {"datum", "calbetween", "datum od|datum do","From|To"},
    {"iddruh", "lookup", "Prefix druhů dokladů", "ucto_udruh:iddruh" },
    {"idstred", "lookup", "Středisko", "common_stred:idstred" },
    {"iducet", "lualookup", "Vyber účty - jednotlivé účty oddělené středníkem", "return ucto_denik.reports.SelectIDUcet(Params, Sender)"}
  }})
  return res
end
lua/lua_dialogy.1243860272.txt.gz · Poslední úprava: 2009/06/01 12:44 autor: Petr Kristan