allegro-Fortbildung 6 Fortgeschrittene Erfassungshilfen 6.3 Der Reservespeicher, früher "Hintergrundspeicher" Verwechslungsgefahr! -------------------- Der Reservespeicher ist was ganz anderes als der Offline-Speicher! ("Hintergrundspeicher" ist ein veralteter Name für "Reservespeicher", d.h. er meinte genau dasselbe.) Reserve: [gab es auch schon bei PRESTO] Mit Alt+r zu sehen Eine lange Liste aus lauter *einzelnen Datenfeldern*: Datenfelder aus vorangegangenen Sätzen + #u-Variablen Offline: [gab es bei PRESTO noch nicht] Mit Alt+q zu sehen Eine Ansammlung von *ganzen Datensätzen*: - Vorher bearbeitete, und - Neu eingelesene aus Grunddateien (.ald) oder Externdateien (.adt) Viele Offline-Sätze sind u.U. noch nicht abgespeichert, also beim Suchen noch nicht zu finden - daher der Name "Offline" Zum Offline-Speicher siehe Lektion 13.5, aber es gibt einen noch viel längeren und gar nicht so schlechten Text: h off Nun aber zum Thema *Reservespeicher* (und *nur* zu diesem) In Lektion 5.3.2 wurde erklärt: Mit Alt+k ausgewählte Felder aus dem momentanen Datensatz herauskopieren in den Reservespeicher, um später darauf zurückzugreifen mit Alt+r und erneut Alt+k. Erfunden wurde der Res.Sp., um sowas wie ein Ersatzteillager immer bei der Hand zu haben. Der *Phrasenspeicher* ist was ganz Ähnliches, der Unterschied ist nur, daß im Reservespeicher komplette Datenfelder einschließlich Kategorienummer gelagert sind, im Phrasenspeicher dagegen beliebige Zeichenfolgen ("strings"), die an jeder beliebigen Stelle einkopiert werden können in Datenfelder, aber sogar auch in das Anzeigefeld. Alt+r, das weiß inzwischen jeder(?), schaltet die Anzeige des Reserve- speichers ein und wieder aus (daher das 'r'). Die Schrift wechselt auf kursiv, damit man sofort merkt, was man da gerade sieht. Magie des Punktes: Aber nicht nur mit Alt+k kann man Felder aus der Reserve rüberholen! Es gibt noch was Besseres: in einem FORMULAR, wenn der Cursor in einem Feld steht, das übernommen werden kann: nur . eingeben, also einen Punkt, und Enter - schon erscheint eine Kopie des betr. Feldes aus der Tiefe der Reserven. Mehr dazu unten: >>ExtraTip Wie bei DOS (wer's noch weiß: wenn man #a gegeben hatte): Ein Reservefeld kann man bearbeiten und dann mit Enter in den aktuellen Datensatz überführen. Hier wird die Reservefunktion besonders deutlich. Im Reservespeicher stehen aber nicht nur echte Datenfelder, sondern weiter unten sieht man lauter Zeilen, die alle mit #u beginnen. Das sind die "Nutzervariablen" (daher das u: für "user"). Diese #u-Zeilen (Felder) im Reservespeicher kann man, anders als bei DOS, sogar bearbeiten: Enter drücken, dann erscheint das ausgewählte Feld im Schreibfeld, dort kann man sich daran zu schaffen machen, erneutes Enter transportiert es zurück in die Liste. Brauchbar ist das z.B. für die Zeilen, die mit #uX beginnen, denn das sind die zu den Flip-Buttons gehörigen Befehle. Etwas füer FLEXologen, die online und real-time was testen wollen! Hat man vorn die Nummer geändert, wird das Feld mit dieser Nummer einsortiert, das alte bleibt dann unter der alten Nummer unverändert stehen! Beseitigen kann man jede Zeile so: Balken drauf, Entf-Taste. Ohne Nachfrage ist sie dann aber sofort und nicht-mehr-rückholbar verschwunden! #u-Variablen haben immer die Form #uxy, das 'u' it verbindlich, xy sind irgendwelche Zeichen, auch Sonderzeichen sind erlaubt. Mehr als zwei gehen nicht, auch nicht bei breiteren Karegoriesystemen wie MARC oder Pica. [Das ist eine arge Begrenzung, klar. In der FLEX-Sprache gibt es viel bessere Variablen: $name und &name, mit fast beliebig langen Namen. Vorteil der #u-Variablen ist, daß sie sowohl in den Exportparametern als auch in der FLEX-Sprache verfügbar sind. So kann man in einem Exportvorgang #u-Variablen setzen und diese hernach in eime FLEX verwerten oder umgekehrt.] Einige #u-Variablen haben ganz besondere Funktionen: (natürlich ist das nicht besonders geschickt, eher unglücklich, aber "historisch gewachsen") #uX0 ... #uX9 : Befehle für die Flip-Buttons (9 und 10 nicht sichtbar) #uX5 wird ausgeführt, wenn man Alt+5 drückt. Diese Einträge bleiben über die Sitzung hinaus erhalten, die anderen alle nicht. #uYx Flipzeilen. Diese stellen sich dauernd automatisch ein. #uZx Schauen Sie mal genau hin, was da steht! Es hängt immer damit zusammen, was gerade in der Anzeige steht. #uX= AutoFLEXe (etwas für FLEXperten) #uX: (siehe dazu h flex, Abschnitt E) #uX; #uAL Wenn diese besetzt sind, #uAU ist ALFA eingeschaltet, wenn nicht, ist es aus. #uOR Belegt, wenn ORDER (1) oder ZAboM (2) initialisiert ist #uOZ Belegt, wenn ZAboM initialisiert ist #ua? Belegt mit Jahreszahlen, wenn aLF initialisiert ist (Jahreszahlen der geladenen Kalendersätze) #uxa Zuletzt benutzte Indexeintragung #uxb Nummer des zuletzt benutzten Registers #uzC Diese 3 entstehen beim FLEX-Befehl var zc, #uzD (siehe dazu h xcstring ) #uzF #uVi In RTF-Texten als eingebettete Variable %i verwendbar #uzo Wenn 000, dann ist es ein Online-Satz, 001 Offline-Satz Die anderen werden von den Export- und Indexparametern verwendet, aber auch von FLEX-Makros. Wer sich auf diesen Gebieten betätigt, muß gut aufpassen, nicht dieselbe Variable für ganz verschiedene Zwecke zu verwenden, sonst kann's Überraschungen geben! In den StandardFLEXen wird für die Namen fast immer eine Kombination von einem Klein- plus einem Großbuchstaben genommen, z.B. #ucW, was aber nicht zwingend ist. #u1 und #u2 sind keine Nutzervariablen, sondern Hilfsvariablen, die ganz oben in der Satzanzeige erscheinen, nicht im Reservespeicher. Sie gehören zum Datensatz und werden auch mit ihm gespeichert, wenn sie vorkommen. Man kann sie normal eingeben und bearbeiten. Sie dienen einigen internen Funktionen, vor allem in den Index- parametern, aber auch beim Sortieren. Der besondere Vorteil: #u1 / #u2 können in JEDER Datenbank vorkommen, auch wenn sie nicht das A-Schema hat. >>ExtraTip Im DOS-Programm PRESTO ist/war es so: Wenn man einen Satz speichert, dann werden seine Datenfelder automatisch in den Reservespeicher kopiert. Beim nächsten Satz kann man darauf zurückgreifen, indem man bei der Eingabe z.B. eingibt: .40 Dann wird die #40 aus der Reserve in den Vordergrund geholt, also in den neuen Datensatz kopiert. Wenn man das in a99 auch nutzen will, muß folgendes gegeben sein: -- In der INI-Datei muß stehen SaveAsk=2 -- und in der FLEX-Datei onput.flx muß stehen :save copy reserve Für die DemoBank ist das so eingestellt! Wenn Sie es für die eigene Bank nicht wollen, also entweder SaveAsk in der eigenen INI anders setzen oder den Befehl copy reserve aus der onput.flx rausnehmen. (Diese Datei liegt auf dem FLEX-Verzeichnis. Kopieren auf das eigene Datenbankverzeichnis und dort ändern!) >>ExperTip Es gibt einen FLEX-Befehl transfer #nnn Der kopiert das Feld #nnn aus der Reserve in die interne Variable iV. Wozu das gut sein kann, erläutert die Doku: h xtransfe |