le poste maitre,
cela est TOTALEMENT FAUX.
Ce qui est obligatoire, c'est d'être en tout instant connecté à la bonne
base de fichiers et à la bonne base de fichiers journaux lors de l'application
des différentes fonctions nécessaires à la mise en place de la réplication
programmée. En voici donc l'explication:
// Les variables entre ** ci-dessous ne sont qu'une facon
// d'imager les différents contrôles que
// vous aurez programmé (des chemins d'accès initialisés
// à partir de .ini par exemple)
// Les procédures de création sont à effectuer dans l'ordre
// Les fonctions W-Language entre <> aussi.
-------------------------------------------------------
1-Initialisation du projet:
SI *Reseau_Accessible* ALORS
*Rep_Base_En_Cours* = *Rep_Base_Reseau_Maitre*
SINON
SI *Base_Abonne_Existe* ALORS
*Rep_Base_En_Cours* = *Rep_Base_Abonne*
SINON
FinProgramme()
FIN
<HChangeRep(*Rep_Base_En_Cours*)>
SI *Je_Veux_Placer_Les_Journaux_Dans_Rep_Autre* ALORS
<HChangeRepJNL(*Rep_Base_En_Cours*+*Rep_JNL_Autre*)>
SINON
<HChangeRepJNL(*Rep_Base_En_Cours*)>
FIN
<HCréationSiInexistant("*")>
-------------------------------------------------------
2-Procédure CreationDuReplicaMaitre()
// *Chemin_Replica_Maitre* doit être un
// chemin ciblé vers un répertoire partagé
// du poste maitre.
// Notez que vous devez, si vous ne voulez pas vous
// compliquer la vie, désigner le même chemin pour
// les fichiers journaux que celui que vous avez
// choisi dans le code d'initialisation du projet
// lors du test:
// *Je_Veux_Placer_Les_Journaux_Dans_Rep_Autre*
// HJournalReCrée() est utilisé pour éviter
// l'erreur 'JournalIdentification introuvable'
// lors des premières synchronisations si vous
// n'avez modifié aucun fichier de la base maitre et
// si les fichiers journaux n'existent pas (suite à
// une suppression par exemple
)
// ATTENTION: n'utilisez pas HJournalRecrée() si vous avez
// déjà d'autres postes en réplication activée !!!
SI Base_En_Cours = Base_Reseau_Maitre ALORS
<HCréeRéplicaMaitre(*Chemin_Replica_Maitre*)>
FIN
<HJournalRecrée("*",*Mon_Choix_Rep_JNL__Init_Projet*)>
-------------------------------------------------------
3-Procédure CreationDuReplicaAbonne()
// *Chemin_Replica_Abonne* doit être un
// chemin ciblé vers un répertoire partagé
// du poste abonné.
<HCréeRéplicaAbonné(*Chemin_Réplica_Maitre*,...
*Chemin_Replica_Abonne*,*Identifiant_Abonne*,...
*Plage_De_Depart_Des_Identifiants*)>
-------------------------------------------------------
4-Procédure InitialisationDuReplicaAbonne()
// C'est ici que se trouve le piège !!!
// Et oui, une vulgaire copie de fichiers suffira
// à fournir les enregistrements de la base maitre.
// Cependant, veillons bien à les initialiser.
// Tout d'abord, il faut se placer dans la base abonné.
// Notez que vous devez, si vous ne voulez pas vous
// compliquer la vie, désigner le même chemin pour
// les fichiers journaux que celui que vous avez
// choisi dans le code d'initialisation du projet
// lors du test:
// *Je_Veux_Placer_Les_Journaux_Dans_Rep_Autre*
// Ici aussi HJournalRecrée() évitera l'erreur
// 'JournalIdentification introuvable'
<HFerme("*")>
<fCopieFichier(Rep_Base_Maitre+"\*.fic",Rep_Base_Abonne>
<fCopieFichier(Rep_Base_Maitre+"\*.ndx",Rep_Base_Abonne>
<fCopieFichier(Rep_Base_Maitre+"\*.mmo",Rep_Base_Abonne>
<HChangeRep(Rep_Base_Abonne)>
<HChangeRepJNL(Rep_Base_Abonne+...
*Mon_Choix_Rep_JNL__Init_Projet*>
<HOuvre("*")>
<HInitAbonné(*Trou_De_Memoire_Voir_Aide_WinDev*)>
<HJournalRecrée("*",*Mon_Choix_Rep_JNL__Init_Projet*)>
<HFerme("*")>
// Retour sur la base maitre, la réplication est prête
<HChangeRep(*Rep_Base_Maitre*)>
<HChangeRepJNL(Rep_Base_Abonne+...
*Mon_Choix_Rep_JNL__Init_Projet*>
<HOuvre("*")>
-------------------------------------------------------
PS: Afin de pouvoir utiliser la base abonné en local total ( c'est à dire
sans connexion réseau active ), vous devez trouver un moyen de fournir à
l'application le chemin LOCAL du répertoire de données abonné ( à l'inverse
du chemin donné pour le réplica abonné qui est, lui, un chemin réseau vers
le répertoire local du réplica.
NB: Dans mon descriptif, le terme réplica désigne TOUJOURS un fichier. Les
répertoires sont, eux, désignés par l'abréviation Rep.
Pour plus d'infos, vous pouvez me mailer à sonicpsyche@hotmail.com (évitez
les mails sans objet, merci)
Cet exemple ne concerne que l'activation d'une réplication réseau dont le
but est d'utiliser un poste ponctuellement sur le réseau, voir en déconnection
totale du réseau.
Les fonctions HSynchroniseRéplica() ne sont pas expliquées car ce sont les
plus simples à préparer.