VFX 10.0 Visual Extend Datenzugriff Uwe Habermann [email protected] Was machen wir? • • • • • • Datenzugriff auf Tabellen VFX – Form Builder Datenzugriff mit CursorAdapter VFX – CursorAdapter Wizard VFX – Upsizing Wizard VFX – Manage Config.vfx 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 Nativer Datenzugriff • • • • • • • USE BROWSE Indexschlüssel Seek, Replace Pufferung Transaktionen Sehr schnell • Rushmore-Optimierung • Lokale Ansichten Unser Datenmodell Formulare basierend auf Tabellen • VFX – Form Wizard • VFX – Data Environment Builder • VFX – Form Builder • Fertig! • Beispiel: Kunden.scx Remote Datenzugriff • Remote View • Basiert auf Connection • DSN • Connectionstring • DBC wird benötigt Remote Datenzugriff • CursorAdapter • Klasse • Eigenschaften • Methoden • Vererbung • Verwendbar in Datenumgebung • Programmatisch instanziierbar • Ergebnis: Cursor • Verfügbar seit VFP 8 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 CursorAdapter • Klasse • Einheitlicher Datenzugriff • Datenzugriff auf DBC und (jede) Remote Datenbank möglich • Umschaltbarkeit zur Laufzeit • Builder in VFP vorhanden CursorAdapter • In VFX unterstütze Datenbanken • DBC • SQL Server • Zur Laufzeit unterstütze Datenbanken • Oracle • DB2 • Fat Client – Datenzugriff über das Internet Wie bekommen wir die CursorAdapter? • Eigenschaften manuell einstellen? • Builder aus VFP? • Sehr hilfreich um CursorAdapter verstehen zu lernen! 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 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 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 Formulare basierend auf CursorAdapter • VFX – Form Wizard • VFX – Data Environment Builder • VFX – Form Builder • In allen VFX-Formularklassen können CursorAdapter verwendet werden • Fertig! • Beispiel: KundenCA.scx 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 Arbeiten mit Parametern • VFX - CDataFormPage Builder Parameter • Hinzufügen von Steuerelementen zur Eingabe der Parameter • Automatisches Anlegen der Formulareigenschaften • caCustomers mit Where-Klausel companyname LIKE ?thisform.tcompanyname 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 Warum SQL Server? • • • • • Server basierte Datenbank Online Backup Stabilität Skalierbarkeit Einfacher Zugriff von verschiedenen Anwendungen und Plattformen • Performance? 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 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 Datum • Leeres Datum in VFP -> NULL im SQL • Unzulässiges Datum in VFP -> Datensatz kann nicht nach SQL portiert werden Logisch • VFP • Logisch • SQL • Numerisch 1 • Bit (ab SQL Server 2005) 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 VFX – Upsizing Wizard • Upsizing der vorhandenen Datenbank auf SQL Server • Prüfen der Datenbank mit SSMS • Fehlerbericht beachten! • Beispiel: VSS.dbc Datenquellen bearbeiten Manage 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 Datenquellen bearbeiten Manage Config.vfx • Neuer Eintrag • SQL • Connectionstring • DRIVER={SQL Server}; SERVER=(local); UID=sa;PWD=sa; DATABASE=VSS; • Local (Native DBF…) • Data Wohin mit den VFX Tabellen? • • • • Als freie Tabellen lassen Im eigenen DBC In eigener Remote Datenbank In Daten-Datenbank • als DBC • oder Remote Datenbank Test • Läuft die Anwendung mit DBC und SQL Server? • Neue Datensätze anlegen • Datensätze ändern 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 Multi-Client-Support • Wo sucht VFX die Datenbank? • Config.vfx • Vfxpath.dbf • Hard-codiert in goProgram.cDataDir Audit-Trail • VFX – Audit Trigger Wizard • Trigger in den Tabellen • _audit_insert() • _audit_update() • _audit_delete() • Anzeige des Protokolls über ein VFXFormular • Und-Verknüpfung mit anderen Triggern möglich Audit-Trail • Vfxauditedtables • DBC • SQL • Keine Trigger • Läuft mit Cursoradapter auf jeder Datenbank • Protokolliert einfügen, ändern und löschen Impersonation • Datenzugriff mit einem anderen WindowsBenutzerkonto • 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 Pause! • Um 11.15 Uhr geht es weiter