PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → HsynchroniseReplica ne fonctionne pas en test.
HsynchroniseReplica ne fonctionne pas en test.
Débuté par Mat, 19 mai 2013 12:50 - 5 réponses
Posté le 19 mai 2013 - 12:50
Bonjour,
Je met en place une application sur PC et Smartphone Androïd avec une base de données HF Classic commune.
Pour la synchronisation, les fonctions de replication n'étant pas disponible sous androïd, je tente de passer par un répertoire tampon lors de la connection du smartphone à l'application PC.
[l'appli smartphone transfert la base dans ce répertoire, et ensuite l'appli PC gère la synchronisation]

Pour mes tests de synchronisation en mode dévelopement, j'ai créer un répertoire dans lequel j'ai placé mes fichiers "à vide" comme si ils provenaient de mon appli smartphone.
J'ai pour le moment le code suivant :

ProcedureReplication()
HGèreRéplication(rplRéplicationUniverselle)

//Répertoire de la base sur le PC
sRepertoireBaseMaitre est unechaîne="C:\Mes projets\MonProjet\Exe\"

sReplicaMaitre est unechaîne=HCréeRéplicaMaître(sRepertoireBaseMaitre)

//répertoire où est envoyé la base du smartphone
sRepertoireBaseAbonné est unechaîne="X:\SynChro"

sReplicaAbonné est unechaîne=HCréeRéplicaAbonné(sRepertoireBaseMaitre,sRepertoireBaseAbonné,"Smartphone")

//synchro initiale maitre/abonné
HCréeRéplicaTransportable(sRepertoireBaseMaitre+"ReplicaMaitre.rpm",sReplicaAbonné,"")

HSynchroniseRéplica(sRepertoireBaseMaitre+"To_Smartphone_001.rpa",sRepertoireBaseAbonné+sReplicaAbonné,rplVersAbonné)


J'ai bien à la suite de ce code la création de tous les fichiers (.RPM .RPL .SYN et .RPA) dans les bons répertoires.

La fonction
HsynchoniseReplica()
ne m'envoie pas les données de la base maître vers la base abonnée.

Est ce que j'ai fait une erreur ? Manque t-il quelques chose ?

>En vous remerciant.
Posté le 20 mai 2013 - 11:56
Bonjour,
Jai une erreur après le Hsyncrhonise (apparement) : "la description de réplica n'a pas été trouvé"
Dans mon code j'ai aussi essayé en utilisant la constante RPL.Fichier et j'ai la même erreur.
Voici mon code que j'ai modifié de nombreuse fois....

//Voir les répertoires à utiliser **********************
sRepertoireBaseMaitre est unechaîne="C:\Mes projets\MonProjet\Exe\"

HGèreRéplication(rplRéplicationUniverselle)

sReplicaMaitre est unechaîne=HCréeRéplicaMaître(sRepertoireBaseMaitre)

sRepertoireBaseAbonné est unechaîne="X:\SynChro\"

sReplicaAbonné est unechaîne=HCréeRéplicaAbonné(sRepertoireBaseMaitre,sRepertoireBaseAbonné,"Smartphone")

//synchro initiale maitre/abonné

HCréeRéplicaTransportable(sRepertoireBaseMaitre+"ReplicaMaitre.rpm","Smartphone","")
fCopieFichier(sRepertoireBaseMaitre+"To_Smartphone_001.rpa",sRepertoireBaseAbonné)

HSynchroniseRéplica(sRepertoireBaseAbonné+"To_Smartphone_001.rpa",sRepertoireBaseAbonné+sReplicaAbonné,rplVersAbonné)
Erreur("Erreur HyperFileSQL : "+HErreurInfo())
////supprimer les replicas transportables par la suite

HCréeRéplicaTransportable(sRepertoireBaseAbonné+"Replica_Smartphone.Rpl","Smartphone","")
fCopieFichier(sRepertoireBaseAbonné+"From_Smartphone_001.rpa",sRepertoireBaseMaitre)

