Uwe Habermann [email protected] VFX 10.0 Visual Extend Datenzugriff.

36
Uwe Habermann [email protected] VFX 10.0 Visual Extend Datenzugriff

Transcript of Uwe Habermann [email protected] VFX 10.0 Visual Extend Datenzugriff.

Page 1: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Uwe [email protected]

VFX 10.0Visual ExtendDatenzugriff

Page 2: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Was machen wir?• Datenzugriff auf Tabellen

• VFX – Form Builder

• Datenzugriff mit CursorAdapter

• VFX – CursorAdapter Wizard

• VFX – Upsizing Wizard

• VFX – Manage Config.vfx

Page 3: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Datenzugriff• Was bietet VFP?• Freie Tabellen• DBC• Die Stärke von VFP

• Lokale Ansichten• Remote Ansichten und Verbindungen• Cursoradapter• Die neue Stärke von VFP

Page 4: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Nativer Datenzugriff• USE

• BROWSE

• Indexschlüssel

• Seek, Replace

• Pufferung

• Transaktionen

• Sehr schnell• Rushmore-Optimierung

• Lokale Ansichten

Page 5: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Unser Datenmodell

Page 6: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Formulare basierendauf Tabellen

• VFX – Form Wizard

• VFX – Data Environment Builder

• VFX – Form Builder

• Fertig!

• Beispiel: Kunden.scx

Page 7: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Remote Datenzugriff• Remote View

• Basiert auf Connection• DSN• Connectionstring

• DBC wird benötigt

Page 8: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Remote Datenzugriff• CursorAdapter• Klasse• Eigenschaften• Methoden• Vererbung

• Verwendbar in Datenumgebung• Programmatisch instanziierbar• Ergebnis: Cursor

• Verfügbar seit VFP 8

Page 9: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Remote Views vs. CursorAdapter

• Remote View und Connection im DBC gespeichert

• Nachteil:• Verbindungsinformationen im Klartext lesbar• ggf. manipulierbar

• CursorAdapter als programmatische oder visuelle Klasse in die Exe-Datei eingebunden• Zur Laufzeit beliebig konfigurierbar• Mit DBC und Remote Datenbanken einsetzbar

Page 10: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

CursorAdapter

• Klasse

• Einheitlicher Datenzugriff

• Datenzugriff auf DBC und (jede) Remote Datenbank möglich

• Umschaltbarkeit zur Laufzeit

• Builder in VFP vorhanden

Page 11: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

CursorAdapter

• In VFX unterstütze Datenbanken• DBC• SQL Server

• Zur Laufzeit unterstütze Datenbanken• Oracle• DB2

• Fat Client – Datenzugriff über das Internet

Page 12: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Wie bekommen wir die CursorAdapter?

• Eigenschaften manuell einstellen?

• Builder aus VFP?• Sehr hilfreich um CursorAdapter verstehen

zu lernen!

Page 13: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

VFX – CursorAdapter Wizard

• Automatische Generierung von CursorAdapter-Klassen zu allen Tabellen und Ansichten einer Datenbank• für VFP Datenbanken

• für SQL Server

• Auswahl der Datenquelle• Auswahl der Klassen und Klassenbibliotheken • Einstellungen aktualisierbarer Felder• Beispiel: CAs in Appl.vcx für VSS erstellen

Page 14: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

CursorAdapter in VFX• CursorAdapter-Klasse verwendet

ConnectionManager• ConnectionManager liest

Datenbankinformationen aus Konfigurationsdatei (Config.vfx)

• CursorAdapter-Funktionalität in einer Klasse gespeichert

• Holen von ID-Werten• Wartbarkeit

Page 15: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Programmstart• Im Init Ereignis des Anwendungsobjekts

wird der ConnectionManager instanziiert

• Beim Instanziieren eines CursorAdapters wird vom ConnectionManager eine Connection geholt

• Dabei werden aus einer verschlüsselten Datei die Datenbankinformationen gelesen

• Die CursorAdapter-Klasse verwendet die Informationen des ConnectionManagers

Page 16: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Formulare basierendauf CursorAdapter

• VFX – Form Wizard• VFX – Data Environment Builder• VFX – Form Builder• In allen VFX-Formularklassen können

CursorAdapter verwendet werden

• Fertig!

• Beispiel: KundenCA.scx

Page 17: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

IDs• IDs sollten von der Datenbank vergeben werden• CursorAdapter ermöglichen diese IDs nach dem

Speichern aus der Datenbank zu holen• InsertCmdRefreshKeyFieldList – Liste zu holender

Felder• InsertCmdRefreshCmd – wird nach dem Insert

ausgeführt – Hier können IDs geholt werden• GETAUTOINCVALUE() bei DBC

SELECT * FROM <myTable> WHERE <IdField>=GETAUTOINCVALUE()

• @@IDENTITY bei SQL Server

