IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Conseil Réplication Universelle [WD18]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 46
    Points : 25
    Points
    25
    Par défaut Conseil Réplication Universelle
    Bonjour,

    J'en appelle à vos lumières pour gérer la réplication de mon application car je suis perdu.

    J'ai correctement utilisé l'exemple fournit par Windev, la réplication se fait très bien. Je vais configurer pour que la réplication de l'abonné vers le maître se fasse avec les données les plus récentes.
    Mes tables répliquées utilisent des identifiants automatiques. Vous me direz peut-être que ce n'est pas le bon choix mais c'était la solution la plus pratique.

    Mon souci : Je souhaite donc faire marcher ma réplication lorsque l'application ne sera pas utilisé sur le serveur principal donc en local. Je voudrais en fait accorder des plages d'id différentes lorsque l'appli est en local. Je pensais faire avec un hajoute d'une ligne vierge avec un hfixeidauto. Cela marchera pour une seule personne puisque si une autre personne utilise l'appli en local elle aura les mêmes plages.

    Ma question : Comment puis-je faire pour accorder des plages d'id. auto dès que l'application entre en local ET pour que cela se fasse n'importe quel ordinateur ?

    Bien sûr si vous pensez à autre chose, je suis tout ouïe.

    Merci d'avance

    EDIT : Mon problème est résolu, partiellement ... Il fallait avant toute chose créer les fichiers locaux puis n'ajouter aucun enregistrement et synchroniser avec la base maître. A partir de ce moment les plages sont définies automatiquement.

    PROBLEME : La fonction HSynchroniseReplica() renvoie une erreur 1 fois sur 5.

    http://forum.pcsoft.fr/fr-FR/pcsoft....hronisereplica

    J'ai le même problème que lui, quelqu'un aurait-il une idée, ça me ruine toute mon application.

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    As-tu gérer les problèmes de conflit de ta fonction HSynchroniseRéplica() avec :

    rplMaîtrePrioritaire
    rplAbonnéPrioritaire
    rplPlusRécentPrioritaire

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Merci de m'accorder de ton temps. J'ai en fait 3 actions :

    - L'initialisation de la réplication qui ne se fait qu'une seule fois, je n'avais pas mis de gestion de conflits, j'ai mis rplMaitrePrioritaire du coup.

    - Synchro du réplica Maître avec celui de l'abonné, j'avais mis rplPlusRécentPrioritaire

    - Synchro du réplica Abonné avec celui de l'abonné, pas de gestion, j'en ai mis une rplAbonnePrioritaire.

    Je teste et je te dis.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    même résultat.

    J'obtiens une erreur très précise -_-'

    Erreur à la ligne 76 du traitement Procédure globale TraitementReplication.
    Une erreur système inattendue est survenue.
    Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
    - une description des circonstances de l'incident
    - les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
    - les informations techniques suivantes

    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)

    ----- Informations techniques -----

    Projet : Application RAF (nouveau)

    Appel WL :
    Traitement de 'Procédure globale TraitementReplication' (Collec_Replication.TraitementReplication), ligne 76, thread 0

    Que s'est-il passé ?
    Une erreur système inattendue est survenue.
    Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
    - une description des circonstances de l'incident
    - les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
    - les informations techniques suivantes

    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)

    Code erreur : 1020
    Niveau : erreur fatale (EL_FATAL)

    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 = 0012C8F8
    EAX = 00000050 EBX = 0012C884
    ECX = 00000003 EDX = 00330608
    ESI = 0216FFFD EDI = 019866EC

    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() + 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] 28E62858
    [wd180rpl.dll (28E60000), 18.0.8.0, 01F180056f] 28E823AD : Execution() + 48577 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
    [wd180vm.dll (25E60000), 18.0.132.0, 01F180056f] 25F73420 : InfoVersionWeb() + 593120 bytes

    Informations supplémentaires :
    EIT_PILEWL :
    Procédure globale TraitementReplication (Collec_Replication.TraitementReplication), ligne 76
    Clic sur BTN_Initialisation (FEN_Replication.BTN_Initialisation), ligne 1
    Clic sur BTN_Replication (FEN_Table_RAF.BTN_Replication), ligne 1
    EIT_DATEHEURE : 04/06/2013 13:14:59

    Assistance

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ce serait plus facile de trouver une réponse si tu nous fournissais le code de ta réplication car l'erreur est pas précise.

    Voici le code d'une réplication que j'ai mis en oeuvre pour mon application sur PDA, la réplication se fait entre la base du PDA en HyperFileSQL Classic (Mobile) et la base serveur en HyperFileSQL Client/Serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    // Réplication universelle utiliser
    HGèreRéplication(rplRéplicationUniverselle)
     
    // Initialisation du nom du PDA
    l_nomPDA est une chaîne
    SI EnModeSimulateurPocket() = Vrai ALORS
    	l_nomPDA = "PDA"
    SINON
    	l_nomPDA = SysNumSérie()
    FIN
     
    // Initialisation de la liste des tables à répliquer
    l_listeTable est une chaîne
    l_listeTable = "personne" + RC + "materiel" + RC + "evenement"
     
    // Initialisation du répertoire
    l_repertoire est une chaîne
    l_repertoire = fRepExe() + "\"
     
    // Initialisation des réplica maître, abonné et transportable
    l_replicaMaitre, l_replicaAbonne, l_replicaTransportable est une chaîne
    l_replicaMaitre = l_repertoire + "ReplicaMaitre.rpm"
    l_replicaAbonne = l_repertoire + "Replica_"+l_nomPDA+".rpl"
     
    // Description de la connexion maître et abonné
    SI HDécritConnexion("ConnexionMaitre", "admin", "", "190.20.0.72", "baseTest", hAccèsHFClientServeur) = Faux ALORS
    	Info(HErreurInfo())
    FIN
    SI HDécritConnexion("ConnexionAbonne", "", "", l_repertoire, "", hAccèsHF7) = Faux ALORS
    	Info(HErreurInfo())
    FIN
     
    // Ouverture de la connexion au serveur maître
    SI HOuvreConnexion("ConnexionMaitre") = Faux ALORS
    	Info(HErreurInfo())
    FIN
    SI HChangeConnexion("*", "ConnexionMaitre") = Faux ALORS
    	Info(HErreurInfo())
    FIN
     
    // Mise à jour de la date et de l'heure du PDA en fonction du serveur maître
    DateSys(Gauche(DateHeureUTCVersLocale(HInfoServeur("ConnexionMaitre",hInfoDate)),8))
    HeureSys(Milieu(DateHeureUTCVersLocale(HInfoServeur("ConnexionMaitre",hInfoDate)),9))
     
    // Création du réplica maître
    SI fFichierExiste(l_replicaMaitre) = Faux ALORS
    	HCréeRéplicaMaître(l_repertoire)
    FIN
     
    // Création du réplica abonné
    SI fFichierExiste(l_repertoire) = Faux ALORS
    	HCréeRéplicaAbonné(l_repertoire, l_repertoire, l_nomPDA, 0, l_listeTable)
    FIN
     
    // Création du réplica transportable du maître vers l'abonné
    SI HCréeRéplicaTransportable(l_replicaMaitre, l_nomPDA, "") = Faux ALORS
    	Info("Impossible de créer le réplica transportable du maître vers l'abonné.")
    FIN
    l_replicaTransportable = l_repertoire + RPL.Fichier
     
    // Ouverture de la connexion au serveur abonné (base du PDA)
    SI HOuvreConnexion("ConnexionAbonne") = Faux ALORS
    	Info(HErreurInfo())
    FIN
    SI HChangeConnexion("*", "ConnexionAbonne") = Faux ALORS
    	Info(HErreurInfo())
    FIN
     
    // Synchronisation du réplica transportable du maître vers l'abonné
    SI HSynchroniseRéplica(l_replicaTransportable, l_replicaAbonne, rplVersAbonné, rplPlusRécentPrioritaire) = Faux ALORS
    	Info("Impossible de faire la synchronisation du maître vers l'abonné.")
    FIN
     
    // Création du réplica transposable de l'abonné vers le maître
    SI HCréeRéplicaTransportable(l_replicaAbonne, l_nomPDA, "") = Faux ALORS
    	Info("Impossible de créer le réplica transportable de l'abonné vers le maître.")
    FIN
    l_replicaTransportable = l_repertoire + RPL.Fichier
     
    // Ouverture de la connexion au serveur maître
    SI HOuvreConnexion("ConnexionMaitre") = Faux ALORS
    	Info(HErreurInfo())
    FIN
    SI HChangeConnexion("*", "ConnexionMaitre") = Faux ALORS
    	Info(HErreurInfo())
    FIN
     
    // Synchronisation du réplica transposable de l'abonné vers le maître
    SI HSynchroniseRéplica(l_replicaMaitre, l_replicaTransportable, rplVersMaître, rplPlusRécentPrioritaire) = Faux ALORS
    	Info("Impossible de faire la synchronisation de l'abonné vers le maître.")
    FIN
     
    // Fermeture de la connexion au serveur maître
    SI HFermeConnexion("ConnexionMaitre") = Faux ALORS
    	Info(HErreurInfo())
    FIN
     
    // Ouverture de la connexion au serveur abonné (base du PDA)
    SI HOuvreConnexion("ConnexionAbonne") = Faux ALORS
    	Info(HErreurInfo())
    FIN
    SI HChangeConnexion("*", "ConnexionAbonne") = Faux ALORS
    	Info(HErreurInfo())
    FIN
     
    Info("Réplication terminée, vous pouvez réutiliser le PDA.")

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Merci de ton aide.

    Je précise que j'arrive à faire marcher mon code en mettant un point d'arrêt et en l'exécutant pas à pas. Par contre quand je ne le fais pas, cette erreur ressort en permanence. Ne faudrait-il pas utiliser Multitâche() ? C'est très bizarre.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Affectations des variables globales pour localiser les données
    gsRepertoireBase = fExtraitChemin(fRepEnCours(),fDisque+fRépertoire+fFichier)+"\Replication"
    gsRepertoireMaitre = gsRepertoireBase +["\"]+ "MAITRE\"
    gsRepertoireAbonne = gsRepertoireBase +["\"]+ "ABONNE\"
    gsRepertoireTransfert = gsRepertoireBase +["\"]+ "TRANSFERT\"
     
    // Initialisation HyperFileSQL
    HGèreRéplication(rplRéplicationHétérogène)
     
    // On décrit les connexions Maitre et Abonne
    //HDécritConnexion(gsNomConnexionMaitre,"admin","","UFRCAS01ORCP010:4900","RAF",hAccèsHFClientServeur,hOLectureEcriture,"Infos étendues" ,hCurseurClient)
    HDécritConnexion(gsNomConnexionMaitre,"admin","","UFRCAS01ORCP010:4900","RAF",hAccèsHFClientServeur,hOLectureEcriture,"Infos étendues" ,hCurseurClient)
    HDécritConnexion(gsNomConnexionAbonne,"","",fExtraitChemin(fRepEnCours(),fDisque+fRépertoire+fFichier),"",hAccèsHF7)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    sListeRépertoires est une chaîne
    sRéplicaMaitre est une chaîne
    sRéplicaTRansportable est une chaîne
     
    // Vérifie s'il existe des éléments d'une précédente exécution pour les supprimer
    SI fRep(gsRepertoireMaitre, frRépertoire) <> "" OU fRep(gsRepertoireAbonne, frRépertoire) <> "" OU fRep(gsRepertoireTransfert, frRépertoire) <> "" ALORS
    	// Demande confirmation à l'utilisateur
    	SI OuiNon("Il existe des données d'une précédente initialisation." +RC+ "Voulez-vous les supprimer ?" +RC+RC+ "Remarque : " +RC+ "La suppression des données d'une exécution précédente est fortement recommandé : l'initialisation pourrait donner des erreurs si des données existent déjà.") ALORS 
    		// Fermeture des fichiers
    		HFerme("*")
    		// Fermeture de la connexion
    		HFermeConnexion(gsConnexionCourant)
    		sListeRépertoires = fListeRépertoire(gsRepertoireBase, frNonRécursif)
    		// Supprime les répertoires listés
    		POUR TOUTE CHAÎNE sRepertoire DE sListeRépertoires SEPAREE PAR RC
    			fRepSupprime(sRepertoire, frRécursif)
    		FIN
    	SINON
    		RETOUR
    	FIN
    FIN
     
    // Création du répertoire d'accueil des données
    fRepCrée(gsRepertoireMaitre)
     
     
    // Connexion à cet emplacement pour récupérer la base HyperFileSQL
    HOuvreConnexion(gsNomConnexionMaitre)
    HChangeConnexion("*",gsNomConnexionMaitre)
     
     
    // Création du réplica maitre avec ses données
    SI HCréeRéplicaMaître(gsRepertoireMaitre) = Faux ALORS 
    	FinProgramme("Echec de création du réplica maître"+RC+ HErreurInfo(hErrMessage)) 
    FIN
     
    // Création du répertoire d'accueil des données
    fRepCrée(gsRepertoireAbonne)
     
    // Création du réplica abonné pour le site
    SI HCréeRéplicaAbonné(gsRepertoireMaitre, gsRepertoireAbonne, CMF,0,gsTableACopier) = Faux ALORS 
    	FinProgramme("Echec de création du réplica abonné "+RC+ HErreurInfo(hErrMessage))
    FIN
     
    // Création du réplica maître
    sRéplicaMaitre = gsRepertoireMaitre +["\"]+ gsCstNomReplicaMaitre
     
    // Définition et Ouverture de la connexion à la base maître
    OuvreUneConnexion("MAITRE")
     
    // Création du réplica transportable avec contenu initial de la base HyperFileSQL
    HCréeRéplicaTransportable(sRéplicaMaitre,CMF,"")
     
    // Ouverture d'une connexion sur la base abonnée
    OuvreUneConnexion("ABONNE")
     
    sRéplicaTRansportable = gsRepertoireMaitre + RPL.Fichier
     
    HCréation(Activite)
    HCréation(RAF)
    HCréation(Personne)
    HCréation(Machine)
    HCréation(FicheRaf_Machine)
    HCréation(RAF_Machine)
    HCréation(FicheRaf_Personne)
    HCréation(FicheRaf)
    HCréation(TypeMachine)
    HCréation(TypePb)
     
    Multitâche(2000)
     
    // Synchronisation du réplica avec la base Access pour que le données du maître soit présentes dans l'abonné
    HSynchroniseRéplica(sRéplicaTRansportable, gsRepertoireAbonne +["\"]+ cstNomReplicaAbonnePrincipal, rplVersAbonné)
     
    // Il faut effectuer une synchronisation de l'abonné vers le maître également
    // Le maître sera ainsi "informé" que la synchronisation initiale a bien été faite
    HCréeRéplicaTransportable(gsRepertoireAbonne +["\"]+ cstNomReplicaAbonnePrincipal,CMF,"")
    sRéplicaTRansportable = gsRepertoireTransfert +["\"]+ RPL.Fichier 
    fCopieFichier(gsRepertoireAbonne +["\"]+ RPL.Fichier, sRéplicaTRansportable)
     
    // Connexion à la base maître afin de synchroniser ce nouveau réplica abonné...
    OuvreUneConnexion("MAITRE")
    HSynchroniseRéplica(gsRepertoireMaitre +["\"]+ gsCstNomReplicaMaitre, sRéplicaTRansportable, rplVersMaître)
     
    // Création du répertoire pour stocker les réplicas transportables
    fRepCrée(gsRepertoireTransfert)
    L'erreur se produit toujours sur cette ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Synchronisation du réplica avec la base Access pour que le données du maître soit présentes dans l'abonné
    HSynchroniseRéplica(sRéplicaTRansportable, gsRepertoireAbonne +["\"]+ cstNomReplicaAbonnePrincipal, rplVersAbonné)

  7. #7
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Le message d'erreur indique c'est une GPF :
    Erreur système : Access violation (GPF)
    c'est à dire un accès à une zone mémoire non prévu.

    Ce genre d'erreur ne peut venir de toi directement, mais soit d'une bug Windev, soit ton l'environnement qui sort du cadre que Pcsoft à prévu.

    Est-tu en dernière version ?

    Si oui, essaye de réaliser un cas de test le plus simple possible et fait le parvenir au support technique de pcsoft comme indiquer dans le message.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Résolu en déclarant les liaisons

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SI HRplDéclareLiaison(RAF,IDRAF,Machine,IDMachine) = Faux ALORS
    	Info(" La liaison Raf_Machine n'a pu être déclarée.")
    	RETOUR
    FIN
     
    SI HRplDéclareLiaison(Personne,IDPersonne,FicheRaf,IDFicheRaf) = Faux ALORS
    	Info(" La liaison FicheRaf_Personne n'a pu être déclarée.")
    	RETOUR
    FIN
     
    SI HRplDéclareLiaison(Machine,IDMachine,FicheRaf,IDFicheRaf) = Faux ALORS
    	Info(" La liaison FicheRaf_Personne n'a pu être déclarée.")
    	RETOUR
    FIN
    Pour le moment, cette erreur n'apparaît plus.

    Merci WinDev pour l'aide très détaillée sur la réplication -_-' Leur exemple est trop simpliste. Ils devraient inclure des fichiers de réplication etc. C'est toutefois leurs vidéos présentes sur leur site qui m'ont aiguillées sur la bonne voie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD15] Réplication Universelle dans une boucle.
    Par froideval dans le forum WinDev
    Réponses: 5
    Dernier message: 24/12/2010, 16h02
  2. [WD15] Réplication universelle
    Par wojc01 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/10/2010, 20h37
  3. [WD15] Réplication universelle problèmes de doublons
    Par wojc01 dans le forum WinDev
    Réponses: 3
    Dernier message: 29/06/2010, 07h46
  4. [WD12] Question Réplication Universelle
    Par Lo² dans le forum WinDev
    Réponses: 3
    Dernier message: 11/02/2010, 17h21
  5. Réplication universelle windev bases hyperfile
    Par toto42 dans le forum Contribuez
    Réponses: 0
    Dernier message: 15/05/2008, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo