SQL a proměnná VAR

SQL a proměnná VAR
« kdy: 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:

Kód: [Vybrat]
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.
« Poslední změna: 19. 02. 2020, 08:01:32 od Petr Krčmář »


Re:SQL a proměná VAR
« Odpověď #1 kdy: 19. 02. 2020, 07:54:16 »
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?

Re:SQL a proměná VAR
« Odpověď #2 kdy: 19. 02. 2020, 07:58:06 »
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

Re:SQL a proměnná VAR
« Odpověď #3 kdy: 19. 02. 2020, 08:44:46 »
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