HSynchroniseRéplica(sRepertoireBaseAbonné+"From_Smartphone_001.rpa",sRepertoireBaseAbonné+sReplicaAbonné,rplVersMaître)
>
Membre enregistré
6 messages
Posté le 20 mai 2013 - 18:35
Je poursuis mes tests,
j'ai complété mes procédures précédement postée en rajoutant 2 connexions ( comme dans l'exemple fournit).

j'ai l'erreur suivante au moment de
HSynchroniseRéplica()
:

Dump de l'erreur du module 'wd180vm.dll' (18.0.132.0).
Identifiant des informations détaillées (.err) : 1020
Informations de débogage :

Détails techniques :

Module : wd180rpl.dll
Version du module : 18.0.8.0
VI : 01F180056f
Adresse de base : 28E60000
Erreur système : Access violation (GPF)
EIP = 28E88FF0
OS : Windows XP ou .NET Service Pack 3(5.1.2600)
Registres :

EIP = 28E88FF0 EBP = 0012E470
EAX = 000000FA EBX = 0012E3FC
ECX = 00000001 EDX = 00380608
ESI = 02FFAFFD EDI = 05F55194

Pile des appels :

[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E823AD : Execution() + 27715 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 39932 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 36296 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 19060 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 19081 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 19081 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 19081 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 19081 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 19081 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 18804 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E6F050 : bTestBits() + 16492 bytes
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E62DF5
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E62921
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E62813
[wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E823AD : Execution() + 48443 bytes
[wd180vm.dll (25E60000), 18.0.132.0, 01F180056f] 25F73420 : InfoVersionWeb() + 573788 bytes
[wd180vm.dll (25E60000), 18.0.132.0, 01F180056f] 260D6C98
[wd180vm.dll (25E60000), 18.0.132.0, 01F180056f] 25EE2DB0 : EXT_bSetVariableCollection() + 361888 bytes
[wd180vm.dll (25E60000), 18.0.132.0, 01F180056f] 25EA06E0 : Execution() + 79776 bytes
[wd180vm.dll (25E60000), 18.0.132.0, 01F180056f] 25EE2DB0 : EXT_bSetVariableCollection() + 191840 bytes
[wd180vm.dll (25E60000), 18.0.132.0, 01F180056f] 25F73420 : InfoVersionWeb() + 573312 bytes

Informations supplémentaires :
EIT_PILEWL :
Procédure globale Replication (Procedures globales de CéréaScop-V2.Replication), ligne 27
EIT_DATEHEURE : 20/05/2013 18:17:48


>Si qqun avait une idée ou j'envoie au support technique ? En vous remerciant
Membre enregistré
6 messages
Posté le 20 mai 2013 - 21:54
Je poste le code qui me renvoie l'erreur précédement citée : (j'ai finalement enlevé les connexions qui ne changent rien au problème)
ProcedureReplication()
//Voir les répertoires à utiliser **********************

sRepertoireBaseMaitre est unechaîne="C:\Mes projets\CéréaScop-V2\Exe\"
sRepertoireBaseAbonné est unechaîne="X:\SynChro\"
sRepertoireTransfert est unechaîne="C:\TestTransfert\"
HGèreRéplication(rplRéplicationUniverselle)

sReplicaMaitre est unechaîne=HCréeRéplicaMaître(sRepertoireBaseMaitre)

sReplicaAbonné est unechaîne=HCréeRéplicaAbonné(sRepertoireBaseMaitre,sRepertoireBaseAbonné,"Smartphone")

//synchro initiale maitre/abonné
HCréeRéplicaTransportable(sRepertoireBaseMaitre,"Smartphone","")

fCopieFichier(sRepertoireBaseMaitre+RPL.Fichier,sRepertoireTransfert)

HSynchroniseRéplica(sRepertoireTransfert+RPL.Fichier,sRepertoireBaseAbonné,rplVersAbonné)


HCréeRéplicaTransportable(sRepertoireBaseAbonné+"Replica_Smartphone.rpl","Smartphone","")
fCopieFichier(sRepertoireBaseAbonné+RPL.Fichier,sRepertoireTransfert)

HSynchroniseRéplica(sRepertoireTransfert+RPL.Fichier,sRepertoireBaseAbonné+sReplicaAbonné,rplVersMaître)
>
Message modifié, 20 mai 2013 - 21:56
Membre enregistré
6 messages
Posté le 21 mai 2013 - 16:05
Bonjour,
après de très nombreux tests, je suis parvenu à faire une synchro (presque bien) en passant par un répertoire "tampon".
Je ré-explique globalement.

1- L'objectif est de synchroniser (via USB) une appli smartphone ANDROID avec une appli version PC. Il y a donc une BDD identique Commune.
2- Les fonctions HF de réplication ne sont pas disponible sous Androïd, c'est donc l'application PC qui gère la synchronisation.
3- j'ai écrit une procédure de réplication en utilisant la réplication universelle (comme si il y avait 2 BDD différentes). Lors de la connexion du smartphone via USB, l'application PC copie la BDD du smartphone dans un répertoire local, puis j'execute la procedure de replication (exactement du principe de l'exemple WD Replication Universelle de Windev)

