Der Datenbankcontainer von Visual FoxPro - dFPUG

Werbung
Datenbankcontainer
Datenbankcontainer in
Microsoft Visual FoxPro
Wizards &
Builders GmbH
Diese Schulung dient zur Einführung der
Schulungsteilnehmer in die Arbeit mit
Datenbankcontainer (im Vergleich zu
Einzeltabellen) in Visual FoxPro
Wizards &
Builders GmbH
Themenübersicht
 Datenbankcontainer (Sinn/Struktur)
 Arbeiten mit dem Datenbankcontainer
 Grundbefehle des Datenbankcontainers
 Tabellen und Felder im DBC
 Buffering und Buffermode
 Transaktionen
 Referentielle Integrität
 Trigger (Insert, Update, Delete, Fehler)
Wizards &
Builders GmbH
Datenbankcontainer
Datenbankcontainer fassen „freie
Tabellen“ zu einer Datenbank
zusammen und verwalten die
Metadaten
Wizards &
Builders GmbH
Datenbankcontainer




Ein DBC ist kein Data-Dictionary!
Tabellenstrukturen im DBF-Header
Indexstrukturen im CDX-Header
Verwaltet Zusatzinformationen
 zu Feldern und Tabellen (nicht „freie“ Tabellen)


Verwaltet persistente Relationen
Verwaltet referentielle Integrität
Wizards &
Builders GmbH
Logische Bestandteile
rules / triggers
tables
relations
connections
local views
stored procedures
remote views
indexes
Wizards &
Builders GmbH
Physische Bestandteile
FPT1
DBF1
CDX1
DBC
DCT
DCX
CDXn
DBFn
DBF2
FPTn
FPT2
CDX2
Wizards &
Builders GmbH
Arbeiten mit dem DBC

Anlegen einer Tabelle
 Feldeigenschaften


Anlegen einer Relation (Drag & Drop)
Anlegen einer Ansicht (View)
 Feldeigenschaften


Anlegen einer Verbindung (Connection)
Anlegen einer Remote Ansicht (View)
Wizards &
Builders GmbH
Tabellen im DBC







CREATE TABLE
ALTER TABLE
ADD TABLE
REMOVE TABLE
FREE TABLE (!)
CLOSE TABLE
INDBC( )







VALID RULE
VALID TEXT
CAPTION
COMMENT
UPD TRIGGER ()
INS TRIGGER ()
DEL TRIGGER ()
Wizards &
Builders GmbH
Felder im DBC






FORMAT
MASK
CAPTION
VALID RULE
VALID TEXT
DEFAULT

CLASS
CLASSLIBS

COMMENT

Optionen
beachten!

(Klassenzuordnung)
Wizards &
Builders GmbH
Validierungen
Feld-Ebene:
 VALID-Funktion
 Fehlermeldung


Wahlweise Funktion
oder Konstante
Default-Wert dazu!
Satz-Ebene:
 für Validierung über
mehrere Felder
 ansonsten siehe FeldValidierung
Trigger kommen als
separates Thema
Wizards &
Builders GmbH
Gespeicherte Prozeduren (1)



Gehören imanent zu den Tabellen und
wird als Prozedur-Datei gesetzt!
Werden auch über ODBC ausgeführt!
Verwendet für:
 Feld-Validierung, Feld-Fehlermeldung
 Satz-Validierung, Satz-Fehlermeldung
 Feld-Default-Wert
 Trigger-Aufrufe
Wizards &
Builders GmbH
Gespeicherte Prozeduren (2)

Kompilate in DBC-Datensatz sind
versionsabhängig (VFP 3.0, 5.0 / 6.0) - d.h.
Neukompilieren (!)
 ggf. ausgelagerte Prozedurdatei verwenden

Tabellen/Felder finden „richtige“
Prozedurdatei - eigene Anwendung
verwendet aber nur aktiven DBC!
 Set database to
 Namenskonventionen für DBC-Funktionen!
Wizards &
Builders GmbH
Views im DBC







Felder (Ausdrücke)
Verknüpfung
Filter
Sortierung
Gruppierung
Aktualisierung
Verschiedenes






Schlüssel setzen
Felder setzen
SQL-Update setzen
Where-Klausel
Schlüssel änderbar!
Feldeigenschaften!
Wizards &
Builders GmbH
Struktur des DBC








OBJECTID
PARENTID
OBJECTTYPE =>
OBJECTNAME
PROPTERY (M)
CODE (M)
RIINFO
USER (M)
Objekt-Typen:
 DATABASE
 TABLE
 FIELD
 INDEX
 VIEW
 CONNECTION
Wizards &
Builders GmbH
Grundbefehle DBC (1)






