Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft...

21
Client/Server mit Client/Server mit Visual FoxPro 9.0 Visual FoxPro 9.0 deutschsprachige FoxPro User deutschsprachige FoxPro User Group Group Uwe Habermann Uwe Habermann Microsoft Visual FoxPro 9.0 Microsoft Visual FoxPro 9.0 Roadshow Roadshow C/S

Transcript of Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft...

Page 1: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Client/Server mit Client/Server mit Visual FoxPro 9.0Visual FoxPro 9.0

deutschsprachige FoxPro User Groupdeutschsprachige FoxPro User Group

Uwe HabermannUwe Habermann

Microsoft Visual FoxPro 9.0 RoadshowMicrosoft Visual FoxPro 9.0 Roadshow

C/S

Page 2: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Die IdeeDie Idee Eine Anwendung soll so Eine Anwendung soll so

erstellt werden, dass beim erstellt werden, dass beim Kunden entschieden werden Kunden entschieden werden kann, ob mit einer VFP-kann, ob mit einer VFP-Datenbank oder mit einem Datenbank oder mit einem SQL Server gearbeitet werden SQL Server gearbeitet werden soll.soll.

Alle Formulare und Klassen Alle Formulare und Klassen müssen unabhängig von der müssen unabhängig von der Datenquelle sein.Datenquelle sein.

Page 3: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Die MöglichkeitenDie Möglichkeiten

Remote ViewsRemote Views Basierend auf einer Connection im DBC gespeichertBasierend auf einer Connection im DBC gespeichert

SPT (SQL Pass Through)SPT (SQL Pass Through) Native Datenbank- oder ODBC-SyntaxNative Datenbank- oder ODBC-Syntax Beliebige Befehle/Scripts verarbeitbarBeliebige Befehle/Scripts verarbeitbar (Fast) vollständige Kontrolle über Befehlsausführung(Fast) vollständige Kontrolle über Befehlsausführung Für „normale“ Anwendungsfälle eher umständlichFür „normale“ Anwendungsfälle eher umständlich Nichts für die einfache PortierbarkeitNichts für die einfache Portierbarkeit

CursorAdapterCursorAdapter

Page 4: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Remote Views vs. CursorAdapterRemote Views vs. CursorAdapter

Remote View und Connection im DBC gespeichertRemote View und Connection im DBC gespeichert Nachteil:Nachteil:

DBC muss verwendet werdenDBC muss verwendet werden Verbindungsinformationen im Klartext lesbarVerbindungsinformationen im Klartext lesbar

ggf. manipulierbarggf. manipulierbar

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

Page 5: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Vorteile SQL ServerVorteile SQL Server

VerfügbarkeitVerfügbarkeit Clients haben keinen Einfluss auf die ServerdatenbankClients haben keinen Einfluss auf die Serverdatenbank Wartungsaufgaben und Backup im laufenden BetriebWartungsaufgaben und Backup im laufenden Betrieb

DatensicherheitDatensicherheit Datenbank ist vor direktem Zugriff geschütztDatenbank ist vor direktem Zugriff geschützt Security-ModellSecurity-Modell

SkalierbarkeitSkalierbarkeit

Page 6: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Nachteile SQL ServerNachteile SQL Server

BetreuungsaufwandBetreuungsaufwand Qualifiziertes Betreuungspersonal notwendigQualifiziertes Betreuungspersonal notwendig Einzelne Tabellen können nicht kopiert oder ersetzt werdenEinzelne Tabellen können nicht kopiert oder ersetzt werden

LizenzkostenLizenzkosten Oder kostenlos für den Einstieg:Oder kostenlos für den Einstieg:

SQL Server Desktop EngineSQL Server Desktop Engine SQL Server 2005 ExpressSQL Server 2005 Express

Oder VAR-Vertrag mit MicrosoftOder VAR-Vertrag mit Microsoft

Page 7: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

UpsizingUpsizing

VFP Upsizing WizardVFP Upsizing Wizard

xCase (und andere Tools)xCase (und andere Tools) Gute VFP-Unterstützung Gute VFP-Unterstützung Möglichkeit zur Massenänderung (DBFs!)Möglichkeit zur Massenänderung (DBFs!)

Page 8: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Die LösungDie Lösung

CursorAdapterCursorAdapter Vorteile:Vorteile:

Klasse – Vererbung, Eigenschaften, MethodenKlasse – Vererbung, Eigenschaften, Methoden Erstellter Cursor ähnlich AnsichtErstellter Cursor ähnlich Ansicht Einheitlicher DatenzugriffEinheitlicher Datenzugriff Datenzugriff auf DBC und SQL Server möglichDatenzugriff auf DBC und SQL Server möglich Umschaltbarkeit zur LaufzeitUmschaltbarkeit zur Laufzeit Typkonvertierung möglichTypkonvertierung möglich Builder in VFP vorhanden -> Beispiel Builder in VFP vorhanden -> Beispiel

