Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: mreichel481980 19. 02. 2020, 07:47:23
-
Přátelé, potřeboval bych trošku pomoct. Potřebuji v jedné sestavě nad SQL upravit výstup. V sestavě je v hlavičce jako identifikace dodavatele uvedeno jeho IČO, které se zvolí ve výběru, který provede skript sestavující šablonu. Z databáze vytáhne zvolené IČO a uloží jej do proměnné VAR_K, která je potom v hlavičce uvedené sestavy. Já bych tam potřeboval doplnit ještě název toho dodavatele, jenže nevím, jak na to. Kód toho skriptu vypadá takto:
setmaindataset('Dotaz1')
set var_k = '%%'
set ynb = yesnobox('Chcete vybrat dodavatele?')
if (ynb = true)
set k = 'select nazev1, id_ico, id_multi from dba.gfirmy where dodavatel=1 and pouz = 1'
set k = lookupbox('Vyberte dodavatele:','id_ico;id_multi',k)
set var_k = k
Název toho dodavatele je hodnota nazev1 z databáze gfirmy.
-
Aby vám někdo mohl poradit, musíte nejprve uvést, co je to za systém. V SQL žádné proměnné nejsou. Je to nějaké ASP.NET, nebo T-SQL pod MS SQL?
-
Je to skript nad Anywhere SQL. Bohužel nevím, v čem to autor psal. Celý ten skript vypadá takhle:
setmaindataset('Dotaz1')
set var_k = '%%'
set var_m = '%%'
set d1 = DATEBOX('Zadejte datum OD:', 'yyyy-mm-dd')
set d2 = DATEBOX('Zadejte datum DO:', 'yyyy-mm-dd')
setqueryparam('Dotaz1','datumOD',d1)
setqueryparam('Dotaz1','datumDO',d2)
setqueryparam('Dotaz2','datumOD',d1)
setqueryparam('Dotaz2','datumDO',d2)
setqueryparam('Dotaz3','datumOD',d1)
setqueryparam('Dotaz3','datumDO',d2)
set ynb = yesnobox('Chcete vybrat dodavatele?')
if (ynb = true)
set k = 'select nazev1, id_ico, id_multi from dba.gfirmy where dodavatel=1 and pouz = 1'
set k = lookupbox('Vyberte dodavatele:','id_ico;id_multi',k)
set var_k = k
set k1 = chr(39) + STRPARSE(k, 1, ';') + chr(39)
set k2 = chr(39) + STRPARSE(k, 2, ';') + chr(39)
set k3 = ' and u.ico = '+ k1 +' and u.multi = ' + k2
addsqlclause('Dotaz1', 'where', k3)
addsqlclause('Dotaz2', 'where', k3)
addsqlclause('Dotaz3', 'where', k3)
endif
set varianta = combobox('Vyberte variantu tisku','Detail; Suma za dodavatele; Detailní výpis nakupovaných položek')
if (varianta <= 0)
set var = '1'
set ynb = yesnobox('Chcete zadat masku pro výběr položek?')
if (ynb = true)
inputbox('Zadejte parametr', 'Zadejte masku pro výběr položek', 'n')
set var_m = getvar('n')
set n1 = ' and i.material_id like '+ chr(39) + getvar('n') + chr(39)
addsqlclause('Dotaz1', 'where', n1)
endif
open('Dotaz1')
else
if (varianta = 2)
set var = '3'
set ynb = yesnobox('Chcete zadat masku pro výběr položek?')
if (ynb = true)
inputbox('Zadejte parametr', 'Zadejte masku pro výběr položek', 'n')
set var_m = getvar('n')
set n1 = ' and i.material_id like '+ chr(39) + getvar('n') + chr(39)
addsqlclause('Dotaz3', 'where', n1)
endif
open('Dotaz3')
else
set var = '2'
open('Dotaz2')
endif
endif
-
vysel bych z analogie.
set k = 'select nazev1, id_ico, id_multi from dba.gfirmy where dodavatel=1 and pouz = 1'
# v selectu nazev1 uz je tady neni treba nic menit
set k = lookupbox('Vyberte dodavatele:','id_ico;id_multi',k)
# tady nazev1 chybi, co ho pridat do 'nazev1;id_ico;id_multi'
set var_k = k
set k1 = chr(39) + STRPARSE(k, 1, ';') + chr(39)
# analogicky tady se vybere k[1] tj. id_ico
# tak bude se indexuje od 0, tak pridat neco jako: set k0 = chr(39) + STRPARSE(k, 0, ';') + chr(39)
# nebo se indexuje od 1 a pak je to treba posunout
set k2 = chr(39) + STRPARSE(k, 2, ';') + chr(39)
set k3 = ' and u.ico = '+ k1 +' and u.multi = ' + k2
# set k3 = ' and u.ico = '+ k1 +' and u.multi = ' + k2 + ' and u.nazev1 = ' + k0