CREATE DATA
OPEN DATA
MODIFY DATA
CLOSE DATA
DELETE DATA
PACK DATA
 sortiert Schlüssel neu!

VALIDATE DATA

SET DATA TO

Achtung: Projektmanager
kann DBC offenhalten!
Info-Funktionen:
 DBC()
 DBUSED()
 Zeigt manche Fehler nur!
Wizards &
Builders GmbH
Grundbefehle DBC (2)
Anzeigefunktionen:
 LIST DATABASE
 LIST TABLES
 LIST VIEWS
 LIST CONNECTIONS
 LIST PROCEDURE
Sonstige
Funktionen:


ADATABASES( )
ADBOBJECTS( )
Eigenschaften ändern:
 DBGETPROP( )
 DBSETPROP( )
Wizards &
Builders GmbH
DbGetProp( ) / DbSetProp( )






Datenbanken
Tabellen
Felder in Tabellen
Ansichten
Felder in
Ansichten
Verbindungen
Wizards &
Builders GmbH
Strukturänderungen
Eigenlösungen:


Neuen DBC mit
geänderten Tabellen
versenden
SQL Alter TableBefehl versenden
Fremdlösungen:


XCASE-Zusatztool
SDT-Zusatztool
(Stonefield Database Toolkit)
 Keine Primary Keys in
VFP 3.0 / VFP 5.0 !
Wizards &
Builders GmbH
Hinweise zum DBC

Separates Datadictionary notwendig
für Reindizierung od. Neuerzeugung
 wahlweise Eigenbau, XCase oder Stonefield
 wahlweise GENDBCX als Minimal-Lösung

Tabellen und DBC sind eine Einheit
 Immer zusammen sichern / ändern

FREE TABLE mit Vorsicht!
Wizards &
Builders GmbH
Buffering
Buffering dient zur
Zwischenspeicherung von
Änderungen
Wizards &
Builders GmbH
Prinzip des Buffering
Methode zum automatischen Puffern von Daten zwischen
einer Eingabe-Maske und der DBF-Datei auf der Festplatte
OLDVALPuffer
DBFDatei
EingabeMaske
DatenPuffer
Wizards &
Builders GmbH
Tablebuffering


TABLEREVERT()
TABLEUPDATE()





CURSOR-GETPROP()
CURSOR-SETPROP()


CURVAL()
OLDVAL()
GETNEXT-MODIFIED()
GETFLDSTATE()
SETFLDSTATE()
Wizards &
Builders GmbH
Tableupdate / Tablerevert
Parameter für
Tableupdate( )




--.T.
2
.T.
Einzelsatz
bis 1. Fehler
alle die gehen
Forced Update
Parameter für
Tablerevert( )

Einzelsatz
Alle Änderungen

Schließen = Revert!

Wizards &
Builders GmbH
Buffermode
Buffermodes:
 1-None
 2-Pessimistic Row
 3-Pessimistic Table
 4-Optimistic Row
 5-Optimistic Table
 Row:
Skip = Update (!)
Optimistic:
 Record changed!
 Curval/Oldval()
 GetFldState()
Table-Buffering:
 Getnextmodified()
Wizards &
Builders GmbH
Funktionen im Einsatz

Beispiele:
? GetFldState(-1) != Repl(„1“,Fcount()+1)
? Left( GetFldState(-1),1) != „1“
Goto ( GetNextModified( Recno() ) )
? Field( At( „2“, GetFldState(-1) ) )
? SetFldState( „Feld“, 1 )
&& Views!

Achtung: Negative Record-Nummern!
Wizards &
Builders GmbH
Reihenfolge





Tabellenfeld-Valid (alle Felder)
Masken-Valid (aktuelles Element)
Datensatz-Valid(ierung)
Primary/Candidate-Schlüssel
Trigger
 kaskadierend über alle Childs
 Achtung: _TRIGGERLEVEL kann hoch werden
Wizards &
Builders GmbH
CursorGetProp( ) / CSetProp( )

Allgemein:
 Buffering (ein- /ausschalten, abfragen, Wert 1-5)
 Caption (Auslesen Text für Feldlabel zur Laufzeit)

nur für Views (Auch im View-Designer):
 CompareMemo
 Updatable
 Updatable Field List
 Where Type
Wizards &
Builders GmbH
Vorsicht Falle!
Allgemeine Probleme:

GETNEXTMODIFIED /
GETFIELDSTATE() => erst
Feld verlassen!

SetFldState( ) bei Views
mit Requery()
Table changed
im View-Designer sofern
alle Felder gewählt wurden
(*)

Sonderfall:
Buffered Views auf
Buffered Tables!



