client / server mit visual foxpro 9.0 deutschsprachige foxpro user group rainer becker microsoft...
Post on 05-Apr-2015
148 Views
Preview:
TRANSCRIPT
Client / Server mit Client / Server mit Visual FoxPro 9.0Visual FoxPro 9.0
deutschsprachige FoxPro User Groupdeutschsprachige FoxPro User Group
Rainer BeckerRainer Becker
Microsoft Visual FoxPro 9.0 WebCastMicrosoft Visual FoxPro 9.0 WebCast
C/S
Teil 4: Arbeiten mit C/STeil 4: Arbeiten mit C/S
Mittwoch, 13.7.2005, 16:00 – 17:00 UhrMittwoch, 13.7.2005, 16:00 – 17:00 Uhr Microsoft Visual FoxPro ist schon seit einem Jahrzehnt ein Microsoft Visual FoxPro ist schon seit einem Jahrzehnt ein
beliebtes Frontend für Client/Server-Datenbanken wie beliebtes Frontend für Client/Server-Datenbanken wie Microsoft SQL-Server. Über die Hälfte der FoxPro-Entwickler Microsoft SQL-Server. Über die Hälfte der FoxPro-Entwickler weltweit entwickelt auch oder ausschliesslich Anwendungen weltweit entwickelt auch oder ausschliesslich Anwendungen auf Basis von MSDE und/oder SQL-Server. In der neuen auf Basis von MSDE und/oder SQL-Server. In der neuen Version 9.0 von Microsoft Visual FoxPro werden diese Version 9.0 von Microsoft Visual FoxPro werden diese Möglichkeiten noch weiter ausgebaut. Unter anderem wurde Möglichkeiten noch weiter ausgebaut. Unter anderem wurde die Cursor Adaptor-Klasse stark verbessert und weitere die Cursor Adaptor-Klasse stark verbessert und weitere Werkzeuge wie der Dataexplorer werden zur Verfügung Werkzeuge wie der Dataexplorer werden zur Verfügung gestellt.gestellt.
Rainer BeckerRainer Becker
dFPUGdFPUG Online-AngeboteOnline-Angebote LoseblattsammlungLoseblattsammlung
VFP-EntwicklerkonferenzVFP-Entwicklerkonferenz VFP-LokalisierungVFP-Lokalisierung Framework Visual ExtendFramework Visual Extend MVP, MCP, ISVMVP, MCP, ISV Wizards & Builders GmbHWizards & Builders GmbH
Wie bekomme ich VFP ?Wie bekomme ich VFP ?
Update von 6.0, 7.0, 8.0 sowie VS 97Update von 6.0, 7.0, 8.0 sowie VS 97 Nicht von VFP 5.0 oder früherNicht von VFP 5.0 oder früher
Internationale und US/Canada-VersionInternationale und US/Canada-Version Preisunterschied durch DollarverfallPreisunterschied durch Dollarverfall Technisch identischTechnisch identisch Kein Support / Marketingbudget für US-Version in BRDKein Support / Marketingbudget für US-Version in BRD
dFPUG bietet exklusiv „Deutsche Version“dFPUG bietet exklusiv „Deutsche Version“ Benutzeroberfläche, Berichtsdesigner, WerkzeugeBenutzeroberfläche, Berichtsdesigner, Werkzeuge
Zum Warmlaufen: DataExplorerZum Warmlaufen: DataExplorer
Vorstellung: Neues Werkzeug DataExplorerVorstellung: Neues Werkzeug DataExplorer Aufrufbar aus der Taskpane oder direktAufrufbar aus der Taskpane oder direkt Datenzugriff (Ersatz für Enterprise Manager)Datenzugriff (Ersatz für Enterprise Manager) CodegenerierungCodegenerierung Anpassbarkeit direkt oder über QuellcodeAnpassbarkeit direkt oder über Quellcode Ab VFP 9.0 SP1: evtl. freie MitlieferbarkeitAb VFP 9.0 SP1: evtl. freie Mitlieferbarkeit
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.
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
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 lesbar (!)Verbindungsinformationen im Klartext lesbar (!)
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 Vererbung möglich für bessere WartbarkeitVererbung möglich für bessere Wartbarkeit
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
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 Engine (MSDE)SQL Server Desktop Engine (MSDE) SQL Server 2005 ExpressSQL Server 2005 Express
Oder VAR-Vertrag mit MicrosoftOder VAR-Vertrag mit Microsoft
Optimierungsmöglichkeiten DBFOptimierungsmöglichkeiten DBF
Verzeichniskomprimierung (+10% Performance!)Verzeichniskomprimierung (+10% Performance!) Virusfilter für Endungen abschaltenVirusfilter für Endungen abschalten Verzicht auf Verschlüsselung (siehe oben)Verzicht auf Verschlüsselung (siehe oben) Verzicht auf Indizes mit wenig UnterscheidungVerzicht auf Indizes mit wenig Unterscheidung Abschaltung Opportunistic LockingAbschaltung Opportunistic Locking HardwareHardware
Mehrere / schnellere NetzwerkkartenMehrere / schnellere Netzwerkkarten User auf Stränge verteilen (z.B. 10 User/Strang)User auf Stränge verteilen (z.B. 10 User/Strang) Gute HD-Controller mit viel CacheGute HD-Controller mit viel Cache (notfalls) Verteilung von DBF und CDX auf versch. Festplatten(notfalls) Verteilung von DBF und CDX auf versch. Festplatten
QuerverweiseQuerverweise
03-21 Schützen einer Tabelle in einem DBC03-21 Schützen einer Tabelle in einem DBC Verwendung von DatenbankcontainerereignissenVerwendung von Datenbankcontainerereignissen
03-23 Schützen von VFP Daten03-23 Schützen von VFP Daten Verhindert Sichtbarkeit des Datenverzeichnisses und somit Verhindert Sichtbarkeit des Datenverzeichnisses und somit
Zugriff durch Endanwender!Zugriff durch Endanwender! 03-24 Die Normalisierung von Daten03-24 Die Normalisierung von Daten
generell und immer sinnvoll und notwendiggenerell und immer sinnvoll und notwendig
UpsizingUpsizing
VFP Upsizing WizardVFP Upsizing Wizard Update für SQL-Server 2005 angekündigtUpdate für SQL-Server 2005 angekündigt
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!)
Ankündigung in eigener SacheAnkündigung in eigener Sache VFX Upsizing WizardVFX Upsizing Wizard
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
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
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 ist frei downloadbar)(Der gezeigte Code ist frei downloadbar)
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
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
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
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
Ein Beispiel aus der PraxisEin Beispiel aus der Praxis
VFPVFP VFP?VFP? Venelina´ Fanstastic PizzasVenelina´ Fanstastic Pizzas
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
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
Datenquellen bearbeitenDatenquellen bearbeitenBeispiel: Manage Config.vfxBeispiel: Manage Config.vfx
Verwaltung des Datenzugriffs sinnvoll / notwendigVerwaltung des Datenzugriffs sinnvoll / notwendig Dialog in der Anwendung beim Kunden praktischDialog in der Anwendung beim Kunden praktisch Problemloser Wechsel zwischen DBC und SQL Problemloser Wechsel zwischen DBC und SQL
ServerServer ConnectionString empfehlenswertConnectionString empfehlenswert
Verschlüsselung mit KennwortVerschlüsselung mit Kennwort Einstellung mit dem Application BuilderEinstellung mit dem Application Builder goprogram.cconfigpasswordgoprogram.cconfigpassword
TestTest
Läuft die Anwendung mit Läuft die Anwendung mit DBC und SQL Server?DBC und SQL Server?
Download Beispiel mit Download Beispiel mit Quellcode unterQuellcode unterhttp://files.visualextend.de/http://files.visualextend.de/files90/VFPizza90.zipfiles90/VFPizza90.zip(kein VFX benötigt!)(kein VFX benötigt!)
CursorAdapter KlasseCursorAdapter KlasseWas ist neu?Was ist neu?
Maximale Länge eines Eigenschaftwerts bei Eingabe: 8 KBMaximale Länge eines Eigenschaftwerts bei Eingabe: 8 KB Auto-Refresh-UnterstützungAuto-Refresh-Unterstützung
InsertCmdRefreshFieldList, InsertCmdRefreshCmd, InsertCmdRefreshFieldList, InsertCmdRefreshCmd, InsertCmdRefreshKeyFieldList, UpdateCmdRefreshFieldList, …, InsertCmdRefreshKeyFieldList, UpdateCmdRefreshFieldList, …, RefreshTimestampRefreshTimestamp
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: Eigenschaft UseTransactionsTransaktionen bei Update, Insert, Delete: Eigenschaft UseTransactions Besseres Konflikthandling ConflictCheckType / ConflictCheckCmd (SP1)Besseres Konflikthandling ConflictCheckType / ConflictCheckCmd (SP1) Neue Eigenschaft TimestampFieldListNeue Eigenschaft TimestampFieldList Lesen und Schreiben von hierarchischen XMLLesen und Schreiben von hierarchischen XML Diverse Erweiterungen bzgl. ADODiverse Erweiterungen bzgl. ADO
Weiterführendes MaterialWeiterführendes Material
Visual FoxPro 9.0Visual FoxPro 9.0 UpdatebuchUpdatebuch Roadshow-CDRoadshow-CD Lokalisierungs-CDLokalisierungs-CD
Visual FoxPro 8.0Visual FoxPro 8.0 UpdatebuchUpdatebuch Deutsche HilfedateiDeutsche Hilfedatei
Online-Angebote der dFPUGOnline-Angebote der dFPUG Forum, Portal, eNewsletter, Homepage, WikiForum, Portal, eNewsletter, Homepage, Wiki
Teil 5: Arbeiten mit BerichtenTeil 5: Arbeiten mit Berichten Mittwoch, 10.8.2005, 16:00 – 17:00 UhrMittwoch, 10.8.2005, 16:00 – 17:00 Uhr Die objektorientierte Entwicklungsumgebung und relationale Die objektorientierte Entwicklungsumgebung und relationale
Datenbank Microsoft Visual FoxPro liefert seit jeher eine Datenbank Microsoft Visual FoxPro liefert seit jeher eine Vielzahl von Werkzeugen gleich mit. Besonders beliebt ist Vielzahl von Werkzeugen gleich mit. Besonders beliebt ist dabei der Berichtsgenerator, der lizenzkostenfrei an alle dabei der Berichtsgenerator, der lizenzkostenfrei an alle Anwender mitgeliefert werden darf. In der neuen Version 9.0 Anwender mitgeliefert werden darf. In der neuen Version 9.0 wurde der Berichtsgenerator grundlegend überarbeitet und wurde der Berichtsgenerator grundlegend überarbeitet und massiv erweitert. Behandelt werden die neuen Werkzeuge für massiv erweitert. Behandelt werden die neuen Werkzeuge für die Gestaltung und Anzeige von Berichten durch Entwickler die Gestaltung und Anzeige von Berichten durch Entwickler und im neuen geschützten Modus durch Endanwender sowie und im neuen geschützten Modus durch Endanwender sowie die neuen Anforderungen an die Auslieferung der die neuen Anforderungen an die Auslieferung der Komponenten mit der Anwendung. Komponenten mit der Anwendung.
Teil 6: Ausführen von BerichtenTeil 6: Ausführen von Berichten
Mittwoch, 17.8.2005, 16:00 – 17:00 UhrMittwoch, 17.8.2005, 16:00 – 17:00 Uhr Die objektorientierte Entwicklungsumgebung und relationale Die objektorientierte Entwicklungsumgebung und relationale
Datenbank Microsoft Visual FoxPro liefert seit jeher eine Datenbank Microsoft Visual FoxPro liefert seit jeher eine Vielzahl von Werkzeugen gleich mit. Besonders beliebt ist Vielzahl von Werkzeugen gleich mit. Besonders beliebt ist dabei der Berichtsgenerator, der lizenzkostenfrei an alle dabei der Berichtsgenerator, der lizenzkostenfrei an alle Anwender mitgeliefert werden darf. In der neuen Version 9.0 Anwender mitgeliefert werden darf. In der neuen Version 9.0 wurde der Berichtsgenerator grundlegend überarbeitet und wurde der Berichtsgenerator grundlegend überarbeitet und massiv erweitert. Behandelt werden die neuen Ausgabe-massiv erweitert. Behandelt werden die neuen Ausgabe-optionen und die Programmierbarkeit zur Laufzeit in optionen und die Programmierbarkeit zur Laufzeit in verschiedenen Beispielen sowie die zusätzlich mögliche verschiedenen Beispielen sowie die zusätzlich mögliche Erweiterung der Berichtsausgabe in PDF-Dateien. Erweiterung der Berichtsausgabe in PDF-Dateien.
Vielen Dank!Vielen Dank!
Fragen an hotline@dfpug.deFragen an hotline@dfpug.deoder besser http://forum.dfpug.de oder besser http://forum.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.de, , http://devcon.dfpug.de, http://roadshow.dfpug.de, http://www.visualextend.de, http://roadshow.dfpug.de, http://www.visualextend.de,
http://www.linuxtransfer.de, http://www.visualfoxpro.de http://www.linuxtransfer.de, http://www.visualfoxpro.de
top related