J'ai donc repris tout depuis le départ, replacé des connexions pour différencier les emplacements.

Mais surtout j'ai tester sur un PC en windows 7 plus performant... (le premier était en XP et provoque une erreur fatal GPF Access Violation encore inexpliquée pour moi).

j'ai 8 fichiers dont 2 entre 12000 et 60 000 enregistrements. (il manque environ 2000 enregistrements qui sont en fait des doublons dans la base maitre que je n'ai pas encore supprimé)

Qqun saurait il si cela est "normal" ?

Dernière procedure fonctionnant :

ProcedureReplication()
sRepertoireBaseMaitre est unechaîne="C:\Mes projets\CéréaScop-V2\Exe\"
sRepertoireBaseAbonné est unechaîne="C:\SynChro\"
sRepertoireTransfert est unechaîne="C:\TestTransfert\"
HGèreRéplication(rplRéplicationUniverselle)
// Connexions qui seront utilisées pour être à un instant donné connecté à une base ou une autre...
HDécritConnexion("ConnexionPC","","",sRepertoireBaseMaitre,"",hAccèsHF7)
HDécritConnexion("ConnexionSmartphone","","",sRepertoireBaseAbonné,"",hAccèsHF7)

HOuvreConnexion("ConnexionPC")
HChangeConnexion("*","ConnexionPC")
sReplicaMaitre est unechaîne=HCréeRéplicaMaître(sRepertoireBaseMaitre)

//voir si laisser ici la création du réplica abooné
sReplicaAbonné est unechaîne=HCréeRéplicaAbonné(sRepertoireBaseMaitre,sRepertoireBaseAbonné,"Smartphone")

//synchro initiale maitre/abonné
HCréeRéplicaTransportable(sRepertoireBaseMaitre,"Smartphone","")
fCopieFichier(sRepertoireBaseMaitre+RPL.Fichier,sRepertoireTransfert)

//Synchronisation du maitre vers l'abonné
HOuvreConnexion("ConnexionSmartphone")
HChangeConnexion("*","ConnexionSmartphone")
HSynchroniseRéplica(sRepertoireTransfert+RPL.Fichier,sRepertoireBaseAbonné,rplVersAbonné)
//Erreur("Erreur HyperFileSQL : " + HErreurInfo())

HCréeRéplicaTransportable(sRepertoireBaseAbonné+"Replica_Smartphone.rpl","Smartphone","")
fCopieFichier(sRepertoireBaseAbonné+RPL.Fichier,sRepertoireTransfert)
//de l'abonné vers le maitre
HOuvreConnexion("ConnexionPC")
HChangeConnexion("*","ConnexionPC")
HSynchroniseRéplica(sRepertoireTransfert+RPL.Fichier,sRepertoireBaseAbonné+sReplicaAbonné,rplVersMaître)
>
Message modifié, 21 mai 2013 - 16:13
Membre enregistré
2 messages
Posté le 19 mars 2020 - 03:52
Bonjour j'ai un difficulte pour effectuer une replication je suis debutant. mais j'ai une erreur a la fin que je n'arrive pas a savoir ou resourdre. je n'arrive pas a deployer le server de replication. j'ai pplusieurs fichiers a repliquer. mais j'ai eu tjrs le meme type d'erreur.




est ce que quelqu'un peut m'aider stp.

>merci deja