Xdevtext: Unterschied zwischen den Versionen

Aus bafbal.de
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=xdevtext - Entwicklertexte= In den Entwicklertexten können Texte gespeichert werden, die in einer baumartigen Struktur organisiert sind. Von Haus aus sind d…“)
 
Zeile 7: Zeile 7:
 
Die Bedienung sollte ziemlich selbsterklärend sein: Mit dem Button ''Neuer Text'' im Button-Bereich wird ein Text auf der obersten Ebene angelegt, mit dem Button ''Eintrag hinzufügen'' auf jeder Seite eine Unterseite. Das Feld ''Parent'' ist beschreibbar, so dass den Baum auch umorganisieren kann. Man kann die Texte nach darin vorkommenden Begriffe filtern, statt im Text kann der Suchbegriff auch in ''Keywords'' stehen.
 
Die Bedienung sollte ziemlich selbsterklärend sein: Mit dem Button ''Neuer Text'' im Button-Bereich wird ein Text auf der obersten Ebene angelegt, mit dem Button ''Eintrag hinzufügen'' auf jeder Seite eine Unterseite. Das Feld ''Parent'' ist beschreibbar, so dass den Baum auch umorganisieren kann. Man kann die Texte nach darin vorkommenden Begriffe filtern, statt im Text kann der Suchbegriff auch in ''Keywords'' stehen.
  
Noch ein Hinweis zu den Tabellendefinitionen:  
+
Noch ein Hinweis zu den Tabellendefinitionen: Wenn Sie einer Tabelle eine Spalte hinzufügen, dann muss der Trigger aktualisiert werden. Von daher ist die schnellste Vorgehensweise nach meiner Erfahrung die folgende:
 +
 
 +
# In den Entwicklertexten das CREATE TABLE-Statement suchen, ergänzen, kopieren und speichern.
 +
# Im Code-Dialog auf der Seite ''SQL Exec'' oben und unten einfügen.
 +
# Unten aus dem CREATE- ein ALTER-Statement machen, die schon bisher vorhandenen Spalten entfernen, ausführen
 +
# Dem Tabellennamen ein ''_hist'' anhängen, um dieselbe Spalte auch in der History-Tabelle einzufügen, ausführen
 +
# Auf der rechten Seite den Button beziehungsweise die Buttons zur Anlage des Triggers, der Trigger oder der Funktion klicken.
 +
 
 +
Damit das flott funktioniert, müssen die Tabellendefinitionen schnell zur Hand sein - dafür werden sie in den Entwicklertexten gespeichert.
  
 
==Tabellen==
 
==Tabellen==
 +
 +
create table sys_devtext(
 +
  sys_devtext_id varchar(40) not null primary key,
 +
  parent varchar(40),
 +
  name varchar(40) not null,
 +
  keywords varchar(80),
 +
  ctext text, 
 +
  status int,
 +
  datechg date,
 +
  usrchg varchar(40),
 +
  progchg varchar(40)
 +
);
  
 
==Code==
 
==Code==
 +
 +
===xdevtext===
 +
 +
#rights  n=frm    r_user.admin=w
 +
#frm  y=treepage  c="xdevtext - Texts for development tasks"  flt=xdevtext_flt  w=300
 +
 +
#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=xdevtext_eximport(ex)  se=b
 +
#btn  y=import  s=xdevtext_eximport(im)  se=b
 +
#btn  c=$T(Refresh)  se=b  s=#filter  w=100
 +
#btn  c=$T(new_text)  se=b  s=xdevtext_add(root)  w=100
 +
 +
#lbl  c=$T(devtext_filter)  w=80 
 +
#edt  n=edt1  w=165  h=$T(devtext_filter_hint) 
 +
 +
#filter
 +
 +
Die Formulardefinition ist ziemlich Standard. Der Refresh-Button wird dazu benötigt, nach einer Änderung in den Parent-Feldern den Baum neu aufzubauen.
 +
 +
===xdevtext_add===
 +
 +
~ $ICP(0,root)
 +
#tree_add  u=root  c=$T(new_text)  c1=name  t=sys_devtext  s="#page_fill  d=xdevtext_page_text"  si=Y  o=devtext_open
 +
 +
~ $ICP(0,sub)
 +
#tree_add  u=sel  c=$T(new_text)  c1=name  t=sys_devtext  s="#page_fill  d=xdevtext_page_text"  si=Y  o=devtext_open  f_sys_devtext_id=$GUID()  f_parent=$FND(s,sys_devtext_id)
 +
 +
~~
 +
 +
Je nach dem, wo der neue Eintrag eingefügt werden soll, wird u aus ''root'' oder ''sel'' gesetzt. Handelt es sich um einen untergeordneten Eintrag, dann wird das Feld ''parent'' entsprechend gesetzt. Des weiteren muss ''sys_devtext_id'' auf einen Wert gesetzt werden, den es noch nicht gibt, damit nicht die Werte des übergeordneten Eintrags aus der Datenbank geladen werden.
 +
 +
