Arbeiten mit DBC in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft...

Click here to load reader

  • date post

    05-Apr-2015
  • Category

    Documents

  • view

    112
  • download

    1

Embed Size (px)

Transcript of Arbeiten mit DBC in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft...

  • Folie 1
  • Arbeiten mit DBC in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 WebCast DBC
  • Folie 2
  • Teil 2: Arbeiten mit DBC Mittwoch, 29.6.2005, 16:00 17:00 Uhr Mittwoch, 29.6.2005, 16:00 17:00 Uhr Eine der Grundlagen der objektorientierten Entwicklungsumgebung Microsoft Visual FoxPro 9.0 ist die integrierte leistungsfhige Datenbankengine fr lokale Desktop-Anwendungen. Durch Datenbankcontainer werden freie Tabellen in einen grsseren Sinnzusammenhang gestellt. Behandelt werden erweiterte Tabelleneigenschaften, Relationen, Trigger, referentielle Integritt, Definition von Ansichten, Transaktionen sowie einige diesbezgliche neue Funktionen in der neuen Version. Eine der Grundlagen der objektorientierten Entwicklungsumgebung Microsoft Visual FoxPro 9.0 ist die integrierte leistungsfhige Datenbankengine fr lokale Desktop-Anwendungen. Durch Datenbankcontainer werden freie Tabellen in einen grsseren Sinnzusammenhang gestellt. Behandelt werden erweiterte Tabelleneigenschaften, Relationen, Trigger, referentielle Integritt, Definition von Ansichten, Transaktionen sowie einige diesbezgliche neue Funktionen in der neuen Version.
  • Folie 3
  • Rainer Becker dFPUG dFPUG Online-Angebote Online-Angebote Loseblattsammlung Loseblattsammlung VFP-Entwicklerkonferenz VFP-Entwicklerkonferenz VFP-Lokalisierung VFP-Lokalisierung Framework Visual Extend Framework Visual Extend MVP, MCP, ISV MVP, MCP, ISV Wizards & Builders GmbH Wizards & Builders GmbH
  • Folie 4
  • Wie bekomme ich VFP ? Update von 6.0, 7.0, 8.0 sowie VS 97 Update von 6.0, 7.0, 8.0 sowie VS 97 Nicht von VFP 5.0 oder frher Nicht von VFP 5.0 oder frher trotz ggf. anderslautender Online-Angabe trotz ggf. anderslautender Online-Angabe Internationale und US/Canada-Version Internationale und US/Canada-Version Preisunterschied durch Dollarverfall Preisunterschied durch Dollarverfall Technisch identisch Technisch identisch Kein Support / Marketingbudget fr US-Version in BRD Kein Support / Marketingbudget fr US-Version in BRD dFPUG bietet exklusiv Deutsche Version dFPUG bietet exklusiv Deutsche Version Benutzeroberflche, Berichtsdesigner, Werkzeuge Benutzeroberflche, Berichtsdesigner, Werkzeuge
  • Folie 5
  • Datenbankcontainer Verwaltet Zusatzinformationen Verwaltet Zusatzinformationen zu Tabellen (dadurch nicht mehr freie Tabellen) zu Tabellen (dadurch nicht mehr freie Tabellen) Felder Felder persistente Relationen persistente Relationen gespeicherte Prozeduren gespeicherte Prozeduren referentielle Integritt / Trigger, Ereignisse referentielle Integritt / Trigger, Ereignisse Verbindungen, lokale und remote Views Verbindungen, lokale und remote Views Ein DBC ist kein Data-Dictionary! Ein DBC ist kein Data-Dictionary! Tabellenstrukturen im DBF-Header Tabellenstrukturen im DBF-Header Indexstrukturen im CDX-Header Indexstrukturen im CDX-Header
  • Folie 6
  • Demo 1: Northwind Exkusives ffnen erforderlich Exkusives ffnen erforderlich Ein- und Ausblenden von Elementen Ein- und Ausblenden von Elementen Verschiedene Beispiele fr Felddefinitionen Verschiedene Beispiele fr Felddefinitionen
  • Folie 7
  • Reihenfolge Tabellenfeld-Valid (alle Felder) Tabellenfeld-Valid (alle Felder) Masken-Valid (aktuelles Element) Masken-Valid (aktuelles Element) Datensatz-Valid(ierung) Datensatz-Valid(ierung) Primary/Candidate-Schlssel Primary/Candidate-Schlssel Trigger Trigger kaskadierend ber alle Childs kaskadierend ber alle Childs Achtung: _TRIGGERLEVEL kann hoch werden Achtung: _TRIGGERLEVEL kann hoch werden
  • Folie 8
  • Gespeicherte Prozeduren I Gehren imanent zu den Tabellen und wird als Prozedur-Datei gesetzt! Gehren imanent zu den Tabellen und wird als Prozedur-Datei gesetzt! Werden auch ber ODBC ausgefhrt! Werden auch ber ODBC ausgefhrt! Verwendet fr: Verwendet fr: Feld-Validierung, Feld-Fehlermeldung Feld-Validierung, Feld-Fehlermeldung Satz-Validierung, Satz-Fehlermeldung Satz-Validierung, Satz-Fehlermeldung Feld-Default-Wert Feld-Default-Wert Trigger-Aufrufe Trigger-Aufrufe
  • Folie 9
  • Demo 2: Prozeduren Dokumentenansicht fr gespeicherte Prozeduren Dokumentenansicht fr gespeicherte Prozeduren Direktaufruf von gespeicherten Prozeduren Direktaufruf von gespeicherten Prozeduren
  • Folie 10
  • Gespeicherte Prozeduren II Kompilate in DBC-Datensatz sind versionsabhngig d.h. Neukompilieren (!) Kompilate in DBC-Datensatz sind versionsabhngig d.h. Neukompilieren (!) ggf. ausgelagerte Prozedurdatei verwenden ggf. ausgelagerte Prozedurdatei verwenden Tabellen/Felder finden richtige Prozedurdatei - eigene Anwendung verwendet aber nur aktiven DBC! Tabellen/Felder finden richtige Prozedurdatei - eigene Anwendung verwendet aber nur aktiven DBC! Set database to Set database to Namenskonventionen fr DBC-Funktionen! Namenskonventionen fr DBC-Funktionen!
  • Folie 11
  • DBC-Ereignisse Ab VFP-Version 7, defaultmig deaktiviert Ab VFP-Version 7, defaultmig deaktiviert einschalten ber DBC-Optionen einschalten ber DBC-Optionen Dbsetprop(Main.dbc,Database,DBCEVENTS,.t.) Dbsetprop(Main.dbc,Database,DBCEVENTS,.t.) Wenn aktiviert, DBC nicht mehr abwrtskompatibel Wenn aktiviert, DBC nicht mehr abwrtskompatibel Funktionen liegen im DBC bei den gespeicherten Prozeduren oder in einer externen PRG-Datei Funktionen liegen im DBC bei den gespeicherten Prozeduren oder in einer externen PRG-Datei Vorsicht: Datasessions beachten! Vorsicht: Datasessions beachten! Fr Zugriffsschutz und zur Protokollierung Fr Zugriffsschutz und zur Protokollierung
  • Folie 12
  • Demo 3: Events und RI Bearbeiten von Datenbankereignissen Bearbeiten von Datenbankereignissen Erstellen von Relationen Erstellen von Relationen Assistent fr Referentiellen Integritt Assistent fr Referentiellen Integritt
  • Folie 13
  • Relationen One-to-One-Relationen One-to-One-Relationen One-to-Many-Relationen One-to-Many-Relationen Many-to-Many-Relationen Many-to-Many-Relationen Basis fr referentielle Integritt Basis fr referentielle Integritt Einblendung in Datenumgebung Einblendung in Datenumgebung Einblendung bei Ansichtserstellung Einblendung bei Ansichtserstellung
  • Folie 14
  • Referentielle Integritt (RI) Bedeutung der Referentiellen Integritt einer Datenbank Bedeutung der Referentiellen Integritt einer Datenbank Arbeiten mit dem Referential Integrity Builder Arbeiten mit dem Referential Integrity Builder Empfehlung: AMRI-Builder ! Empfehlung: AMRI-Builder !Programmatisch: CREATE TRIGGER CREATE TRIGGER DELETE TRIGGER DELETE TRIGGER _TRIGGERLEVEL _TRIGGERLEVEL Arten von Triggern: DELETE DELETE UPDATE UPDATE INSERT INSERT
  • Folie 15
  • Besonderheiten der Trigger DELETE-Trigger: Childs lschen mit Parent / verhindern DELETE-Trigger: Childs lschen mit Parent / verhindern Bei DELETE -> Cascading Delete Bei DELETE -> Cascading Delete Nicht bei ZAP (!) Nicht bei ZAP (!) Nicht bei PACK Nicht bei PACK INSERT-Trigger: Childs nur zu Parents INSERT-Trigger: Childs nur zu Parents Bei Append, Insert, Import Bei Append, Insert, Import Auch bei RECALL Auch bei RECALL UPDATE-Trigger: Aktualisierung Fremdschlsselfelder UPDATE-Trigger: Aktualisierung Fremdschlsselfelder Bei replace, Gather, Update Bei replace, Gather, Update Nicht bei DELETED() Nicht bei DELETED()
  • Folie 16
  • Hinweise zu Triggern Im Gegensatz zu Feld-Valid und Satz-Valid ist ein Triggerfehler ein endgltiger Fehler! Im Gegensatz zu Feld-Valid und Satz-Valid ist ein Triggerfehler ein endgltiger Fehler! Das heit: VFP macht Rollback ber alle Ebenen VFP macht Rollback ber alle Ebenen Nicht zulssig: ndern von Daten! ndern von Daten! Update-Endlosschleife... Update-Endlosschleife... Compound Keys Compound Keys Verschiedene DBCs Verschiedene DBCs Kein Nullify fr Delete von Parent Kein Nullify fr Delete von Parent Builder nicht nderbar Builder nicht nderbar
  • Folie 17
  • Multiuser-Datenzugriff Generell ffnen im SHARED AGAIN-Modus Generell ffnen im SHARED AGAIN-Modus RECORD LOCK - Satzsperre RECORD LOCK - Satzsperre Einzelsatz, mehrere Stze Einzelsatz, mehrere Stze FILE LOCK - Dateisperre FILE LOCK - Dateisperre HEADER LOCK - Headersperre HEADER LOCK - Headersperre EXCLUSIVE - exklusives ffnen EXCLUSIVE - exklusives ffnen
  • Folie 18
  • Automatisches Sperren FILE LOCK: ALTER TABLE ALTER TABLE INSERT (xBase) INSERT (xBase) DELETE / REPLACE mit ALL/REST/NEXT x DELETE / REPLACE mit ALL/REST/NEXT x UPDATE (beide) UPDATE (beide) HEADER LOCK: APPEND / BLANK / FOR APPEND / BLANK / FOR INSERT (SQL) INSERT (SQL) RECORD LOCK: APPEND MEMO APPEND MEMO DELETE / REPLACE / RECALL / w/wo NEXT 1 DELETE / REPLACE / RECALL / w/wo NEXT 1 DELETE / BLANK REC. DELETE / BLANK REC. GATHER GATHER CHANGE / EDIT CHANGE / EDIT MODI MEMO MODI MEMO BROWSE (Childs!) BROWSE (Childs!)
  • Folie 19
  • Sperren auch beim Lesen Beim Verarbeiten von nebenstehenden Befehlen wird nicht gesperrt! Beim Verarbeiten von nebenstehenden Befehlen wird nicht gesperrt! SET LOCK ON oder FLOCK() sinnvoll! SET LOCK ON oder FLOCK() sinnvoll! Ggf. vorher SQL-Select in Cursor Ggf. vorher SQL-Select in Cursor AVERAGE AVERAGE CALCULATE CALCULATE COPY TO (ARRAY) COPY TO (ARRAY) LIST / DISPLAY LIST / DISPLAY LABEL / REPORT LABEL / REPORT SORT SORT COUNT COUNT SUM SUM TOTAL TOTAL
  • Folie 20
  • Hinweise zur Pufferung Problem: nderung von Datenstzen durch andere Netz-User erst sichtbar durch/nach: Problem: nderung von Datenstzen durch andere Netz-User erst sichtbar durch/nach: SET REFRESH SET REFRESH Neue Parameter in VFP 9.0 Neue Parameter in V