VFX 10.0 Visual Extend Datenzugriff Uwe Habermann Uwe.Habermann@dFPUG.de
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 Lokale Ansichten 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 Verfügbar seit VFP 8 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 Datum numerisch 1 oder bit Datum Datetime NULL Werte sollten in allen Feldern einer Remote Datenbank zugelassen sein
Datum VFP SQL Gültigkeitsbereich Leeres Datum zulässig 01.01.0001 – 31.12.9999 Leeres Datum zulässig SQL 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 VFX-Formular Und-Verknüpfung mit anderen Triggern möglich
Audit-Trail Vfxauditedtables Keine Trigger DBC SQL Keine Trigger Läuft mit Cursoradapter auf jeder Datenbank Protokolliert einfügen, ändern und löschen
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
Pause! Um 11.15 Uhr geht es weiter