===xdevtext_eximport===
 +
 +
~ $ICP(0,ex)
 +
#val_set  n=1  z=$FILEDIALOG(save,$T(filter_baf),baf)
 +
#sql_exporttables  fn=$VAL(1)  t=sys_devtext 
 +
 +
~ $ICP(0,im)
 +
#val_set  n=1  z=$FILEDIALOG(open,$T(filter_baf),baf)
 +
#sql_importdefs  t=sys_devtext 
 +
#sql_importtables  fn=$VAL(1)  t=sys_devtext 
 +
 +
~~
 +
 +
Beim Ex- und Import gibt es nichts besonderes.
 +
 +
======
 +
 +
======
 +
 +
======
 +
 +
======
 +
 +
======

Version vom 13. Mai 2021, 17:03 Uhr

xdevtext - Entwicklertexte

In den Entwicklertexten können Texte gespeichert werden, die in einer baumartigen Struktur organisiert sind. Von Haus aus sind die Command Wizards dort enthalten, also die Code-Vorlagen, sowie die Table Defs, also die Tabellen-Definitionen. Weitere Äste können ergänzt werden: Rezepte, Anforderungen, Dokumentation, was auch immer.

Entwicklertexte

Die Bedienung sollte ziemlich selbsterklärend sein: Mit dem Button Neuer Text im Button-Bereich wird ein Text auf der obersten Ebene angelegt, mit dem Button Eintrag hinzufügen auf jeder Seite eine Unterseite. Das Feld Parent ist beschreibbar, so dass den Baum auch umorganisieren kann. Man kann die Texte nach darin vorkommenden Begriffe filtern, statt im Text kann der Suchbegriff auch in Keywords stehen.

Noch ein Hinweis zu den Tabellendefinitionen: Wenn Sie einer Tabelle eine Spalte hinzufügen, dann muss der Trigger aktualisiert werden. Von daher ist die schnellste Vorgehensweise nach meiner Erfahrung die folgende:

  1. In den Entwicklertexten das CREATE TABLE-Statement suchen, ergänzen, kopieren und speichern.
  2. Im Code-Dialog auf der Seite SQL Exec oben und unten einfügen.
  3. Unten aus dem CREATE- ein ALTER-Statement machen, die schon bisher vorhandenen Spalten entfernen, ausführen
  4. Dem Tabellennamen ein _hist anhängen, um dieselbe Spalte auch in der History-Tabelle einzufügen, ausführen
  5. Auf der rechten Seite den Button beziehungsweise die Buttons zur Anlage des Triggers, der Trigger oder der Funktion klicken.

Damit das flott funktioniert, müssen die Tabellendefinitionen schnell zur Hand sein - dafür werden sie in den Entwicklertexten gespeichert.

Tabellen

create table sys_devtext(
  sys_devtext_id varchar(40) not null primary key,
  parent varchar(40),
  name varchar(40) not null,
  keywords varchar(80),
  ctext text,  
  status int,
  datechg date,
  usrchg varchar(40),
  progchg varchar(40)
);

Code

xdevtext

#rights  n=frm    r_user.admin=w
#frm  y=treepage  c="xdevtext - Texts for development tasks"   flt=xdevtext_flt   w=300

#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=xdevtext_eximport(ex)  se=b
#btn  y=import   s=xdevtext_eximport(im)  se=b
#btn   c=$T(Refresh)   se=b   s=#filter   w=100
#btn   c=$T(new_text)   se=b   s=xdevtext_add(root)   w=100

#lbl   c=$T(devtext_filter)   w=80  
#edt   n=edt1   w=165   h=$T(devtext_filter_hint)   

#filter

Die Formulardefinition ist ziemlich Standard. Der Refresh-Button wird dazu benötigt, nach einer Änderung in den Parent-Feldern den Baum neu aufzubauen.

xdevtext_add

~ $ICP(0,root)
#tree_add   u=root   c=$T(new_text)   c1=name   t=sys_devtext   s="#page_fill   d=xdevtext_page_text"   si=Y   o=devtext_open

~ $ICP(0,sub)
#tree_add   u=sel   c=$T(new_text)   c1=name   t=sys_devtext   s="#page_fill   d=xdevtext_page_text"   si=Y   o=devtext_open   f_sys_devtext_id=$GUID()   f_parent=$FND(s,sys_devtext_id)

~~

Je nach dem, wo der neue Eintrag eingefügt werden soll, wird u aus root oder sel gesetzt. Handelt es sich um einen untergeordneten Eintrag, dann wird das Feld parent entsprechend gesetzt. Des weiteren muss sys_devtext_id auf einen Wert gesetzt werden, den es noch nicht gibt, damit nicht die Werte des übergeordneten Eintrags aus der Datenbank geladen werden.

xdevtext_eximport

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

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

~~

Beim Ex- und Import gibt es nichts besonderes.

==

==

==

==

==