MSDN WebCast - Teil 02 Arbeiten mit - dFPUG

Werbung
DBC
Arbeiten mit DBC
in Visual FoxPro 9.0
deutschsprachige FoxPro User Group
Rainer Becker
Microsoft Visual FoxPro 9.0 WebCast
Teil 2: Arbeiten mit DBC


Mittwoch, 29.6.2005, 16:00 – 17:00 Uhr
Eine der Grundlagen der objektorientierten
Entwicklungsumgebung Microsoft Visual FoxPro 9.0 ist die
integrierte leistungsfähige Datenbankengine für lokale
Desktop-Anwendungen. Durch Datenbankcontainer werden
freie Tabellen in einen grösseren Sinnzusammenhang gestellt.
Behandelt werden erweiterte Tabelleneigenschaften,
Relationen, Trigger, referentielle Integrität, Definition von
Ansichten, Transaktionen sowie einige diesbezügliche neue
Funktionen in der neuen Version.
Rainer Becker

dFPUG







Online-Angebote
Loseblattsammlung
VFP-Entwicklerkonferenz
VFP-Lokalisierung
Framework Visual Extend
MVP, MCP, ISV
Wizards & Builders GmbH
Wie bekomme ich VFP ?

Update von 6.0, 7.0, 8.0 sowie VS 97

Nicht von VFP 5.0 oder früher


Internationale und US/Canada-Version




trotz ggf. anderslautender Online-Angabe
Preisunterschied durch Dollarverfall
Technisch identisch
Kein Support / Marketingbudget für US-Version in BRD
dFPUG bietet exklusiv „Deutsche Version“

Benutzeroberfläche, Berichtsdesigner, Werkzeuge
Datenbankcontainer

Verwaltet Zusatzinformationen







zu Tabellen (dadurch nicht mehr „freie“ Tabellen)
Felder
persistente Relationen
gespeicherte Prozeduren
referentielle Integrität / Trigger , Ereignisse
Verbindungen, lokale und remote Views
Ein DBC ist kein Data-Dictionary!


Tabellenstrukturen im DBF-Header
Indexstrukturen im CDX-Header
Demo 1: Northwind



Exkusives Öffnen erforderlich
Ein- und Ausblenden von Elementen
Verschiedene Beispiele für Felddefinitionen
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
Gespeicherte Prozeduren I



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
Demo 2: Prozeduren


Dokumentenansicht für gespeicherte Prozeduren
Direktaufruf von gespeicherten Prozeduren
Gespeicherte Prozeduren II

Kompilate in DBC-Datensatz sind versionsabhängig
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!
DBC-Ereignisse

Ab VFP-Version 7, defaultmäßig deaktiviert
 einschalten über DBC-Optionen





Dbsetprop(„Main.dbc“,“Database“,“DBCEVENTS“,.t.)
Wenn aktiviert, DBC nicht mehr abwärtskompatibel
Funktionen liegen im DBC bei den gespeicherten
Prozeduren oder in einer externen PRG-Datei
Vorsicht: Datasessions beachten!
Für Zugriffsschutz und zur Protokollierung …
Demo 3: Events und RI



Bearbeiten von Datenbankereignissen
Erstellen von Relationen
Assistent für Referentiellen Integrität
Relationen






One-to-One-Relationen
One-to-Many-Relationen
Many-to-Many-Relationen
Basis für referentielle Integrität
Einblendung in Datenumgebung
Einblendung bei Ansichtserstellung
Referentielle Integrität (RI)



Bedeutung der
Referentiellen Integrität
einer Datenbank
Arbeiten mit dem
Referential Integrity
Builder
Empfehlung:
AMRI-Builder !
Programmatisch:
 CREATE TRIGGER
 DELETE TRIGGER
 _TRIGGERLEVEL
Arten von Triggern:
 DELETE
 UPDATE
 INSERT
Besonderheiten der Trigger

DELETE-Trigger: Childs löschen mit Parent / verhindern




INSERT-Trigger: Childs nur zu Parents



Bei DELETE -> Cascading Delete
Nicht bei ZAP (!)
Nicht bei PACK
Bei Append, Insert, Import
Auch bei RECALL
UPDATE-Trigger: Aktualisierung Fremdschlüsselfelder


Bei replace, Gather, Update
Nicht bei DELETED()
Hinweise zu Triggern
Im Gegensatz zu Feld-Valid
und Satz-Valid ist ein
Triggerfehler ein
endgültiger Fehler!
Das heißt:
 VFP macht Rollback über
alle Ebenen

Nicht zulässig:
 Ändern von Daten!





Update-Endlosschleife...
Compound Keys
Verschiedene DBCs
Kein „Nullify“ für Delete
von Parent
Builder nicht änderbar
Multiuser-Datenzugriff

Generell Öffnen im SHARED AGAIN-Modus

RECORD LOCK - Satzsperre




Einzelsatz, mehrere Sätze
FILE LOCK - Dateisperre
HEADER LOCK - Headersperre
EXCLUSIVE - exklusives Öffnen
Automatisches Sperren
FILE LOCK:




