1 / 21

Client/Server mit Visual FoxPro 9.0

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

licia
Download Presentation

Client/Server mit Visual FoxPro 9.0

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Die Idee • Eine Anwendung soll so erstellt werden, dass beim Kunden entschieden werden kann, ob mit einer VFP-Datenbank oder mit einem SQL Server gearbeitet werden soll. • Alle Formulare und Klassen müssen unabhängig von der Datenquelle sein.

  3. Die Möglichkeiten • Remote Views • Basierend auf einer Connection im DBC gespeichert • SPT (SQL Pass Through) • Native Datenbank- oder ODBC-Syntax • Beliebige Befehle/Scripts verarbeitbar • (Fast) vollständige Kontrolle über Befehlsausführung • Für „normale“ Anwendungsfälle eher umständlich • Nichts für die einfache Portierbarkeit • CursorAdapter

  4. Remote Views vs. CursorAdapter • Remote View und Connection im DBC gespeichert • Nachteil: • DBC muss verwendet werden • 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

  5. Vorteile SQL Server • Verfügbarkeit • Clients haben keinen Einfluss auf die Serverdatenbank • Wartungsaufgaben und Backup im laufenden Betrieb • Datensicherheit • Datenbank ist vor direktem Zugriff geschützt • Security-Modell • Skalierbarkeit

  6. Nachteile SQL Server • Betreuungsaufwand • Qualifiziertes Betreuungspersonal notwendig • Einzelne Tabellen können nicht kopiert oder ersetzt werden • Lizenzkosten • Oder kostenlos für den Einstieg: • SQL Server Desktop Engine • SQL Server 2005 Express • Oder VAR-Vertrag mit Microsoft

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

  8. Die Lösung • CursorAdapter • Vorteile: • Klasse – Vererbung, Eigenschaften, Methoden • Erstellter Cursor ähnlich Ansicht • Einheitlicher Datenzugriff • Datenzugriff auf DBC und SQL Server möglich • Umschaltbarkeit zur Laufzeit • Typkonvertierung möglich • Builder in VFP vorhanden -> Beispiel 

  9. Wie macht man es richtig? • CursorAdapter-Klasse verwenden • ConnectionManager • ConnectionManager liest Datenbankinformationen aus Konfigurationsdatei • Wichtig: CursorAdapter-Funktionalität unbedingt in einer Klasse speichern -> keine Änderung in der Datenumgebung von Formularen beim Wechsel der Datenquelle

  10. Programmstart • Im Init Ereignis des Anwendungsobjekts wird der ConnectionManager instanziiert • Aus einer verschlüsselten Tabelle werden die Datenbankinformationen gelesen • Beim Instanziieren eines CursorAdapters wird vom ConnectionManager eine Connection geholt • Die CursorAdapter-Klasse verwendet die Informationen des ConnectionManagers (Der gezeigte Code kommt auf die Begleit-CD )

  11. CursorAdapter Klasse • Herstellen der Verbindung zur Datenbank über den ConnectionManager • Holen von ID-Werten • Wartbarkeit • Eingriffsmöglichkeit an vielen Stellen • BeforeUpdate, AfterUpdate

  12. IDs • IDs sollten von der Datenbank vergeben werden • CursorAdapter ermöglichen diese IDs nach dem Speichern aus der Datenbank zu holen • 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

  13. CursorAdapter KlasseWas ist neu? • Maximale Länge eines Eigenschaftwerts bei Eingabe im Eigenschaftsfenster 8 KB • Auto-Refresh-Unterstützung • InsertCmdRefreshFieldList, InsertCmdRefreshCmd, InsertCmdRefreshKeyFieldList, UpdateCmdRefreshFieldList, …, RefreshTimestamp • Erweiterte Refresh-Unterstützung • RecordRefresh(), BeforeRecordRefresh(), … • Verzögertes Abrufen von Memofeldern • DelayedMemoFetch(), FetchMemoDataSource, … • Transaktionen bei Update, Insert, Delete: neue Eigenschaft UseTransactions • Besseres Konflikthandling ConflictCheckType / ConflictCheckCmd (VFP8 SP1) • Neue Eigenschaft TimestampFieldList • Lesen und Schreiben von hierarchischen XML • Diverse Erweiterungen bzgl. ADO

  14. Connection Manager Klasse • Instanziierung ohne Datenanbindung • Herstellen einer(!) Verbindung beim ersten Bedarf • Auslesen der Datenbankinformationen aus einer Datei möglich • Eine Connection für alle Datenzugriffe der Anwendung • Verwendung mehrerer Datenbanken in einer Anwendung • In einer Eigenschaft jedes CursorAdapters steht der zu verwendende Connection Manager

  15. Planen einer neuen Anwendung • Nur mit CusorAdapter Klasse arbeiten! • Connection Manager verwenden • 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

  16. Ein Beispiel aus der Praxis • VFP • VFP? • Venelina´ Fanstastic Pizzas • 

  17. VFPizza • Customers.scx • Erstellt mit dem VFX - Form Builder • Steuerlemente zur Eingabe von Parametern hinzugefügt • CursorAdapter mit dem CA Wizard erstellt • SelectCmd um Where-Klausel erweitert

  18. VFPizza • Orders.scx • 1:n Formular • Erstellt mit dem VFX - Form Builder • Steuerlement zur Eingabe von Parametern hinzugefügt • CursorAdapter mit dem CA Wizard erstellt • SelectCmd um Where-Klausel erweitert

  19. 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

  20. Test • Läuft die Anwendung mit DBC und SQL Server?

  21. Vielen Dank! Uwe.Habermann@dFPUG.de Besuchen Sie unsere Webseiten: http://www.dfpug.de, http://portal.dfpug.de, http://forum.dfpug.de, http://newsletter.dfpug.de, http://devcon.dfpug.de, http://roadshow.dfpug.de, http://www.visualextend.de, http://www.linuxtransfer.de, http://www.visualfoxpro.de

More Related