26
Uwe Habermann [email protected] Datenbanksynchronisati on Venelina Jordanova [email protected]

Uwe Habermann [email protected] Datenbanksynchronisation Venelina Jordanova [email protected]

Embed Size (px)

Citation preview

Page 1: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Uwe [email protected]

Datenbanksynchronisation

Venelina [email protected]

Page 2: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Synchronisierung

* Wofür brauche ich das?* Datenabgleich mit Filialen* Datenabgleich mit Vertretern* Datenabgleich mit Außenstellen* Wenn Online-Verbindung nicht (immer)

möglich ist

Page 3: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Synchronisierung

* Features* Mehrere Datenbanken in einem Ordner

oder in verschiedenen Ordnern* Freie Tabellen* Berücksichtigung von Berechtigungen

durch eigenen Code möglich* Unterstützung von Löschungen

Page 4: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Wie geht das?

* FTP Protokoll

* 1 Server – viele Clients

* Austausch von Ini Dateien

* Austausch von Zip Dateien mit Daten

* Parallelbetrieb von Server und Client

Page 5: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Voraussetzungen beim Server

* Ab Windows 2000

* IIS und FTP Server

* Benutzerkonto mit FTP Zugriffsrechten* Die Zungangsdaten sind den Clients bekannt

* Ordner mit FTP Zugriffsrechten

* Dienst installieren

* Dll registrieren

Page 6: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Installation des Servers

* Benutzerkonto mit FTP Zugriffsrechten anlegen

* Ordner mit FTP Zugriffsrechten anlegen

* Dienst installieren

* Dll registrieren

* Server.ini Datei anlegen

Page 7: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Server.ini[FOLDERS]

CLIENTINIFOLDER=C:\Inetpub\ftproot\FTPSync\CLIENTINI

SERVERINIFOLDER=C:\Inetpub\ftproot\FTPSync\SERVERINI

CLIENTDATAFOLDER=C:\Inetpub\ftproot\FTPSync\CLIENTDATA

SERVERDATAFOLDER=C:\Inetpub\ftproot\FTPSync\SERVERDATA

CLIENTCONFIRMATIONFOLDER=C:\Inetpub\ftproot\FTPSync\CLIENTCONFIRMATION

SERVERCONFIRMATIONFOLDER=C:\Inetpub\ftproot\FTPSync\SERVERCONFIRMATION

CREATEDATABASEPRGFOLDER=DATABASES

[\FOLDERS]

[DATABASES]

[C:\FTPSYNC\DATA\vfp],[vfp]

[\DATABASES]

[TIMER]

SYNCHRONIZATIONEXE=C:\FTPSync\FTPSyncServer.exe

*!* Timeouts and delay are in seconds

INITIMEOUT=60

DATATIMEOUT=60

CONFIRMATIONTIMEOUT=60

DELAY=0.5

*!* In log files it will be written if only the file exist

SERVICELOGFILE=C:\TEMP\SYNCSERVICE.LOG

SERVERLOGFILE=C:\TEMP\SYNCSERVER.LOG

[\TIMER]

Page 8: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Voraussetzungen beim Client

* Internetverbindung

* FTP muss möglich sein (frei in Firewall)* Port konfigurierbar, Standard 21

* Normale VFP 9 Anwendung muss laufen

* Ini Datei mit Pfadeinstellungen

* Protokollierung in Log Datei möglich

Page 9: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Voraussetzungen beim Client

* Die Synchronisierung von gelöschten Datensätzen funktioniert nur, wenn mit Cursoradaptern gearbeitet wird

Page 10: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Server Komponenten

* Windows Dienst

* Exe Datei?

* DLL auf dem Server

Page 11: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Client Komponenten

* Klassenbibliotheken* VfxFtpSync.vcx* VfxFtpSyncClient.vcx* VfxFtpSyncClientBase.vcx

Page 12: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Integration in VFPizza

* Vorbereitetes Projekt verwenden!

Page 13: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Anforderungen an die Datenbank

* Wir empfehlen GUIDs zu verwenden* Feldtyp C(36)

* Von der Datenbank vergebene Primärschlüssel werden nicht unterstützt!

Page 14: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Anforderungen an die Datenbank

* Es müssen folgende Felder in allen zu synchronisierenden vorhanden sein:

* Edt_Date T

* Edt_Usr C(36)

* Ins_Date T

* Ins_Usr C(36)

* Del_Flag N(1)

* Sync_Date T

Page 15: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Appl.vcx - cFoxAppl

* .cDel_Fld = Del_Flag

* .lFillEditDateForNewRecords = .T.

* .lUseGUIDsKeys = .T.

* .lUseUTCTime = .T.

Page 16: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

VFXSDef.dbf

* Ein Datensatz enthält alle für FTP erforderlichen Einstellungen

Page 17: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

VFXSDef.dbf

* FtpUrl = www.outsourcingitservices.net

* FtpPort = 21

* FtpUpIni = FTPSync/CLIENTINI

* FtpDwnIni = FTPSync/SERVERINI

* FtpUpData = FTPSync/CLIENTDATA

* FtpDwnData = FTPSync/SERVERDATA

Page 18: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

VFXSDef.dbf

* FtpUpConf = FTPSync/CLIENTCONFIRMATION

* Ftpdwnconf = FTPSync/SERVERCONFIRMATION

* Ftpuser =

* Ftppass =

Page 19: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Start der Synchronisierung

* Neues Formular basierend auf cForm

* Per Drag&Drop cFtpsyncclient aus VfxFtpSyncClient auf das Formular fallenlassen

* Commandbutton auf das Formular ziehen

Page 20: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Start der Synchronisierung

* Im Click Ereignis schreiben:

llRes = ThisForm.oFtpSyncClient.Execute()

Wait Window llRes

Page 21: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Vfxfopen.dbf

* Eintrag für das neue Formular hinzufügen

Page 22: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Client.ini

[DATABASES]

[DATA\vfp],[vfp]

[\DATABASES]

[TIMER]

INITIMEOUT=30

DATATIMEOUT=30

CONFIRMATIONTIMEOUT=30

DELAY=0.5

CLIENTLOGFILE=SYNCCLIENT.LOG

[\TIMER]

Page 23: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Jetzt kann getestet werden!

Page 24: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Und jetzt auch noch Code…

* VfxFtpSyncClient.vcx

* cFtpSyncClient* Kann bei Bedarf angepasst werden* Insbesondere SELECT

Page 25: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Ablauf der Synchronisierung

* Ini Upload

* Datenaufbereitung beim Server

* Datenaufbereitung beim Client

* Upload einer Zip Datei

* Download einer Zip Datei

* Auspacken des Archivs

* Integration der Daten in die Datenbank

Page 26: Uwe Habermann Uwe@VandU.eu Datenbanksynchronisation Venelina Jordanova Venelina@VandU.eu

Das Mittagessen wartet…

Um 14.00 Uhr geht es weiter