ALTER TABLE
INSERT (xBase)
DELETE / REPLACE mit
ALL/REST/NEXT x
UPDATE (beide)
HEADER LOCK:


APPEND / BLANK / FOR
INSERT (SQL)
RECORD LOCK:







APPEND MEMO
DELETE / REPLACE /
RECALL / w/wo NEXT 1
DELETE / BLANK REC.
GATHER
CHANGE / EDIT
MODI MEMO
BROWSE (Childs!)
Sperren auch beim Lesen



Beim Verarbeiten von
nebenstehenden Befehlen
wird nicht gesperrt!
SET LOCK ON oder
FLOCK() sinnvoll!
Ggf. vorher SQL-Select in
Cursor









AVERAGE
CALCULATE
COPY TO (ARRAY)
LIST / DISPLAY
LABEL / REPORT
SORT
COUNT
SUM
TOTAL
Hinweise zur Pufferung

Problem: Änderung von Datensätzen durch andere
Netz-User erst sichtbar durch/nach:

SET REFRESH




SKIP, GOTO, SEEK
Satzsperre RLOCK
Lösung: Beim Lesen 1x Sperren


Neue Parameter in VFP 9.0
Ggf. locate for recno() = lnrecno
Neu: FLUSH IN … (FORCE)
Transaktionen

BEGIN TRANS



END TRANS
ROLLBACK



*-- Datenzugriff
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!
Hinweise zu 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: Buffering mit Tableupdate und dann END
TRANS
Freie Tabellen ohne Meldung!
Deadlocks möglich - Zugriffsreihenfolge!
Zugriffsreihenfolge beachten
Zur Vermeidung von Deadlocks im Netzbetrieb:
 Tabellen nach Parent->Child



Datensätze nach Primärschlüssel


Immer erst den Parent sperren
notfalls per SQL-Select erst die Parents holen
notfalls per SQL-Select umsortieren
Mehrere Parents ggf. alphabetisch

sofern Parents nicht in Parent-Child-Beziehung
MAKETRANSACTABLE







Maketransactable( ) für freie Tabellen, Cursor von
freien Tabellen oder Created Cursor
Istransactable( ) für Prüfung
Darf noch nicht anderweitig geöffnet sein
Kein Table Buffering erlaubt
Bei Row Buffering wird Tableupdate durchgeführt
Kann danach anderweitig geöffnet werden
Transactable endet mit Schliessen letzter Instanz
Querverweise



03-21 Schützen einer Tabelle in einem DBC
03-23 Schützen von VFP Daten
03-24 Die Normalisierung von Daten
Weiterführendes Material

Visual FoxPro 9.0




Visual FoxPro 8.0



Updatebuch
Roadshow-CD
Lokalisierungs-CD
Updatebuch
Deutsche Hilfedatei
Online-Angebote der dFPUG

Forum, Portal, eNewsletter, Homepage, Framework
Teil 3: Arbeiten mit SQL


Mittwoch, 6.7.2005, 16:00 – 17:00 Uhr
Die Standard Query Language, kurz SQL, ist in der lokalen
Datenbankengine von Visual FoxPro als kompilierbarer Befehl
direkt enthalten. In diesem WebCast werden die
umfangreichen neuen Möglichkeiten der SQL-Syntax in der
neuen Version Visual FoxPro 9.0 vorgestellt. Mit der neuen
Syntax ist Visual FoxPro nunmehr weitestgehend kompatibel
zu SQL-Server, welches die Umschaltbarkeit zwischen
verschiedenen Datenhaltungssystemen drastisch vereinfacht.
Aber selbst die kleinste Anwendung kann von der neuen
Flexibilität im SQL-Bereich deutlich profitieren!
Teil 4: Arbeiten mit C/S


Mittwoch, 13.7.2005, 16:00 – 17:00 Uhr
Microsoft Visual FoxPro ist schon seit einem Jahrzehnt ein
beliebtes Frontend für Client/Server-Datenbanken wie
Microsoft SQL-Server. Über die Hälfte der FoxPro-Entwickler
weltweit entwickelt auch oder ausschliesslich Anwendungen
auf Basis von MSDE und/oder SQL-Server. In der neuen
Version 9.0 von Microsoft Visual FoxPro werden diese
Möglichkeiten noch weiter ausgebaut. Unter anderem wurde
die Cursor Adaptor-Klasse stark verbessert und weitere
Werkzeuge wie der Dataexplorer werden zur Verfügung
gestellt.
Vielen Dank!
Fragen an [email protected]
oder besser http://forum.dfpug.de
Besuchen Sie unsere Webseiten: http://www.dfpug.de,
http://portal.dfpug.de, http://forum.dfpug.de,
http://newsletter.dfpug.de, http://devcon.dfpug.de,
http://roadshow.dfpug.de, http://www.visualextend.de,
http://www.linuxtransfer.de, http://www.visualfoxpro.de
Herunterladen