Row: Fehler erst beim
nächsten Satz!
Tablerevert: Revert im
View versagt
Primary Key doppelt:
Letzter gilt!
Wizards &
Builders GmbH
Transaktionen
Transaktionen dienen dem
vollständigen Abspeichern einer
Gruppe von Datensätzen
Wizards &
Builders GmbH
Transaktionen

BEGIN TRANS
 *-- Datenzugriff


END TRANS
ROLLBACK
 Absturz = Rollback
 Rollback bei Öffnen!

TXNLEVEL()
 bis 5 Ebenen tief!
 Äußerste Ebene zählt!
Experimente mit
Transaktionen:
 1 Tabelle
 2 Tabellen aus DBC
 Verschiedene DBCs
 Freie Tabellen
 Geschachtelt
 Task-Manager!
Wizards &
Builders GmbH
Probleme bei Transaktionen


Buffering eingeschaltet = Transaktion läuft nur
auf Buffer und nicht auf Platte!
Buffering ausgeschaltet = Transaktion läßt
Einschalten Buffering nicht zu!
 Dadurch ggf. neue Sätze nicht anlegbar (Valid)



Lösung möglicherweise Buffering mit
Tableupdate und dann END TRANS
Freie Tabellen ohne Meldung!
Deadlocks möglich - Zugriffsreihenfolge!
Wizards &
Builders GmbH
Zugriffsreihenfolge (Deadlocks!)

Tabellen nach Parent->Child
 Immer erst den Parent sperren
 notfalls per SQL-Select erst die Parents holen

Datensätze nach Primärschlüssel
 notfalls per SQL-Select umsortieren

Mehrere Parents ggf. alphabetisch
 sofern Parents nicht in Parent-Child-Beziehung
Wizards &
Builders GmbH
Referentielle Integrität
RI dient zur Wahrung der
inhaltlichen Konsistenz
Beziehungen zwischen Tabellen
Wizards &
Builders GmbH
Referentielle Integrität (RI)


Bedeutung der
Referentiellen
Integrität einer
Datenbank
Arbeiten mit dem
Referential Integrity
Builder
Programmatisch:
 CREATE TRIGGER
 DELETE TRIGGER
 _TRIGGERLEVEL
Arten von Triggern:
 DELETE
 UPDATE
 INSERT
Wizards &
Builders GmbH
DELETE-Trigger
Auslöser:
 DELETE-Befehl
Verhalten:
 CASCASE
 Cascading Delete

Nicht bei ZAP (!)

 sofern Parent vorh.
 Gefährlich!!!

Nicht bei PACK
(da Sätze gelöscht)
RESTRICT

IGNORE
Wizards &
Builders GmbH
INSERT-Trigger
Auslöser:
 APPEND FROM
 APPEND BLANK
 IMPORT
 INSERT-SQL

RECALL (!)
Verhalten:
 RESTRICT
 Child nur zu Parent

IGNORE

INSERT unzulässig
Wizards &
Builders GmbH
UPDATE-Trigger
Auslöser:
 GATHER
 REPLACE
 REPLACE FROM
 UPDATE-SQL
Verhalten:
 CASCADE
 Schlüssel zu Childs

 Parentschlüssel
gesperrt


RESTRICT
IGNORE
nicht bei
DELETED() (!)
Wizards &
Builders GmbH
Probleme mit Triggern
Im Gegensatz zu FeldValid und Satz-Valid
ist ein Triggerfehler
ein endgültiger
Fehler!
Das heißt:
 VFP macht Rollback
über alle Ebenen

Probleme:
 Ändern von Daten!
 Update-Endlosschleife...




Compound Keys
Verschiedene DBCs
Kein „Nullify“ für
Delete von Parent
Builder nicht ändern
Wizards &
Builders GmbH
Fehlermeldungen

1539 Trigger failed

 1=Ins, 2=Upd, 3=Del






1581 Field no NULL
1582 Field Rule
1583 Record Rule
1585 Change by A.
1700 Used by A.
1884 Unique index
AERROR( )
 Error()
 Message()
 Sys(2018)
 Select()
 Trigger-Art
 .NULL.
 .NULL.

Weitere Elemente für ODBCFehlermeldungen
Wizards &
Builders GmbH
Vielen Dank!
Das waren die Themen:
 Datenbankcontainer
 Arbeiten mit DBC
 Grundbefehle DBC
 Tabellen und Felder
 Buffering
 Transaktionen
 Referentielle Integrität
 Trigger
Wizards &
Builders GmbH
Wenn Fragen bestehen:
Wizards & Builders
Methodische SoftwareEntwicklung GmbH
Frankfurter Str. 21b
61476 Kronberg
Tel.: 06173-950906
Fax: 06173-950907
CIS: 101605,175
Wizards &
Builders GmbH
Herunterladen