Hallo! Ich begrĂŒĂe Sie zum zweiten Teil des Programmierkurses. Die heutige Folge beschĂ€ftigt sich mit den wichtigsten Befehlen zum Arbeiten mit Relationen. Ich erwĂ€hnte bereits in der Einleitung, daĂ ich nur auf zwei Systeme eingehe, dBMAN und STandard BASE. Dies hat folgende GrĂŒnde:
Beide Programme orientieren sich stark (STBASE sogar 100%) nach dem Standard-Datenbanksystem dBASE III fĂŒr PCâs. WĂ€hrend meiner Ausbildungszeit (DV-Kaufmann) habe ich damit intensiv gearbeitet und mich sehr dafĂŒr begeistert.
ADIMENS hingegen ist zwar auch eine relationale Datenbank, die aber in der Programmierung und Bedienung erheblich von den oben genannten abweicht. AuĂerdem meine ich, ist sie nicht so flexibel gestaltbar und eher fĂŒr Endbenutzer als fĂŒr Programmierer konzipiert. Mit der Sprache ADITALK (siehe Test ST-Computer 3/88) erhielt ADIMENS eine âQuery-Languageâ (Abfragesprache) sowie die Möglichkeit, den Verarbeitungsablauf ĂŒber Schleifen und Bedingungen zu steuern. Vielleicht werde ich fĂŒr spĂ€tere Folgen bei entsprechendem Interesse und Resonanz dieses Programm mit in den Kursus einbeziehen.
Soviel dazu und zum Thema: ich beschreibe die Befehle, um mit Hilfe des Datenbanksystems (DBMS = DATA BASE MANAGEMENT SYSTEM) Dateien aufzubauen.
Ich werde sie verstĂ€ndlicherweise nicht in allen Einzelheiten ausfĂŒhren, denn ich will ja keine Kopie der HandbĂŒcher schreiben. Mein Kurs soll Ihnen den Einstieg in die relationale Welt Schritt fĂŒr Schritt erleichtern. Um alle FĂ€higkeiten des Systems auszunutzen, mĂŒssen Sie auf die vollstĂ€ndige Befehls-Syntax in den HandbĂŒchern zurĂŒckgreifen.
Der nun folgende Teil ist in fĂŒnf Abschnitte gegliedert:
a) die Umsetzung der Relationen in eine Struktur (Aufbau einer Tabelle), sowie deren ggfs, spÀter notwendige Modifikation
b) Erfassen von Daten,
c) Abrufen (Anzeigen und Suchen) von Informationen,
d) Ănderungen vornehmen,
e) Daten löschen
Startet das Datenbankprogramm mit einem Doppelclick auf dem entsprechenden Symbol. Es meldet sich dann der Prompt (bei dBMAN in der obersten Zeile CMD:, STBASE richtet sich nach dem groĂen Vorbild).
Vorsicht!
Das Programm muĂ IMMER mit einem QUIT verlassen werden. Nur so ist sichergestellt, daĂ alle Daten, die sich noch im Rechner befinden, auf Disk zurĂŒckgeschrieben werden. Falls Sie einfach einen Reset machen, um ins Desktop zurĂŒckzugelangen, könnte ein völliger Datenverlust die Folge sein, weil die Dateien nicht sauber geschlossen werden. Das gilt auch fĂŒr bereits bestehende Files, weil u.U. der Datei-Ende-Pointer (EOF) nicht richtig gesetzt wird. Beide Systeme erlauben drei Betriebsarten: zum einen den Kommando-Modus, in dem man sich nach dem Start des Programms befindet (erkennbar am Prompt). Alle eingegebenen Befehle werden sofort interpretiert, ausgefĂŒhrt und Ergebnisse am Bildschirm protokolliert.
Im Programmier-Modus steht ein Full-Screen Editor zur VerfĂŒgung. Es können richtige Programme geschrieben werden. Doch dazu im ĂŒbernĂ€chsten Teil des Kurses mehr. In der dritten Betriebsart, vergleichbar mit âRUNâ beim BASIC, ĂŒbernimmt eine erstellte Programmlogik die Steuerung des Verarbeitungsablaufs.
Schaffe, schaffe, HĂ€usle baue...
Hier sollen natĂŒrlich keine HĂ€user, sondern Tabellen geschaffen (kreiert) werden. Abbildung 1 zeigt eine Relation, die in eine dem Computer verstĂ€ndliche Form umgesetzt werden soll. Ich werde mich auf dieses Beispiel, welches nur als Testobjekt dient, des öfteren beziehen. Der Befehl, mit dem Relationen in Ihrer Struktur definiert werden, lautet: CREATE name < RETURN > (Anmerkung: ich schreibe aus dem Grund der Ăbersichtlichkeit alle SchlĂŒsselwörter in GroĂbuchstaben; es ist aber nicht nötig, denn das System erkennt auch Kleinbuchstaben. STBASE bietet die Möglichkeit, alle SchlĂŒsselwörter mit ihrer Kurzschreibweise zu verwenden, d.h. nur die ersten vier Buchstaben reichen aus).
Mit (name) gibt man der Tabelle einen Namen. Unter dieser Bezeichnung wird die Datei auf der Disk gespeichert und unterliegt so den TOS-Konventionen (Buchstaben und Ziffern, max. 8-stellig). Die Extension darf nicht mit angegeben werden; sie lautet immer .dbf (data base file, in Anlehnung an dBASE III). Der Tabellenname muĂ einmalig vergeben werden und darf nicht bei einer weiteren Relation des gleichen Anwendungsgebietes verwendet werden, weil sonst die alte ĂŒberschrieben wird (Beispiel fĂŒr gĂŒltige Namen: DISK, PROGRAMM, TEST1). Das erscheint logisch, da in einem Diskverzeichnis nicht zweimal der gleiche File-Name auftreten kann.
name |
plz |
ort |
alter |
datum |
groesse |
Meier |
2000 |
Hamburg |
|
01.01.88 |
1.52 |
MĂŒller |
8000 |
MĂŒnchen |
|
02.01.78 |
1.78 |
Otto |
6000 |
Stuttgart |
|
04.01.66 |
1.65 |
Fuchs |
1000 |
Berlin |
06.12.67 |
|
1.55 |
Fehrmann |
2000 |
Hamburg 100 |
|
25.05.45 |
1.92 |
Abb. 1: Beispieltabelle
Das DBMS stellt daraufhin eine Erfassungsmaske auf dem Bildschirm zur VerfĂŒgung, die sich in vier Spalten aufteilt. Mit der < RETURN >-Taste bewegt man sich zur jeweils nĂ€chsten Kolumne.
a) Feldname: Jede DomĂ€ne einer Tabelle muĂ einen Feldnamen erhalten, der in einer Relation einmalig sein muĂ; in einer anderen kann er aber erneut vergeben werden. Die Namenskonvention von Feldern: bis zu 10 Zeichen; erstes Zeichen muĂ ein Buchstabe sein, danach können Ziffern folgen, auch der Unterstrich (_) ist erlaubt (Beispiel: DISK_NR, ANREDE). Mit diesem Namen erfolgt der Zugriff auf die Feldinhalte.
b) Feldtyp: Er bestimmt, welche Art von Informationen die Felder dieser Spalte beinhalten werden.
Das System bietet eine Vielzahl von Möglichkeiten an.
C- alphanumerisches Feld (z.B. fĂŒr Namen, Anschriften)
N- numerisches Feld, mit dem gerechnet werden soll
D- Datumsfeld. Das System enthĂ€lt spezielle Kalenderfunktionen, mit denen Datumsangaben behandelt werden (PrĂŒfung auf GĂŒltigkeit, Vergleiche, usw.), z.B. wird bei der Eingabe der 29.02.87 abgelehnt, weil es ein ungĂŒltiges Datum ist.
Es gibt noch weitere Typen, die aber selten benutzt werden bzw. durch andere ersetzbar sind (z.B. logische Felder) und deshalb hier nicht beschrieben werden sollen. Die genannten vier Typen decken fast alle Aufgabengebiete ab.
c) LÀnge: sie gibt die Breite des Feldes an. Es muà die GesamtlÀnge eingegeben werden, z.B. muà bei einer dreistelligen Zahl mit zwei Nachkommastellen hier eine sechs (6) eingetragen werden.
Bei Datumsfeldern (Typ D) ist hier keine Angabe nötig; die LĂ€nge wird automatisch nach DrĂŒcken von < RETURN > auf 8 vorgegeben.
d) Nachkommastellen: FĂŒr numerische Felder kann optional eine Stellenzahl nach dem Komma erfaĂt werden. Diese kommt in das vierte Feld der Erfassungsmaske.
Sind alle Felder beschrieben, beendet man mit CTRL-S den Aufbau. Die Datei, deren Strukturdefinition in Abbildung (2) wiedergegeben ist, steht nun zur VerfĂŒgung.
Mit dem Befehl USE name eröffnet man die Tabelle zur Bearbeitung. Falls es erforderlich wird, sich spĂ€ter diese festgelegte Struktur der Datei anzuschauen, so kann der Aufbau mit LIST STRUCTURE oder LIST STRU (STBASE) angezeigt werden. Stellt man fest, daĂ die Tabelle in ihrer Struktur geĂ€ndert werden muĂ (z.B. FeldlĂ€nge zu klein. HinzufĂŒgen weiterer Felder. Löschen von Feldern, Umbennung von Feldnamen usw.) ermöglicht MODIFY STRUCTURE oder MODI STRU die nachtrĂ€gliche Ănderung des Dateiaufbaus. Dabei gehen bereits erfaĂte Informationen nicht verloren, es sei denn, man entfernt oder verkleinert Felder.
Das DBMS legt zur StrukturĂ€nderung eine Kopie der Datei an, Ă€ndert das Original und kopiert dann aus der Zwischendatei die Daten zurĂŒck. Die Ănderungen können in der bereits bekannten Maske vorgenommen werden.
Das Erfassen von Daten
FĂŒr die Benutzer von dBMAN gilt: Das Datumsformat ist grundsĂ€tzlich in der Schreibweise MM/TT/JJ. Da dies in Deutschland nicht ĂŒblich ist, muĂ in die Kommando-Zeile SET DATE TO 1 eingegeben werden, um die ânormaleâ Form (TT/MM/JJ) zu erhalten. Besonders bei Eingaben ist dieser Punkt wichtig, weil das System sonst beharrlich z.B. den 25.01.88 ablehnt (es interpretiert daraus nĂ€mlich einen 25. Monat, den es ja nicht gibt).
Bei STBASE braucht keine Angabe gemacht zu werden (das System âschlucktâ zwar den Befehl SET DATE GERMAN; er ist aber ohne Wirkung). Die Datumseingabe geschieht in deutschem Format; leider wird es umgekehrt abgespeichert (MM/TT/JJ). Zum Aufnehmen neuer Informationen stehen zwei Befehle bereit. Zum einen kann man an beliebigen Stellen DatensĂ€tze einfĂŒgen (INSERT, nur bei STBASE) oder an das Ende neue Tupel anfĂŒgen (APPEND). Da unsere Beispieltabelle noch leer ist, benutzen wir den APPEND-Befehl und schreiben einfach in die Kommandozeile APPEND und erfassen so den ersten Datensatz der Tabelle mit Hilfe einer Ediermaske. Links befinden sich die Datenfeldbezeichnungen. rechts die Eingabefelder.
Abb. 2: Festlegen einer Struktur
Man merkt, daĂ in numerisch definierte Felder nur Ziffern eingegeben werden können. Bei Dezimalzahlen erscheint stellengerecht das Komma (als Punkt). Das System ĂŒberprĂŒft automatisch die eingegebenen Daten auf GĂŒltigkeit und erspart so dem Programmierer die umstĂ€ndliche Codierung von PlausiblitĂ€tskontrollen. Sogar Datumsangaben werden kontrolliert und logisch falsche Eingaben abgewiesen.
Wir fĂŒllen, um Testdaten fĂŒr folgende Ăbungen vorzubereiten, die Datei mit ca. 30 Phantasiedaten. Lassen Sie bitte das Feld âalterâ noch leer; es wird zur Verdeutlichung eines anderen Befehls im âjungfrĂ€ulichenâ Zustand benötigt.
Innerhalb der Erfassungsmaske können die Cursor-Tasten zum Edieren benutzt werden. Nach der Eingabe des letzten Feldes eines Satzes erscheint sofort eine neue, leere Maske (bei dB MAN muĂ CTRL-N gedrĂŒckt werden).
Sollen keine weiteren Daten erfaĂt werden, so drĂŒckt man nach Erfassung des letzten Satzes CTRL-S. Es meldet sich dann der Prompt des Systems wieder.
Zum VerstĂ€ndnis: das System fĂŒhrt intern einen Zeiger, der auf den aktuellen Datensatz verweist (Datensatznummer). Will man zwischen den ersten und zweiten Satz einen neuen einfĂŒgen, so schreibt man GO 1 und anschlieĂend INSERT. Mit dem GO-Befehl setzt man den Datensatzzeiger auf einen ganz bestimmten Satz. Jeder Satz ist so einzeln ansprechbar. GO TOP setzt den Zeiger auf den ersten, GO BOTTOM auf den letzten Satz der Tabelle. Mit SKIP n bewegt man sich relativ zur aktuellen Position. Ist n positiv, so springt man Richtung Datei-Ende, sonst zum Anfang. So gelangt man mit SKIP 1 zum nĂ€chsten Satz (hier könnte die â 1 â weggelassen werden); mit SKIP -2 setzt man den Zeiger auf den vorvorletzten Datensatz. In der internen Variablen RECNO() ist dieser Zeiger gespeichert. Anzeigen mit: ? RECNO() (Das Fragezeichen ist ja wohl vom BASIC her als PRINT -Befehl hinlĂ€nglich bekannt !!) Mit dem INSERT werden die Datensatznummern der folgenden Zeilen jeweils um 1 erhöht. Der Befehl kann auch mit dem Zusatz BEFORE versehen sein. Dann erfolgt die EinfĂŒgung vor der aktuellen Zeile.
Am LIST bzw. LOCATE-Befehl erkennt man deutlich den descriptiven Charakter der Sprache. Die Formulierung kommt der Umgangssprache sehr nahe. Mit GO TOP und anschlieĂend LIST ALL werden alle DatensĂ€tze gelistet (ei, wer hĂ€tte das gedacht ?). Ganz links vor jeder Zeile steht die Nummer, unter der der Satz gespeichert ist. Sie kann mit der Erweiterung LIST OFF ALL unterdrĂŒckt werden.
Sind in der Tabelle viele SĂ€tze gespeichert, so scrollen sie schnell ĂŒber den Bildschirm. Der DISPLAY-Befehl verhindert das Scrollen und stoppt die Ausgabe nach einer Seite und wartet auf einen Tastendruck zum Weitermachen (DISPLAY ALL).
ALL gibt den Bereich an. der gezeigt werden soll. Möglich wĂ€re auch ein LIST NEXT 5, welches die nĂ€chsten fĂŒnf SĂ€tze ab der aktuellen Position listet, sofern vorhanden.
Dies ist aber nur die einfachste Form der Anwendung. Man kann Bedingungen stellen und so einzelne SĂ€tze selektiv herausgreifen. Möchte man alle Personen des Wohnortes Hamburg, so schreibt man LIST ALL FOR ort = âHamburgâ zum Anzeigen ausgewĂ€hlter DatensĂ€tze. (< ort > ist der Feldname !) Als Vergleichsoperatoren sind erlaubt: < > =, sowie deren Kombinationen (<>, >=, <=). Die Operationen sind fĂŒr alle vier genannten Feldtypen erlaubt, sogar bei Datumsfeldern: LIST ALL FOR datum > CTOD (â02.01.77') Die Funktion CTOD bedeutet âcharacter to dateâ und wandelt ein alphanumerisches Feld in den Typ âDatumâ um. Der Inhalt bleibt derselbe. Andernfalls könnte die Operation nicht ausgefĂŒhrt werden, da stets auf beiden Seiten die Datentypen ĂŒbereinstimmen mĂŒssen. Ein numerisches Feld kann z.B. auch nicht mit âABCâ verknĂŒpft werden. Das DBMS stellt aber fĂŒr alle FĂ€lle die nötigen Umwandlungsfunktionen bereit:
STR(alter,n) wandelt numerisch in alphanumerisch mit der FeldlÀnge n.
DTOC(datum) Datum nach Character
VAL(name) konvertiert String in Zahlen, beginnend von links. Beim Auftreten von Buchstaben bricht die Funktion ab, Beispiel: VAL(â12ABâ) ergibt 12
Leider (s.o.) sind bei STBASE die Datumsfelder im Monat und Tag vertauscht gespeichert. So wird aus dem 02.01.77 der 1. Februar und nicht der 2. Januar. Darauf mĂŒĂen Sie achten! Es ist möglich, auch auf Teile eines Feldes zuzugreifen. Der Substring-Operator $ ermöglicht die Suche eines Teilstrings innerhalb eines bestimmten Feldes.
LIST ALL FOR âburgâ$ort Diese Anweisung sucht alle Orte, in denen âbĂŒrgâ vorkommt. Dabei ist es unerheblich, an welcher Stelle sich diese Kombination befindet. Man findet also âHamburgâ wie auch âHamburg 100â. Die Ausgabe ĂŒber Drucker ist mit dem Zusatz âTO PRINTâ möglich.
Sollen die DatensĂ€tze nicht alle nacheinander, sondern einzeln ausgegeben werden, so bietet sich der Befehl LOCATE an. Er ist in der Wirkungsweise Ă€hnlich wie LIST, bleibt jedoch nach dem ersten zutreffenden Datensatz stehen, der dann mit DISPLAY angezeigt werden kann. Mit CONTINUE wird die Suche fortgesetzt. LOCATE ALL FOR âAâ $name Ein folgender DISPLAY zeigt den gefundenen Datensatz an. Einzelne Felder sind ĂŒber ihren Feldnamen abrufbar: ? ort oder ? DTOC(datum) (Datumsfelder können ohne Umwandlung s.o. nicht angezeigt werden!)
Ănderungen
Daten unterliegen stĂ€ndigen Ănderungen, sei es, daĂ Falscheingaben korrigiert oder alte Daten an aktuelle Werte angepaĂt werden mĂŒssen.
Die Datenbanksysteme bieten mit dem Befehl EDIT bzw. REPLACE die Möglichkeit, bestehende Daten mit neuen Werten zu ĂŒberschreiben. Dazu muĂ der Datensatzzeiger auf den zu Ă€ndernden Satz gestellt werden, z.B. GO 5. Man kann aber auch einfacher schreiben EDIT 5 Damit wird die Maske (wie bei APPEND) angezeigt, in der die alten Daten modifizierbar sind.
Mit dem REPLACE-Befehl können einzelne Felder sofort geÀndert werden, ohne die Maske anzuzeigen. Dies ist besonders spÀter in Programmen nötig.
So erfolgt mit GO 5 und anschlieĂendem REPLACE name WITH 'Egon MĂŒllerâ die Ănderung des Namens im fĂŒnften Satz. Wie bei allen anderen Befehlen kann die Verarbeitung auf mehrere SĂ€tze gleichzeitig wirken:
REPLACE ALL alter WITH YEAR(DATE())-YEAR(datum)
Wow, das ist ein Ausdruck! Er ersetzt alle Felder, in denen das Alter steht (zunÀchst noch leer, s.o.) mit dem errechneten aktuellen Alter. Und das geht so:
- DATE() enthÀlt das Systemdatum
- die Funktion YEAR(...) ermittelt das Jahr aus einem Datum
Vom heutigen Jahr wird also das Geburtsjahr abgezogen und in das Feld âalterâ gestellt. Dies geschieht bei allen DatensĂ€tzen !! Mit LIST ALL kann anschlieĂend das Ergebnis kontrolliert werden.
Löschen (Ja/Nein)???
Soll einzelner Satz aus einer Tabelle entfernt werden, benutzt man DELETE, womit der aktuelle Satz gelöscht wird - nein, noch nicht endgĂŒltig. Er kann mit RECALL wieder zum Leben erweckt werden. Soll die Löschung aber tatsĂ€chlich durchgefĂŒhrt werden, so muĂ nach dem DELETE ein PACK folgen, damit die fortlaufende Datensatznumerierung wieder in eine kontinuierlich aufsteigende Reihenfolge gebracht wird. Löschen wir nĂ€mlich aus einer Tabelle mit 5 SĂ€tzen den ersten, so mĂŒssen die ĂŒbrigen eine neue Nummer erhalten (1...4).
Der âDELETEâ markiert lediglich die DatensĂ€tze mit einem Zeichen (*), daĂ sie zum Löschen vorbereitet sind. Um diese SĂ€tze von der weiteren Verarbeitung auszuschlieĂen, formuliert man SET DELETED ON. Dann werden mit LIST ALL die markierten SĂ€tze nicht mehr mit ausgedruckt. SET DELETED OFF behandelt die markierten Zeilen, als wĂ€ren sie nicht gelöscht.
Um alle SĂ€tze einer Relation zu löschen, könnte man z.B. so Vorgehen DELETE ALL und PACK. Dieser Vorgang wĂŒrde aber recht lange dauern, da erst jeder Satz zum Löschen markiert und anschlieĂend physisch auf der Disk entfernt werden mĂŒĂte. Eleganter und sehr viel schneller ar-beit der ZAP. Er löscht in einem Arbeitsgang (nach einer Sicherheitsabfrage) alle SĂ€tze einer Datei, nicht jedoch die Struktur!
So, das waren die grundsĂ€tzlichen Befehle, um mit einer Relation zu arbeiten. Es dĂŒrfte Ihnen nun nicht mehr schwerfallen, die Tabellen des ersten Teils zu codieren (mit CRE-ATE) und anschlieĂend mit Daten zu fĂŒllen. Probieren Sie es doch einfach aus. Beachten Sie aber bitte:
Bevor Sie die Arbeit mit dem Datenbanksystem beenden, vergessen Sie das KWITT nicht!!!
Schwester, bitte Skapell!!
Ich sprach im ersten Teil von Mengen- und Relationenoperationen, auf die ich noch kurz eingehen möchte, a) Mengenoperationen beziehen sich immer auf die gesamte Tabelle. Als Beispiel nenne ich den SUM-Befehl, der die Summe aller Feldinhalte einer numerischen DomÀne ermittelt (hier: Berechnung des Gesamtalters aller Personen). Das Ergebnis wird auf dem Bildschirm angezeigt.
SUM alter - Die AusfĂŒhrung dieses Befehls kann von Bedingungen (FOR) anhĂ€ngig gemacht werden (siehe LIST).
Ein weiterer Befehl, der die Tabelle als Einheit betrachtet, ist COUNT. Er zĂ€hlt alle DatensĂ€tze; auch in Verbindung mit FOR, z.B. COUNT FOR name = âMeierâ ermittelt, wieviele Personen unter diesem Namen erfaĂt sind.
Ein âganz tollerâ Befehl ist SORT. Mit dessen Hilfe kann eine gesamte Datei nach bestimmten Feldern auf- oder absteigend sortiert werden. Als Standardwert gilt eine aufsteigende Sortierfolge:
SORT ON name TO temp Einfach, oder ? Das klingt doch echt wie normale Sprache. Programmieren Sie so etwas mal in BASIC oder C !!!
Die nach Namen sortierte Datei ist in der Tabelle temp gespeichert. Mit USE temp und LIST ALL können wir uns das Ergebnis betrachten. Leider erzeugt ein SORT eine sortierte Kopie der alten Datei. Dies kann bei groĂen Datenmengen zu EngpĂ€ssen fĂŒhren (besonders auf Disketten). Auch ist die Tabelle immer nur unmittelbar nach dem SORT in richtiger Reihenfolge. NachtrĂ€gliche Ănderungen erfordern grundsĂ€tzlich eine Neusortierung.
In der nÀchsten Ausgabe werde ich eine elegantere Form der Sortierung beschreiben, das Indizieren. Hierbei werden neu eingegebene SÀtze sofort in die richtige Reihenfolge gebracht, b) Relationenoperationen ermöglichen die gezielte Auswahl von Zeilen und Spalten. Die Sicht auf eine Tabelle wird eingeschrÀnkt; die Datei erscheint kleiner, obwohl mehr SÀtze bzw. Felder gespeichert sind.
LIST name,ort zeigt aus der Relation nur die angegebenen Felder. Die anderen Spalten sind nicht erreichbar. SET FILTER TO plz = 8000 und LIST ALL (Der Vergleichsoperator darf hier nicht in Hochkommata eingeschlossen sein, weil es sich um ein numerisches Feld handelt!) Mit dieser Anweisung werden nur noch die Personen aus MĂŒnchen betrachtet. Die Tabelle ist scheinbar geschrumpft, denn selbst mit LIST ALL
werden nicht alle gespeicherten SĂ€tze gelistet. Der Filter blendet also Zeilen aus und kann auch auf mehrere Spalten gleichzeitig wirken (mit einer logischen UND-VerknĂŒpfung)
SET FILTER TO plz = 8000 .and. datum = CTOD(â01.01.77')
(Merke: das Setzen eines neuen Filters hebt die vorherige Wirkung wieder auf) Wenn ich schon dabei bin: Folgende logische Operationen sind möglich:
.NOT. nicht .AND. und .OR. oder Sie können nicht nur beim Filtern, sondern auch beim LIST, LOCATE und DELETE verwendet werden, um die Verarbeitung von Bedingungen abhÀngig zu machen.
Ein SET FILTER TO ohne Parameter stellt den ursprĂŒnglichen normalen Zustand her. Ăbrigens, wenn Sie die dauernden Systemmeldungen stören, dann stellen Sie sie doch einfach ab. Dann werden aber auch Ergebnisse (z.B. COUNT, SUM) nicht mehr angezeigt.
SET TALK OFF Das will ich jetzt auch tun und beende damit den zweiten Teil. Hoffentlich habt Ihr anhand ausgesuchter Beispiele die LeistungsfÀhigkeit des DBMS erkannt. Gerade bei der Verarbeitung von riesigen Datenmengen macht sich der Einsatz in einer enormen Arbeitserleichterung bemerkbar.
Freut Sie sich schon auf die nÀchste Ausgabe. Denn da geht ganz fix die Post ab mit Sortierung und Datensuche.
Paul Fischer
Quellen: dBASE III Das relationale Datenbanksystem fĂŒr 16-Bit- Computer.
Autor: Dr. Peter Albrecht,
Verlag: Markt und Technik