[Allegro] if main bei geladenem Benutzersatz 'fliegt'
Anando Eger
a.eger at aneg-dv.de
Mi Mär 14 09:46:00 CET 2007
Hallo Herr Eversberg,
On 14 Mar 2007 at 7:49, Bernhard Eversberg wrote:
> Anando Eger schrieb:
> >
> > wenn ich in der demo2-Datenbank einen Benutzer (z.B. Monika Lewinski)
> > in die Anzeige hole und dann im Schreibfeld
> >
> > x if main mes Hauptsatz
> >
> > eingebe, verabschiedet sich a99 reproduzierbar mit einem Anwendungsfehler.
> > ...
> Das kommt davon, wenn ein Satz keine richtige #00 hat sondern dort nur -
> steht. Damit hat er keinen ordentlichen Primärschlüssel, der aber
> wichtig ist, um die Bedingung "main" zu verifizieren. Eine unerwünschte
> Nebenwirkung eines Tricks also.
> Abhilfe: in den Indexparametern dafür sorgen, daß der Satz einen
> ordentlichen Primärschlüssel bekommt, was in diesem Fall nur die
> Lesernummer in #9B sein kann. Dazu genügt eine winzige Ergänzung in
>
> cat.api, Zeile 514:
>
> !00 e"[=-]" b0 F32 p"|9" SWD: e"-" wg. Pruefziff
>
> Das b0 sorgt dafür daß die Zeile abgebrochen wird, wenn zu dem Zeitpunkt
> der Arbeitstext leer ist. Und dann entsteht die Lesernummer als
> Primärschlüssel...
mmm, das trifft für die Demo-DB zu; in den eigenen Konfigurationen (DOS-ALF-
konform ;-) ist die Benutzernummer automatisch der Primärschlüssel und die #00
wird nicht verwendet... (ak-Zeile mit #9B steht vor einer mit #00)
> Wir werden uns aber drum kümmern, denn die Situation kann ja auch bei
> defizitären Sätzen auftreten, die man unbeabsichtigt erzeugt hat, etwa
> als Ergebnis eines Imports. Dann wird "if main" in jedem Fall ein
> negatives Resultat haben, wie es sein sollte.
Ich bin eigentlich nur durch Zufall auf "if main" gestoßen, weil ich mir
ein allgemeines Datensatz-Status-Flex bauen wollte. "if main" müßte ja
typisch parameterierungsabhängig sein.
Wenn ich vorher testen müßte, ob ich die Funktion anwenden darf, verliert
sie ihren Vorteil gegenüber Konstruktionen wie z.B.
var "|: " #00(e"[=- ]") "+?"\f1nd
if not no ...
oder wenn man nicht nachladen und Zeit sparen will:
var #00(e"[=- ]") "+"\ins #uXX
var "-1 |: " #uXX\qrix\var (f" " b" " )\ins #uXY\var #uXX
if =#uXY ...
Ich nehme an, daß "if main" wahr ist, wenn
- die #00 des aktuell geladenen Satzes kein "+" enthält
- der Inhalt der #00 des aktuell geladenen Satzes im Register 10 zu finden
ist (mit oder ohne Umcodierung? Werden hier evtl. intern die Indexparameter
zu Rate gezogen?)
- im Register 10 mindestens ein weiterer Eintrag der Form
(inhalt der #00)+(irgendwas) vorhanden ist
Ist das richtig?
Gibt es evtl. weitere Bedingungen, die erfüllt sein müssen, damit "main"
erkannt wird?
Viele Grüße
Anando Eger
-----------------------------------------------------------------------------
Anando Eger Datenverarbeitung
Herr Dipl.-Ing. Anando Eger
Gustav-Voigt-Str. 24
01156 Dresden
Tel.: +49 (0)351 454 1236 http://www.aneg-dv.de
Fax: +49 (0)351 454 1238 mailto:a.eger at aneg-dv.de
-----------------------------------------------------------------------------
Mehr Informationen über die Mailingliste Allegro