Page 18: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Arbeiten mit Parametern• VFX - CDataFormPage Builder -

Parameter • Hinzufügen von Steuerelementen zur

Eingabe der Parameter• Automatisches Anlegen der

Formulareigenschaften

• caCustomers mit Where-Klauselcompanyname LIKE ?thisform.tcompanyname

Page 19: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Planen einer neuen Anwendung

• Nur mit CusorAdapter arbeiten!• basierend auf cAppDataAccess

• Vorteile:• Es wird nur 1 Verbindung benötigt• Austauschbarkeit der Datenquelle• Wechsel von DBC zu SQL möglich• Entscheidung je Kunde ob DBC oder SQL

verwendet werden soll

Page 20: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Warum SQL Server?• Server basierte Datenbank

• Online Backup

• Stabilität

• Skalierbarkeit

• Einfacher Zugriff von verschiedenen Anwendungen und Plattformen

• Performance?

Page 21: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Datenmodellierung• Was sollte in VFP beachtet werden?

• Logisch• numerisch 1 oder bit

• Datum• Datetime

• NULL Werte sollten in allen Feldern einer Remote Datenbank zugelassen sein

Page 22: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Datum• VFP• Gültigkeitsbereich• 01.01.0001 – 31.12.9999

• Leeres Datum zulässig

• SQL• Gültigkeitsbereich• Datetime: 01.01.1753 – 31.12.9999• SmallDatetime: 01.01.1900 – 06.06.2079

• Leeres Datum NICHT zulässig

Page 23: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Datum• Leeres Datum in VFP

-> NULL im SQL

• Unzulässiges Datum in VFP-> Datensatz kann nicht nach SQL portiert werden

Page 24: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Logisch• VFP• Logisch

• SQL• Numerisch 1• Bit (ab SQL Server 2005)

Page 25: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

VFX – Upsizing Wizard• Transformierung der Struktur von lokalen

Tabellen und lokalen Ansichten sowie der referenziellen Integrität

• Portieren von Daten auf einen SQL Server

• Quellcode wird mit VFP 9 SP 2 geliefert • Kann ein eigene Projekte eingebunden werden

Page 26: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

VFX – Upsizing Wizard• Upsizing der vorhandenen Datenbank

auf SQL Server

• Prüfen der Datenbank mit SSMS

• Fehlerbericht beachten!

• Beispiel: VSS.dbc

Page 27: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Datenquellen bearbeitenManage Config.vfx

• Verwaltung des Datenzugriffs

• Dialog in der Anwendung beim Kunden nutzbar

• Problemloser Wechsel zwischen DBC und SQL Server• ConnectionString empfehlenswert

• Verschlüsselung mit Kennwort• Einstellung mit dem Application Builder• goprogram.cconfigpassword

Page 28: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Datenquellen bearbeitenManage Config.vfx

• Neuer Eintrag• SQL• Connectionstring• DRIVER={SQL Server};SERVER=(local);UID=sa;PWD=sa;DATABASE=VSS;

• Local (Native DBF…)• Data

Page 29: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Wohin mit den VFX Tabellen?

• Als freie Tabellen lassen

• Im eigenen DBC

• In eigener Remote Datenbank

• In Daten-Datenbank• als DBC• oder Remote Datenbank

Page 30: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Test• Läuft die Anwendung mit DBC und

SQL Server?

• Neue Datensätze anlegen

• Datensätze ändern

Page 31: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Multi-Client-Support• Mandantenfähige Anwendungen mit

Remote-Datenbanken• Datenzugriff bearbeiten – Config.vfx

• Mandantenfähige Anwendungen mit DBC• Pfadeinstellungen in Vfxpath.dbf

• Ordner "Data" beim Kunden nicht verwendbar

Page 32: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Multi-Client-Support• Wo sucht VFX die Datenbank?• Config.vfx• Vfxpath.dbf• Hard-codiert in goProgram.cDataDir

Page 33: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Audit-Trail• VFX – Audit Trigger Wizard

• Trigger in den Tabellen• _audit_insert()• _audit_update()• _audit_delete()

• Anzeige des Protokolls über ein VFX-Formular

• Und-Verknüpfung mit anderen Triggern möglich

Page 34: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Audit-Trail• Vfxauditedtables• DBC• SQL

• Keine Trigger

• Läuft mit Cursoradapter auf jeder Datenbank

• Protokolliert einfügen, ändern und löschen

Page 35: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Impersonation• Datenzugriff mit einem anderen Windows-

Benutzerkonto• Sehr guter Schutz der Daten vor

unberechtigtem Zugriff• Einstellung in Config.vfx• Win User Name• Win User Password• Win Domain Name

• Wenn, dann müssen alle Datenbanken mit Impersonation arbeiten

Page 36: Uwe Habermann Uwe.Habermann@dFPUG.de VFX 10.0 Visual Extend Datenzugriff.

Pause!

• Um 11.15 Uhr geht es weiter