Xspecial

Aus bafbal.de
Zur Navigation springen Zur Suche springen

xspecial - Nachschlagelisten aus SQL-Abfragen

Specials sind auch Nachschlageliste, allerdings werden sie im Gegensatz zu xlookup als SQL-Statement definiert.

nachschlageliste aus einer SQL-Abfrage

Die Bedienung ist recht selbsterklärend: Mit dem Button Special hinzufügen wird exakt dies getan, neben einer Kategorie und einem Namen muss in Code ein SQL-Statement angegeben werden; dabei muss die Spalte mit den Schlüssel ckey und die Spalte für den (angezeigten) Wert cvalue heißen. (Das Prefix c steht für column und ist erforderlich, weil bei manchen Datenbanksysteme key und/oder value geschützte Bezeichner sind.)

Mit dem Button Special testen kann das SQL-Statement ausgeführt werden.

Tabelle

create table data_special (
  data_special_id varchar(40) not null primary key,
  category varchar(40),
  name varchar(40) not null unique,
  description varchar(80),
  code text(4000),
  status int,
  datechg date,
  usrchg varchar(40),
  progchg varchar(40)       
);

Code

xspecial

#rights  n=frm   r_user=r  r_user.admin=w
#frm   c=xspecial   flt=xspecial_flt   w=300   r=frm

#btn  y=save   s=#save  se=c
#btn  y=cancel   s=#cancel  se=cp
#btn  y=back   s=#treeback  se=b
#btn  y=backback   s=#treebackback  se=b
#btn  y=export   s=xspecial_eximport(ex)  se=b
#btn  y=import   s=xspecial_eximport(im)  se=b
#btn  c=$T(Add_special)   w=120    s=xspecial_add   se=b

#filter

Die Formulardefinition ist ziemlich "Standard", User haben Leserechte, Administratoren Schreibrechte.

xspecial_add

~ $EMPTY($FND(s,category))
#tree_add u=root   c=$T(new_special)  t=data_special     c1=name   s="#page_fill  d=xspecial_page_list"   si=Y  

~ $EMPTY($FND(s,data_special_id))
#tree_add u=sel   c=$T(new_special)  t=data_special   c1=name   s="#page_fill  d=xspecial_page_list"   si=Y    

~ 
#tree_add u=selp   c=$T(new_special)  t=data_special   c1=name    s="#page_fill  d=xspecial_page_list"   si=Y    

~~

Je nach dem, ob, und wenn ja, welcher Baumeintrag selektiert ist, muss der Parameter u auf einen anderen Wert gesetzt werden (wurde schon bei xlookup_add ausführlich erklärt).

xspecial_eximport

~ $ICP(0,ex)
#val_set  n=1  z=$FILEDIALOG(save,$T(filter_baf),baf)
#sql_exporttables   fn=$VAL(1)   t=data_special

~ $ICP(0,im)
#val_set  n=1  z=$FILEDIALOG(open,$T(filter_baf),baf)
#sql_importdefs   t=data_special
#sql_importtables   fn=$VAL(1)   t=data_special

~~

Ex- und Import ist auch ziemlich "Standard".

xspecial_flt

#tree_clear

#sql select *    from data_special      order by category, name;
#tree_node  u=root      k=category  c1=category   nc=Y   s="#page_fill  d=xspecial_page_category"
#tree_node  u=last     t=data_special     c1=name     s="#page_fill  d=xspecial_page_list"  
#tree_fillsql  mex=3

Die Specials werden in zwei Baumebenen als Kategorie und Name angezeigt. Mit mex=3 werden bei bis zu drei Kategorien diese gleich geöffnet.