Page 9: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Wie macht man es richtig?Wie macht man es richtig?

CursorAdapter-Klasse verwendenCursorAdapter-Klasse verwenden ConnectionManagerConnectionManager ConnectionManager liest Datenbankinformationen ConnectionManager liest Datenbankinformationen

aus Konfigurationsdateiaus Konfigurationsdatei

Wichtig:Wichtig: CursorAdapter-Funktionalität unbedingt in CursorAdapter-Funktionalität unbedingt in einer Klasse speichern -> keine Änderung in der einer Klasse speichern -> keine Änderung in der Datenumgebung von Formularen beim Wechsel der Datenumgebung von Formularen beim Wechsel der DatenquelleDatenquelle

Page 10: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

ProgrammstartProgrammstart Im Init Ereignis des Anwendungsobjekts wird der Im Init Ereignis des Anwendungsobjekts wird der

ConnectionManager instanziiertConnectionManager instanziiert Aus einer verschlüsselten Tabelle werden die Aus einer verschlüsselten Tabelle werden die

Datenbankinformationen gelesenDatenbankinformationen gelesen Beim Instanziieren eines CursorAdapters wird vom Beim Instanziieren eines CursorAdapters wird vom

ConnectionManager eine Connection geholtConnectionManager eine Connection geholt Die CursorAdapter-Klasse verwendet die Die CursorAdapter-Klasse verwendet die

Informationen des ConnectionManagersInformationen des ConnectionManagers

(Der gezeigte Code kommt auf die Begleit-CD (Der gezeigte Code kommt auf die Begleit-CD ))

Page 11: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

CursorAdapter KlasseCursorAdapter Klasse

Herstellen der Verbindung zur Datenbank über den Herstellen der Verbindung zur Datenbank über den ConnectionManagerConnectionManager

Holen von ID-WertenHolen von ID-Werten

WartbarkeitWartbarkeit Eingriffsmöglichkeit an vielen StellenEingriffsmöglichkeit an vielen Stellen

BeforeUpdate, AfterUpdateBeforeUpdate, AfterUpdate

Page 12: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

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

Speichern aus der Datenbank zu holenSpeichern aus der Datenbank zu holen InsertCmdRefreshCmd – wird nach dem Insert InsertCmdRefreshCmd – wird nach dem Insert

ausgeführt – Hier können IDs geholt werdenausgeführt – Hier können IDs geholt werden GETAUTOINCVALUE() bei DBCGETAUTOINCVALUE() bei DBCselect * from <myTable> where <IdField>=GETAUTOINCVALUE()select * from <myTable> where <IdField>=GETAUTOINCVALUE()

@@IDENTITY bei SQL Server@@IDENTITY bei SQL Server

Page 13: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

CursorAdapter KlasseCursorAdapter KlasseWas ist neu?Was ist neu?

Maximale Länge eines Eigenschaftwerts bei Eingabe im Eigenschaftsfenster 8 KBMaximale Länge eines Eigenschaftwerts bei Eingabe im Eigenschaftsfenster 8 KB Auto-Refresh-UnterstützungAuto-Refresh-Unterstützung

InsertCmdRefreshFieldList, InsertCmdRefreshCmd, InsertCmdRefreshKeyFieldList, InsertCmdRefreshFieldList, InsertCmdRefreshCmd, InsertCmdRefreshKeyFieldList, UpdateCmdRefreshFieldList, …, RefreshTimestampUpdateCmdRefreshFieldList, …, RefreshTimestamp

Erweiterte Refresh-UnterstützungErweiterte Refresh-Unterstützung RecordRefresh(), BeforeRecordRefresh(), …RecordRefresh(), BeforeRecordRefresh(), …

Verzögertes Abrufen von MemofeldernVerzögertes Abrufen von Memofeldern DelayedMemoFetch(), FetchMemoDataSource, …DelayedMemoFetch(), FetchMemoDataSource, …

Transaktionen bei Update, Insert, Delete: neue Eigenschaft UseTransactionsTransaktionen bei Update, Insert, Delete: neue Eigenschaft UseTransactions Besseres Konflikthandling ConflictCheckType / ConflictCheckCmd (VFP8 SP1)Besseres Konflikthandling ConflictCheckType / ConflictCheckCmd (VFP8 SP1) Neue Eigenschaft TimestampFieldListNeue Eigenschaft TimestampFieldList Lesen und Schreiben von hierarchischen XMLLesen und Schreiben von hierarchischen XML Diverse Erweiterungen bzgl. ADODiverse Erweiterungen bzgl. ADO

