Trick 66: Daten aus
dem Off
Offline-Liste genauer
inspizieren
Aufgabe: Schnell mal
schauen, was in der Offline-Datei WIRKLICH alles
steht.
Warum: Zu sehen bekommt man in der
Offline-Datei mit Alt+q und dann
Alt+w immer nur den jeweils aktuellen und den davor zuletzt
überschriebenen Stand der Bearbeitung eines Satzes, nicht
die evtl. erfolgten mehrfachen, jeweils gespeicherten Korrekturen
während einer Sitzung.
JEDE der GESPEICHERTEN Fassungen ist jedoch in der Offline-Datei
festgehalten! Sollte man darauf nicht zurückgreifen können?
Tip: Was ist die
Offline-Datei? h off eingeben.
Hintergrund:
Es wird tatsächlich jedesmal
beim Speichern eines Satzes seine dabei
überschriebene Vorversion aus
der Datenbank heraus in die Offline-
Datei kopiert. Mit Alt+w
("Wechseln") bekommt man diese Vorversion
wieder zu sehen - aber leider nur
diese, nicht die vorvorige usw.,
obwohl diejenigen aus derselben
Sitzung alle noch in der Offline-
Datei stehen.
Wenn man einen Datensatz
bearbeitet, aber NICHT sofort speichert,
sondern sich erst mal einen anderen
vornimmt, was passiert dann?
Dann wird der bearbeitete Satz nur
schnell noch in die Offline-Datei
geschrieben und erscheint beim
Aufblättern gelb. Erst wenn man ihn
später wirklich speichert,
wird die Vorversion aus der Datenbank
herauskopiert in die Offline-Datei.
Mit Alt+w kriegt man danach diese
alte Fassung wieder zu sehen, dann
aber diese in gelb. Nach mehrfachem
Speichern sieht man stets nur die
letzte Vorversion und die aktuelle,
nicht mehr die älteste oder
irgendwelche Zwischenversionen.
Typischerweise steht, wie sich
hieraus ergibt, die ältere Version
unterhalb ihrer Nachfolgerin in der
realen Offline-Datei!
Es gibt zwei Tricks, mit denen man
die Aufgabe lösen kann:
Der erste besteht darin, daß
man die Offline-Datei in eine Externdatei
verwandelt (extern,dat) und diese
dann laden läßt. Darin sieht man dann
alle Fassungen von
Datensätzen, so wie sie eingelagert wurden (s.o.).
Die Offline-Datei hat den Dateityp
.$$$, ist aber in Wahrheit in
ihrer Struktur nichts anderes als
eine Grunddatei - man braucht sie
also nur umzubenennen oder zu
kopieren! Sie liegt auf dem Temp-
Verzeichnis (bzw. dem mit DbAux=...
in der INI angegebenen Pfad).
Lösung 1: (kurz, aber mit
Vorsicht zu genießen)
---------
Hier ein ganz kleiner FLEX, mit dem
man es bewerkstelligen kann:
var M B ".$$$ extern.dat"
fcopy
erase off
read extern
delete extern.dat
Danach erst Esc, um die
erscheinende Liste zu schließen, dann mit
Alt+q wieder öffnen, um die
Sätze dann als Ganzes zu sehen,
Aber Vorsicht! Irgendwelche noch
nicht gespeicherten Datensätze im
Offline-Speicher sind dann nicht
mehr mit ihrem Originalsatz verbunden
und per Alt+w umschaltbar!
Speichert man sie nun, entstehen neue
Datensätze.
Man KANN den Befehl "erase off"
weglassen, dann sind die noch nicht
gespeicherten Sätze noch
korrekt vorhanden und darunter die Liste der
eingelesenen Datei extern.dat, in
der sie nochmals als unabhängige
Sätze auftreten. Aufpassen, um
dann nicht durcheinander zu kommen ...
Lösung 2: (jederzeit schnell
mal eben zwischendurch möglich, denn es
--------- geht ganz enorm
rasch)
Die genannten Probleme vermeidet
ein anderer Trick: Die Offline-
Datei als solche unberührt
lassen, aber als Datei lesen und in eine
Textdatei verwandeln, die man mit
dem help-Befehl anzeigen läßt:
(am besten in eine Datei
offlist.flx speichern und dann X offlist, ab
V28.2 ist offlist.flx im Gesamtpaket dabei.)
var M B ".$$$"
open
open x offlist
erstes Byte
überspringen, dann satzweise einlesen
fetch b
:loop
fetch b
if ="-1" jump ende
fetch rec
if cancel jump ende
Satz rausschreiben
write
write 13 10 "................" 13
10
jump loop
Das war's, Daten anzeigen
:ende
close x
h offlist
Aus der Anzeige dieser Textdatei
kann man natürlich beliebig mit
Copy&Paste wieder Sachen
entnehmen und in aktuelle Sätze einfügen.
Möglicher Nachteil: Bei sehr
großer Zahl von Sätzen, z.B. nach
umfangreichen globalen Ersetzungen,
ist die Datei offlist evtl.
zu lang. Man kann sie dann aber
außerhalb des Programms mit jedem
Texteditor oder -betrachter lesen,
darin suchen, vergleichen usw.
ZusatzHinweis
Die Offline-Datei ist nicht zentral
für alle Bearbeiter, sondern
individuell nur für den
einzelnen Bearbeiter, und zwar je nach
Einstellung nur die aktuelle
Sitzung (SaveResults=2 in der INI-Datei)
oder übergreifend für
zwei oder mehr Sitzungen (SaveResults=0 oder 1).
Wer also sehen will, was INSGESAMT
in der Datenbank passiert ist,
muß die LOG-Datei auswerten,
denn dort stehen chronologisch alle
gespeicherten Datensätze, und
zwar stets komplett, auch wenn nur
winzige Änderungen gemacht
wurden. Die Werkzeuge dafür sind vorhanden
und bekannt (s. Quick-Liste).