Präsentation herunterladen
Veröffentlicht von:Eberhard Lappe Geändert vor über 11 Jahren
1
Grundlagen der Tabellen von FoxPro/Windows und Microsoft Visual FoxPro
Arbeiten mit Tabellen Grundlagen der Tabellen von FoxPro/Windows und Microsoft Visual FoxPro
2
Diese Schulung dient zur Angleichung
des Basiswissens der Schulungsteilnehmer über die Grundlagen der Programmiersprache Xbase und der DBF- basierenden Datenbanksysteme.
3
Themenübersicht Tabellen Datensätze Indizes Relationen Codepages
Collate-Sequenzen Rushmore-Optimierung Netzwerke Verzeichnisse Low-Level-Dateien
4
Tabellen und Datensätze
Arbeiten mit Tabellen und Datensätzen unter Microsoft Visual FoxPro
5
Tabellenformat Tabellen (*.DBF) Memodateien (*.FPT)
Header mit Strukturinformation Feste Feldlänge (außer Memo/General) und Feste Feldanzahl = Feste Satzlänge Referenz auf Memo- und Index-Datei Memodateien (*.FPT) Mehrfachindexdateien (*.CDX)
6
Öffnen von Tabellen USE DatabaseName.Table | SQL-View
IN nWorkArea | cTableAlias [ONLINE], [ADMIN] (nur für Offline-Views) AGAIN NOREQUERY (nur Remote) / NODATA (nur Views) INDEX / ORDER TAG OF ASCENDING | DESCENDING (für Order) ALIAS EXCLUSIVE, SHARED NOUPDATE
7
Arbeiten mit Tabellen SKIP, SKIP -1 BOF(), EOF() SELECT()
CREATE USE/USE IN/Used() ISREADONLY() APPEND BLANK EDIT / BROWSE DELETE / RECALL GO TOP/ BOTTOM GOTO, RECNO( ) SKIP, SKIP -1 BOF(), EOF() SELECT() DBF( ), ALIAS() EXCLUSIVE: PACK ZAP
8
Arbeiten mit Datensätzen
REPLACE (FOR) SET FILTER TO FILTER( ) LOCATE FOR FOUND( ) APPEND FROM Array COPY TO IMPORT EXPORT SCATTER GATHER
9
Arbeiten mit Feldern Character / Zeichen Prefix: c (c)
Character Binary Numeric / Zahl Prefix: n (n) Date / Datum Prefix: d (d) Logical / Logisch Prefix: l (l) Memofelder (Char) Prefix: m (c) Memo Binary General
10
Neue Feldarten Integer / Integer Prefix: i (n)
Double / Doppelte G. Prefix: b (n) Float / Fließkomma Prefix: f (n) Currency / Währung Prefix: y (y) DateTime / DatumZeit Prefix: t (t) Character Binary / Memo Binary (s.o.) Feldlänge Memo / General von 4 Byte
11
Leere Felder / Nullwerte
EMPTY( ) ISBLANK( ) ISNULL( ) SET NULL NVL( ) Beispiel: Statistik, Logik
12
Weitere Funktionen Tabelle: Header( ) Reccount( ) Recsize( ) Felder:
Fcount( ) Field( ) Namen u.ä.: DBF( ) CDX( ) Lupate( ) (2 B.!) Klauseln: Key( ) For( )
13
Indizes und Relationen
Arbeiten mit Indizes und mit Relationen unter Microsoft Visual FoxPro
14
Grundlagen Grundlagen: Separate Datei B-Baum
Schlüssel 100 B. IDX/240 B. CDX Ausdruck 220 B. Kein Alltrim()! Ausdrücke Benötigt für: Rushmore-Optimierung Suchbefehle Relationen dito persistent Referentielle Integrität
15
Arbeiten mit Indizes SET ORDER TO ORDER( ) SEEK( ) SET KEY TO
INDEX ON <Feldname> TO IDX | TAG [OF] [FOR <Bedingung>] [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE] (kein PRIMARY) SET ORDER TO ORDER( ) SEEK( ) SET KEY TO KEYMATCH( ) LOOKUP( )
16
Indexarten PRIMARY - Primärschlüssel CANDIDATE - Eindeutiger Schlüssel
nur in DBC, nicht in freien Tabellen CANDIDATE - Eindeutiger Schlüssel REGULAR - Normaler Schlüssel UNIQUE - „Einmaliger“ Schlüssel niemals NICHT VERWENDEN! Sinnvoll gelegentlich in Views Funktionen: Primary(), Candidate()
17
Primärschlüssel Real-World-Schlüssel Surrogate / Abstract -Schlüssel
meist zusammengesetzt Änderungen immer möglich! Eindeutigkeit letztendlich nicht garantiert RI: Cascading Update notwendig! Surrogate / Abstract -Schlüssel fortlaufend selbst erzeugt (ggf. mit zentraler Tabelle) Datenmodell komplett erstellbar ohne Attribute RI: kein Cascading Update notwendig
18
Probleme mit Indizes Defekte Dateien:
durch Strom-ausfall, Netz-werkproblem oder Abschalten REINDEX bzw. Neuerstellen ! Fehler: 5 - Satz außerhalb des Bereichs 20 - Satz nicht in Indexdatei Index-datei fehlt! 114 - Index stimmt nicht mit Tabelle
19
Weitere Fehler mit Indizes
Index nicht eindeutig NULL. nicht zulässig Schlüssel zu lang Index nicht gefunden UDF in Index auf Tabelle falsche Indexdateiversion Indexausdruck zu lang Indexname zu lang (10 B.)
20
Arbeiten mit Relationen
SET RELATION SET SKIP Relation( ) Target( ) Hinweise: Umgebungsfenster SET RELATION TO RECNO( ) Alternatives Anwendungs-beispiel Alternative: SQL-Joins SET KEY RANGE
21
Collate-Sequenzen/Codepages
Arbeiten mit Collate-Sequenzen/Codepages mit Microsoft Visual FoxPro
22
Arbeiten mit Collate-Sequenzen
SET COLLATE TO „<collate>“ Default „GENERAL“ (2 Byte, A=a!) Original „MACHINE“ (schnell!) Alternativ: „GERMAN“, „UNIQWT“ Sonstige: „DUTCH“, „ICELAND“, „NORDAN“, „SPANISH“, „SWEFIN“ Ggf. doppelte Index-Definition mit verschiedenen Collate-Sequenzen!
23
Probleme mit Collate Datei „FoxPro.Int“ nicht gefunden
zukünftig evtl. in VFP eingebunden Collate „General“ und „German“ fehlerhaft Problem mit Integer, Double, Currency, Datetime Keine Rushmore-Optimierung bei gemischten Collate-Sequenzen IDXCOLLATE() für Kontrolle
24
Arbeiten mit Codepages
437, 850, 1252, 10000 CPCURRENT( ) CPDBF( ) CPCONVERT( ) veraltet: ANSITOOEM() OEMTOANSI() GETCP( ) CODEPAGE=auto SET NOCPTRANS Character Binary Memo Binary SET CPDIALOG SET CPCOMPILE
25
Fehler mit Collate/Codepage
Codepage ungültig (oder nicht in FOXPRO.INT-Datei) Collate-Sequenz „<Name>“ nicht gefunden (FOXPRO.INT fehlt / fehlerhaft) Codepage=AUTO in CONFIG.FPW einstellen
26
Rushmore-Optimierung und Hardware unter Microsoft Visual FoxPro
27
Rushmore-Optimierung
Indexdefinition vorhanden Keine FOR/NOT-Klausel im Index Identische Indexdefinition zusammengesetzte Felder, Alltrim() Index auf Deleted() (bei SET DELE ON) Passende Collatesequenz (IDXCOLLATE) Keine Sortierung (SET ORDER TO) Keine Abfrage auf Empty( ) / IsBlank( ) Kein exakter Vergleich (SET EXACT/ANSI OFF/==) ==> Kontrolle mit SYS(3054,1/11) <==
28
Optimierbare Befehle (FOR!)
AVERAGE DELETE / BLANK BROWSE CALCULATE CHANGE / EDIT COPY TO (ARRAY) COUNT LIST / DISPLAY EXPORT INDEX LOCATE RECALL REPLACE (ARRAY) LABEL / REPORT SCAN SORT SUM TOTAL
29
Hardware-Optimierung
Festplatte: HD-Controller! Verteilung von DBF und CDX auf versch. Festplatten (nicht Partitionen !) Netzwerk: Mehrere Netzwerk-karten im Server User auf Stränge verteilen (z.B. 10 User/Strang) Userprofil
30
Multiuser-Programmierung
Arbeiten im Netzwerk und Multiuser-Programme mit Microsoft Visual FoxPro
31
Sperrmöglichkeiten Öffnen im SHARED-Modus RECORD LOCK - Satzsperre
Einzelsatz, mehrere Sätze FILE LOCK - Dateisperre HEADER LOCK - Headersperre EXCLUSIVE - exklusives Öffnen
32
Sperrbefehle im Netzwerk
FILE LOCK: FLOCK( ) IsFLocked( ) HEADER LOCK: LOCK RECORD 0 UNLOCK REC 0 RECORD LOCK: RLOCK( ) IsRLocked( ) UNLOCK RECORD EXCLUSIVE: USE EXCLUSIVE IsExclusive( )
33
Automatisches Sperren
FILE LOCK: ALTER TABLE INSERT (xBase) DELETE / REPLACE mit ALL/REST/NEXT x UPDATE (beide) HEADER LOCK: APPEND normal sowie mit BLANK / FOR INSERT (SQL) RECORD LOCK: APPEND MEMO DELETE / REPLACE / RECALL / BLANK so oder mit NEXT 1 DELETE / BLANK REC. GATHER CHANGE / EDIT MODI MEMO, READ BROWSE (Childs!)
34
Sperren auch beim Lesen
Beim Verarbeiten von neben-stehenden Befehlen wird nicht gesperrt! SET LOCK ON oder FLOCK() sinnvoll! Besser: vorher SQL-Select in Cursor AVERAGE CALCULATE COPY TO (ARRAY) LIST / DISPLAY LABEL / REPORT SORT COUNT SUM TOTAL
35
Sonstige Netzwerkbefehle
SET REFRESH - Neuanzeige sehr hohe Netzwerkbelastung bei BROWSE ! SET REPROCESS - Wiederholung SET MULTILOCKS - Mehrfachsperren SYS(3051) - Intervall Sperrversuche SYS(3052) - SET REPRO ausschalten SYS(0) - Rechnernummer im Netz SYS(2011) - alte Funktion wg. Status
36
Probleme mit Pufferung
Problem: Änderung von Daten-sätzen durch andere Netz-User erst sichtbar durch/nach: SET REFRESH (problematisch) SKIP, GOTO, SEEK Satzsperre RLOCK Lösung: Beim Lesen 1x Sperren
37
Server im Vergleich Novell-Server: Schnelles Dateisystem
Transaction Tracking (TTS) Directory Serv. Nur NLM/JVM Client-Fehler! NT-Server: Sicherheit nur mit NTFS (FAT) Server-Anwen-dungen! Remote OLE-Automation Backoffice
38
Verzeichnisse / LLFF Arbeiten mit Verzeichnissen und Low-Level-Dateien in Microsoft Visual FoxPro
39
Navigieren in Verzeichnissen
HOME( ) CURDIR( ) DISKSPACE( ) DIRECTORY( ) GETDIR( ) GETFILE( ) LOCFILE( ) PUTFILE( ) CD (CHDIR) MD (MKDIR) RD (RMDIR) SET DEFAULT SET PATH
40
LowLevel-Dateifunktionen
FCREATE( ) FOPEN( ) FCLOSE( ) FSEEK( ) FEOF( ) FCHSIZE( ) FFLUSH( ) FGETS( ) FPUTS( ) FREAD( ) FWRITE( ) FILE( ) (FULLP) FDATE/FTIME() (INI in Cursor)
41
Was ist zu bedenken? Korrekte Indexdefinition Probleme mit Codepages
Probleme mit Collate-Sequenz Rushmore-Optimierung
42
Vielen Dank! Das waren die Themen: Tabellen Datensätze Indizes
Relationen Codepages Collate-Sequenzen Rushmore Netzwerke Verzeichnisse Low-Level-Dateien
43
Wenn Fragen bestehen: Wizards & Builders Frankfurter Str. 21b
Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: Fax: CIS: ,175
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.