Page 14: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Connection Manager KlasseConnection Manager Klasse

Instanziierung ohne DatenanbindungInstanziierung ohne Datenanbindung Herstellen einer(!) Verbindung beim ersten BedarfHerstellen einer(!) Verbindung beim ersten Bedarf

Auslesen der Datenbankinformationen aus einer Datei Auslesen der Datenbankinformationen aus einer Datei möglichmöglich

Eine Connection für alle Datenzugriffe der AnwendungEine Connection für alle Datenzugriffe der Anwendung Verwendung mehrerer Datenbanken in einer Verwendung mehrerer Datenbanken in einer

AnwendungAnwendung In einer Eigenschaft jedes CursorAdapters steht der zu In einer Eigenschaft jedes CursorAdapters steht der zu

verwendende Connection Managerverwendende Connection Manager

Page 15: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Planen einer neuen AnwendungPlanen einer neuen Anwendung

Nur mit CusorAdapter Klasse arbeiten!Nur mit CusorAdapter Klasse arbeiten! Connection Manager verwendenConnection Manager verwenden Vorteile:Vorteile:

Es wird nur 1 Verbindung benötigtEs wird nur 1 Verbindung benötigt Austauschbarkeit der DatenquelleAustauschbarkeit der Datenquelle Wechsel von DBC zu SQL möglichWechsel von DBC zu SQL möglich Entscheidung je Kunde ob DBC oder SQL verwendet Entscheidung je Kunde ob DBC oder SQL verwendet

werden sollwerden soll

Page 16: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Ein Beispiel aus der PraxisEin Beispiel aus der Praxis

VFPVFP VFP?VFP? Venelina´ Fanstastic PizzasVenelina´ Fanstastic Pizzas

Page 17: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

VFPizzaVFPizza

Customers.scxCustomers.scx Erstellt mit dem VFX - Form BuilderErstellt mit dem VFX - Form Builder

Steuerlemente zur Eingabe von Parametern hinzugefügtSteuerlemente zur Eingabe von Parametern hinzugefügt CursorAdapter mit dem CA Wizard erstelltCursorAdapter mit dem CA Wizard erstellt SelectCmd um Where-Klausel erweitertSelectCmd um Where-Klausel erweitert

Page 18: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

VFPizzaVFPizza

Orders.scxOrders.scx 1:n Formular1:n Formular Erstellt mit dem VFX - Form BuilderErstellt mit dem VFX - Form Builder

Steuerlement zur Eingabe von Parametern hinzugefügtSteuerlement zur Eingabe von Parametern hinzugefügt CursorAdapter mit dem CA Wizard erstelltCursorAdapter mit dem CA Wizard erstellt SelectCmd um Where-Klausel erweitertSelectCmd um Where-Klausel erweitert

Page 19: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Datenquellen bearbeitenDatenquellen bearbeitenManage Config.vfxManage Config.vfx

Verwaltung des DatenzugriffsVerwaltung des Datenzugriffs

Dialog in der Anwendung beim Kunden nutzbarDialog in der Anwendung beim Kunden nutzbar

Problemloser Wechsel zwischen DBC und SQL ServerProblemloser Wechsel zwischen DBC und SQL Server ConnectionString empfehlenswertConnectionString empfehlenswert

Verschlüsselung mit KennwortVerschlüsselung mit Kennwort Einstellung mit dem Application BuilderEinstellung mit dem Application Builder goprogram.cconfigpasswordgoprogram.cconfigpassword

Page 20: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

TestTest

Läuft die Anwendung mit Läuft die Anwendung mit DBC und SQL Server?DBC und SQL Server?

Page 21: Client/Server mit Visual FoxPro 9.0 deutschsprachige FoxPro User Group Uwe Habermann Microsoft Visual FoxPro 9.0 Roadshow C/S.

Vielen Dank!Vielen Dank!

[email protected]@dFPUG.de

Besuchen Sie unsere Webseiten: Besuchen Sie unsere Webseiten: http://www.dfpug.dehttp://www.dfpug.de, , http://portal.dfpug.dehttp://portal.dfpug.de, , http://forum.dfpug.dehttp://forum.dfpug.de, ,

http://newsletter.dfpug.dehttp://newsletter.dfpug.de, , http://devcon.dfpug.dehttp://devcon.dfpug.de, , http://roadshow.dfpug.dehttp://roadshow.dfpug.de, , http://www.visualextend.dehttp://www.visualextend.de, ,

http://www.linuxtransfer.de, http://www.visualfoxpro.de http://www.linuxtransfer.de, http://www.visualfoxpro.de