[Allegro] Version 35.10

Thomas Berger ThB at Gymel.com
Di Nov 17 16:17:55 CET 2015


Hallo Frau Mettler,


> wir haben unseren o-bestel.flx jetzt so umprogrammiert:
> ....
> yesno Bestellung speichern? (Nein: zurueck zum Formular, Abbruch: loeschen)
> if no jump form
> if cancel jump exit
> 
> var 124 ":"
> ins #uoR
> 
> #uoP o b
> #uoF 
> var "uoR=" #uoR ", uoF=" #uoF ", uoP=" #uoP "."
> //mes   //war nur für Testzwecke
> set tbl loc           // .TBL blockieren, damit keiner speichern kann 
> perf nextnum          // ermittelt die Nummer, liefert sie in #uoY 
> if ="-1" jump fehler  // Nummernermittlung nicht gelungen 

Das folgende

> z=6
> var #uoY JL0
> ins #uoY
> var "b" #uoY    // <praefix = eigenes, gewünschtes Präfix im Datensatz 
> ins $$-#9DA              // nicht im Index! #nnn = Feld im Datensatz

zeigt, dass nextnum.flx wohl noch nicht flexibel genug ist:
Man koennte dort zwar das Praefix "b" einstellen, muesste dann
aber auf die Buendigkeit (auf 6 Stellen mit Nullen aufgefuellt)
verzichten. Was dann wiederum Probleme gibt, wenn sich beim
Hochzaehlen der Nummer die Stellenzahl aendert...


> input 252 
> put free    // Satz speichern, zugl. TBL freigeben (erst ab V25.9) 
> //set tbl free      //  s. Mails Diskussionsliste: vor dem Aufruf von onput soll die tbl freigegeben werden
> exec onput
> include nextnum.flx
> 
> 
> show rec    // braucht man das einschl. end?
> var ""
> ins #uoI
> end
> 
> .....
> 
> 
> Komischerweise funktioniert es so korrekt, aber nicht, wenn man exec
> onput wegnimmt, obwohl jetzt onput.flx nicht ausgeführt wird. ????

> Schadet es wenn wir es so belassen - konnten bisher beim Testen noch
> kein Problem feststellen.

Das "exec onput" speichert den Satz noch einmal und aktualisiert dabei
die Anzeige. Dieser Aufruf kehrt nicht zurueck, und das ist vermutlich
Ihr Problem "funktioniert nicht korrekt" gewesen:

Ohne dieses "exec ..." wird ja nach dem Speichern mittels "put free"
das ausgefuehrt, das durch das "include nextnum.flx" an dieser Stelle
in Ihren o-bestel.flx eingebunden ist: Also wird noch einmal die
Nummernvergabe ausgefuehrt, die darin enthaltenen abschliessenden
"return" haben aber keine Wirkung (die Sache wurde diesmal ja nicht
mit "perform" aufgerufen, sondern die Abarbeitung ist einfach so
in das Unterprogramm hineingelaufen) und endet daher bei einem
abschliessenden "end" irgendwo in nextnum.flx: Ihr show rec und so
weiter wird dann auch nicht ausgefuehrt. (soweit die Theorie. In
durch Sie inspirierten Mails der letzten Woche habe ich ja aufgezeigt,
dass nextnum.flx recht unsensibel ist und den aktuellen Satz
wieder eingelbt)

Versuchen Sie es doch einmal ohne das "exec onput", aber mit einer
Verlagerung der Zeile
include nextnum.flx

hinter die Zeile mit dem

end

die Sie oben gezeigt haben (z.B., es darf gerne ein beliebiges "end"
im Flex sein, auch andere Stellen sind o.k., Hauptsache es ist
gewaehrleistet dass da nichts aus Versehen hineinrasseln kann)

viele Gruesse
Thomas Berger





Mehr Informationen über die Mailingliste Allegro