Xspecial: Unterschied zwischen den Versionen
Zeile 41: | Zeile 41: | ||
Die Formulardefinition ist ziemlich "Standard", User haben Leserechte, Administratoren Schreibrechte. | 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. |
Version vom 10. Mai 2021, 19:51 Uhr
Inhaltsverzeichnis
xspecial - Nachschlagelisten aus SQL-Abfragen
Specials sind auch Nachschlageliste, allerdings werden sie im Gegensatz zu xlookup als SQL-Statement definiert.
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.