Uživatelské nástroje

Nástroje pro tento web


sql:generovani_sql_pomoci_lua

Generování SQL pomocí LUA (funkce dlg)

Vstup hodnoty

dlg.query(text)

 select * from rozpocty_cenik
 where
   objcis = '<lua>return dlg.query("text")</lua>'

Výběr hodnoty z tabulky

dlg.lookup(text, lookup)

 select * from rozpocty_rozpocty
 where
   idpartner = '<lua>return dlg.lookup("text","partneri_partneri:idpartner")</lua>'

Přepínač - combo

dlg.combo(text, combo)

 select * from rozpocty_rozpocty
 order by
 <lua>return dlg.combo("Seřadit dle","Ceny=CenaRozp|Partnera=IDpartner")</lua>

Zadání časového rozmezí

dlg.calbetween(text [, From|To])

 select * from rozpocty_rozpocty
 where
   datum between <lua>return dlg.calbetween("Datum od|Datum do", "From|To")</lua>

Parametr "From|To" je nepovinný. Zadáme-li do dialogu datumy '10.11.2006 12:51:25' a '15.11.2006 18:11:20', bez parametru From|To se do SQL dotazu dosadí: datum between '10.11.2006 12:51:25' and '15.11.2006 18:11:20'

s parametrem From|To se do SQL dotazu dosadí: datum between '10.11.2006' and '15.11.2006 23:59:59'

Dotaz na datum pouze OD nebo DO

dlg.calendar(text)

 select * from rozpocty_rozpocty
 where
   datum > '<lua>return dlg.calendar("Datum od")</lua>'

V dotazech s <queryitem name…> se musí zadat místo znamének "větší" resp. "menší" (< ; >) "&lt" resp. "&gt". Místo "<>" se zadává "!=". Nebo text uzavřít do značek <![CDATA[Tady je <> text]]>.

Pokud je potřeba v SQL používat dvě hranaté závorky, je třeba uzavírací tag ]]> vložit do uvozovek:

s=[[<QueryItem>
<SQL><![CDATA[select * from table
where field <> '' and id=']]..id..[['
]].."]]></SQL>"..[[
</QueryItem>]]

Uložení a načtení hodnoty dotazu

dlg.restore(index) – uloží hodnotu dotazu dlHg.save(index, text) – načte hodnotu předchozího dotazu

 select * from sklad_karty
 where
   cena < (cenaskladu * <lua>return  dlg.save(1,dlg.query("zadej marži"))</lua>) or
   cena1 < (cenaskladu * <lua>return dlg.restore(1) </lua>)

Doplnění aktuální hodnoty do SQL

DSI:FieldByName("jmeno_sloupce")

 select * from rozpocty_rozpocty
 where
   idpartner = '<lua>return DSI:FieldByName("idpartner")</lua>'

Doplnění označených řádků do SQL

platí pouze pro primární klíč

cf.ConstructWhere(DSI, Form)

 select * from rozpocty_rozpocty
 where
   <lua>return cf.ConstructWhere(DSI, Form)</lua>
sql/generovani_sql_pomoci_lua.txt · Poslední úprava: 2008/10/17 12:18 autor: Karel Petrů