[Allegro] Vb.312: V39.2 ist da

Bernhard Eversberg b-eversberg at gmx.de
Mo Jun 17 10:34:35 CEST 2019


Verlautbarung 312 zur allegro-Entwicklung                    2019-06-17
-----------------------------------------

Gesamtpaket V39.2 liegt bereit auf www.allegro-b.de/download:
inst-all.exe. Da ist ALLES drin, was man braucht!

Es gibt daneben separat im Unterordner "extra", nur für diejenigen,
die mit .zip umzugehen wissen: inst-all.zip. (Fast keiner braucht 
oder will beides.)

Noch zusätzlich, ebenfalls auf "extra", falls man das Gesamtpaket 
nicht braucht und NUR die Programme will:
a99.zip und a9910.zip, ferner erstmals auch a99a.zip und a9910a.zip
(alcarta ist nicht von Änderungen betroffen)


Neuer set-Befehl: Letzte Position in ViewListe
----------------------------------------------

Dies braucht nur, wer in einem FLEX den Befehl "View" mehrfach benutzt
und dazwischen Bearbeitungen an gefundenen Sätzen vornimmt. In der
FLEX-Sammlung des Gesamtpakets kommt so etwas nicht vor.

Ein Anwender hatte über das Arbeiten mit einer ViewListe geschrieben:
> ich würde gerne eine Liste von Sätzen mit a99 ansteuern, bearbeiten in
> a99, sowie dann wieder die Liste öffnen mit gemerkter Zeilenposition.

Lange, SEHR lange schon, wurde keine Funktion und kein Feature vermißt
oder verlangt. Ein solches Ausmaß an Zufriedenheit mit einer Software ist
vermutlich eine Seltenheit ...

Nun aber ist es wieder mal soweit: Ein Defizit wurde aufgedeckt: 
Wenn man eine ViewListe schließt, einen Satz bearbeitet, dann die 
ViewListe wieder öffnet, wird diese wieder ab Zeile 0 angezeigt, statt an
der Stelle, wo sie geschlossen wurde.
Der Kollege wies dann sogar schon den Lösungsweg:

> Eigentlich wär's ja einfach:
> - Eine a99-Sitzungsvariable in der der gegenwärtige Listen-Index gespeichert wird.
> - Eine Möglichkeit der ViewListe mitzuteilen in welcher Zeile ich war (beim erneuten Aufruf).

Das wurde kurzerhand umgesetzt, und dies sind die neuen FLEX-Befehle:

set vP nummer : View-Position (Listen-Index) setzen

var vP : aktuelle Pos.Nummer der zuletzt geöffneten ViewListe in iV kopieren 

Wenn man also folgendes macht:

var vP
ins $Vzeile

um die Position in $Vzeile festzuhalten, und später dann 

view xyz

um die ViewListe xyz.vw neu zu öffnen, aber noch nicht anzuzeigen,
dann mit

var $Vzeile
set vP

die vorher gesicherte Position einstellen und mit

View 

die Viewliste an dieser Position wieder anzeigen.
(Die $-Variable ist beliebig, es muß aber eine große sein, also nicht 
z.B. $vz, sonst ist der Wert beim nächsten FLEX-Aufruf nicht mehr da. 
Statt $-Variable kann man auch eine #uxy nehmen, das ist aber nicht 
ganz so sicher - eine #uxy kann bereits für andere Zwecke vorhanden sein,
etwa in den Exportparametern.)
Die erste Zeile hat übrigens die Nummer 0, nicht 1.


Verknüpfte Hauptsätze sollen unlöschbar sein
--------------------------------------------
Einem anderen Anwender war aufgefallen:
> ... dass man den Hauptdatensatz löschen kann, auch wenn noch 
> abhängige Unter(?)datensätze vorhanden sind.
> Lt. Handbuch sollte das eigentlich nicht möglich sein,

Das ist richtig. Jedoch hatten die Entwickler, ein wenig über's
Ziel der Freizügigkeit bei hoher Berechtigung (access=4 oder höher)
hinausschießend, die Löschung des Hauptsatzes dem Nutzer zugestanden,
wenn er eine hohe Berechtigung hat.
Dies führte dann unweigerlich dazu, daß "verwaiste" Untersätze zurück-
blieben. Um solche zu finden, hatten wir immerhin (s. Vb.297) einen
FLEX namens detect.flx gemacht, der solche Fälle aufdecken kann, neben
anderen, sonst nicht leicht zu findenden Sätzen.
Löschung eines verknüpften Hauptsatzes sollte allerdings in einem
Datenbanksystem so lange unmöglich sein, wie es noch verknüpfte
Untersätze gibt. Dies wurde nun realisiert: mit V39.2 hat das Programm
damit eine brisante Möglichkeit weniger: auch bei hohem access-Wert 
verweigert a99 die Löschung eines verknüpften Hauptsatzes.
Was aber, könnte die Frage aufkommen, wenn in einer Ergebnismenge alle
verknüpften Untersätze und der Hauptsatz zusammen vorkommen, und man
will diese gesamte Erg.Menge löschen - was mit access=4 geht und nicht
abgeschafft werden sollte? Nun, dann wirft a99 bei dem verknüpften
Hauptsatz die Meldung aus: "Keine Löschung, weil verknüpft". (Das ist
Zeile 255 in uifsger.)
Der oder die verknüpften Hauptsätze in der Erg.Menge bleiben dan
ungelöscht zurück, die Untersätze sind aber weg. Auch das ist ja nicht
so schön, wenn auch nicht ganz so unerfreulich.
Abhilfe, wenn man eine oder mehrere solche Meldungen während des
Löschens einer Erg.Menge erhalten hat: Einfach den Vorgang 
"Global / Globale Löschung" sofort nochmal wiederholen, also mit
derselben Erg.Menge, die dann ja noch vorhanden ist. Die besagten
Sätze sind dann keine "verknüpften Hauptsätze" mehr, denn die
Untersätze sind dann alle weg! (Und werden bei der Aktion nicht
nochmals gelöscht - wie sollte das auch wohl gehen?)









Mehr Informationen über die Mailingliste Allegro