PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → [WD 17] Problème réplication
[WD 17] Problème réplication
Débuté par Ambroise, 31 oct. 2018 09:37 - Aucune réponse
Posté le 31 octobre 2018 - 09:37
Bonjour,
Soit une base HF Classic accessible sur un partage réseau par 6 utilisateurs.
Un utilisateur doit pouvoir accéder à la base en mode déconnecté puis à son retour mettre à jour la base.

J'ai donc pensé à réaliser une réplication universelle afin de lui permettre de partir avec la base, travailler sur son portable puis resynchroniser à son retour sur le réseau.

Je n'ai jamais fait cela et je bloque pour cette première.

Voici mon code (insperé du site Developpez.com :

===>BTN_Créer_Replicat_Maitre
Multitâche(20)
Sablier(Vrai)
HGèreIntégrité("*","*",hCardinalité+hEnModification+hEnSuppression,Faux)
//-----------------------------------------------
// création des connexions aux bases de données
//-----------------------------------------------
HGèreRéplication(rplRéplicationUniverselle)
HDécritConnexion("ConnexionMaitre", "", "", gsDonnéesMaitre, "", hAccèsHF7)
HDécritConnexion("ConnexionAbonne", "", "", gsDonneesAbonné, "", hAccèsHF7)

//-----------------------------------------------
// création du réplica maitre
//-----------------------------------------------
HOuvreConnexion("ConnexionMaitre")
HChangeConnexion("*","ConnexionMaitre")
HCréeRéplicaMaître(gsRepertoireMaitre)

Sablier(Faux)


===>BTN_Créer_Replicat_Abonne
sListeTables est une chaîne =HListeFichier()

Multitâche(20)
Sablier(Vrai)
HGèreIntégrité("*","*",hCardinalité+hEnModification+hEnSuppression,Faux)
// on se fout de l'ordre des tables

//-----------------------------------------------
// création des connexions aux bases de données -
//-----------------------------------------------
HGèreRéplication(rplRéplicationUniverselle)
HDécritConnexion("ConnexionMaitre", "", "", gsDonnéesMaitre, "", hAccèsHF7)
HDécritConnexion("ConnexionAbonne", "", "", gsDonneesAbonné, "", hAccèsHF7)


//-----------------------------------------------
// création du réplica abonné -
//-----------------------------------------------
HOuvreConnexion("ConnexionAbonne")
HChangeConnexion("*","ConnexionAbonne")
HChangeRep("*", gsRepertoireAbonne)
HCreation(Activité)
---

Multitâche(20)

HCréeRéplicaAbonné(gsRepertoireMaitre,gsRepertoireAbonne,sIdentifiantAbonné,0,sListeTables)

Multitâche(-500)

//***************************************************************************************
// PREMIERE SYNCHRO *
// créer réplica Transportable à partir du maître pour stocker les données sur l'abonné *
// puis synchro *
//***************************************************************************************
HOuvreConnexion("ConnexionMaitre")
HChangeConnexion("*", "ConnexionMaitre")
HChangeRep("*",gsRepertoireMaitre)
SI HCréeRéplicaTransportable(sRéplicaMaitre,sIdentifiantAbonné,"") ALORS

HOuvreConnexion("ConnexionAbonne")
HChangeConnexion("*", "ConnexionAbonne")
HChangeRep("*",gsRepertoireAbonne)
sRéplicaTRansportable = gsRepertoireMaitre + RPL.Fichier

// synchronisation du réplica
SI HSynchroniseRéplica(sRéplicaTRansportable, sRéplicaAbonné,rplVersAbonné) ALORS
Multitâche(-500)
// Suppression du réplica transportable qui ne sera plus utilisé
//fSupprime(sRéplicaTRansportable)

SINON
FinProgramme("Echec de synchronisation.", ErreurInfo())
FIN
SINON
Erreur("Echec de création du premier réplica Transportable",ErreurInfo())

FIN
Sablier(Faux)


Mon problème :
* Le réplicat maitre se crée bien dans mon répertoire (RplMaitre.RPM avec tous les fichiers de donnée mais ils sont tous vides normal ?).
* J'ai dans le même répertoire un fichier Identifiant_M_001.SYN
* Dans mon répertoire de l'abonné, j'ai la création des tables (vides)
* Dans ce même répertoire, j'ai un fichier Replicat_Identifiant.RPL
* la fonction HSynchroniseReplica renvoie VRAI

POURTANT :
mes fichiers de donnée sur le poste abonné restent vides alors que si j'ai bien compris je devrais récupérer une copie du maître.

POURQUOI ?

Merci de votre aide.
Bonne journée et désolé pour la longueur de cette question.