VFX 10.0Visual ExtendDatenzugriff
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 basierendauf 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 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
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-Klauselcompanyname 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 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
Datenquellen bearbeitenManage 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• 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