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="ISO-8859-2",
  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", "calendar", "kalendář pole", "To", "1.1.2005",
    "calbetween1", "calbetween", "datum od|datum do","From|To","1.1.2005|31.12.2005",
    "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

  )

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="windows-1250",
  Items="datum", "calbetween", "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 ']]..res.datumfrom..[[' and ']]..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 uctu jako string oddeleny strednikama
function ucto_denik.reports.SelectIDUcet(Params)
  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)"}
  }})
  return res
end
lua/lua_dialogy.1169737171.txt.gz · Poslední úprava: 2007/01/25 14:59 autor: Libor Kadaník