PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD9] PB : Replication - l'abonné n'utilise pas les bons Id
[WD9] PB : Replication - l'abonné n'utilise pas les bons Id
Débuté par GAGNON.RENAUD, 10 jan. 2006 10:53 - 1 réponse
Posté le 10 janvier 2006 - 10:53
bonjour,

j'ai un petit probleme de replication,
mon abonné n'utiliste pas la plage d'id indiqué par le RPL, il commence a 1 alorsqu'il devrai commencer a 100000

le resultat est que sur le maitre je fait tout les insertions sur les tables que je veut, je peut syncroniser, sans probleme, j'ouvre l'abonné, il a bien tout les enregistrements ajouté par le maitre, mais quand je veut en rajouter un autre, mon abonné essaie d'utiliser l'ID1 et non celui defini par le RPL ce qui fait que j'ai une erreur de doublon sur clé : ID auto.

pour etre le plus clair possible je vous publie un extrai de code ainsi qu'une image.
[URL]



[/URL]
Création du maitre
HChangeRep("*",SCSelecteurRépertoire.SAIS_REP)
HChangeRepJnl("*",SCSelecteurRépertoire.SAIS_REP,SCSelecteurRépertoire.SAIS_REP)
HCreation(Replication_config,"swap")
HRAZ(Replication_config)
Replication_config.Poste="A"
Replication_config.MOI=1
Replication_config.Type=1 // 1:maitre 3:Abonné
Replication_config.Chemin=SCSelecteurRépertoire.SAIS_REP //chemin saisi par l'utilisateur c:\BDD dans mon cas
HAjoute(Replication_config) //c'est un fichier de config sur chaque poste, il permet de determiner si je suis poste abonné, maitre, ou client reseau
HCréationSiInexistant("*","swap")
HCréeRéplicaMaître(SCSelecteurRépertoire.SAIS_REP+"\ReplicaMaitre.RPM")

Création de l'abonné
SI fRep(Csrepertoire.SAIS_REP+"client.fic", frFichier)<>"" ALORS
Erreur("Les fichiers données pour ce poste ont déjà été créés.")
RETOUR
SINON
SI fRepCrée(Csrepertoire.SAIS_REP) ALORS
//G_BDD_Path est le repertoire ou est stoqué la BASE du maitre c:\BDD et Csrepertoire.SAIS_REP est celle de l'abonné X:\DATA
SI HCréeRéplicaAbonné(G_BDD_Path+"\ReplicaMaitre.RPM",Csrepertoire.SAIS_REP,Replication_config.IDReplication_config,plage_ID) ALORS
HFerme("*")
Multitâche(40)
HOuvre(Replication_fichier,"swap")
HLitPremier(Replication_fichier,Fichier)
TANTQUE PAS HEnDehors(Replication_fichier)
csmsg="copie de : "+Replication_fichier.fichier
fCopieFichier(G_BDD_Path+"\"+Replication_fichier.fichier+".FIC", Csrepertoire.SAIS_REP)
fCopieFichier(G_BDD_Path+"\"+Replication_fichier.fichier+".NDX", Csrepertoire.SAIS_REP)
SI Replication_fichier.mmo=Vrai ALORS
fCopieFichier(G_BDD_Path+"\"+Replication_fichier.fichier+".MMO", Csrepertoire.SAIS_REP)
FIN
HLitSuivant(Replication_fichier)
FIN
HChangeRep("*", Csrepertoire.SAIS_REP)
HChangeRepJnl("*", Csrepertoire.SAIS_REP, Csrepertoire.SAIS_REP)
HOuvre("*","swap")
HInitAbonné("*", Csrepertoire.SAIS_REP+"\Replica_"+Replication_config.IDReplication_config+".RPL")SI HFichierExiste(Replication_config) ALORS
//MAJ du fichier de config
FIN
HFerme("*")
Multitâche(40)
HChangeRep("*", G_BDD_Path)
HChangeRepJnl("*", G_BDD_Path)HSynchroniseRéplica(G_BDD_Path, Csrepertoire.SAIS_REP,rplVersAbonné) // ajouté par la suite car ca ne ca ne marchais pas
FIN
FIN
FIN

j'ai mis des test sur l'initabonné et la fonction a l'air de s'executer correctement

si vous avez eu ce soucis, ou bien si vous trouvez une solution, j'en serai heureux, car comme toujours c'est assez urgent :s !
merci !
Posté le 10 janvier 2006 - 12:08
C'est bon j'ai trouvé tout seul comme un grand !
en fait ce n'etait pas une erreur poorté sur la replication mais une etourderie sur les variables :)
quand je met :
HInitAbonné("*", Csrepertoire.SAIS_REP+"\Replica_"+Replication_config.IDReplication_config+".RPL")

en fait j'avais fermé replication_config.

il suffisait d'utiliser une variable intermediaire
HInitAbonné("*", Csrepertoire.SAIS_REP+"\Replica_"+ID_poste+".RPL")


voila ! pour ceux a qui ca aidera !