PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → [WD17] Modification automatique des liaisons à l'instar de HModifieStructure()
[WD17] Modification automatique des liaisons à l'instar de HModifieStructure()
Débuté par David M., 12 oct. 2012 13:12 - 2 réponses
Membre enregistré
54 messages
Posté le 12 octobre 2012 - 13:12
Bonjour,

Je gère à l'heure actuelle la modification automatique des données de mon projet via la fonction HModifieStructure(), ce qui fonctionne très bien, et me permet de gérer intégralement la montée de version directement dans mon projet, pour que les clients n'aient pas la moindre intervention à effectuer.

Cependant, j'ai constaté que cette fonction ne fait pas la mise à jour des liaisons, ce qui m'a posé plusieurs fois problème. D'après ce que j'ai pu lire sur le forum et dans la doc, c'est le comportement normal de la fonction HModifieStructure(), qui ne gère effectivement que la mise à jour des fichiers.

La seule solution que j'aie trouvé à l'heure actuelle est d'utiliser WDModFic en ligne de commande, mais là aussi, j'ai un bug, j'y viendrai après.

Mes questions, dans l'ordre, sont :
1) Existe-t-il une fonction, ou un ensemble de fonctions qui puisse me permettre de mettre à jour les liaisons ? Une solution impliquant de supprimer manuellement chaque liaison obsolète une à une, et de réécrire chaque liaison mise à jour me convient également, même si l'idéal serait l'équivalent de HModifieStructure() pour les liaisons.

2) Dans le cas de WDModFic, je l'utilise en ligne de commande, appelé directement depuis le projet :
bResultatSynchro = LanceAppli(""""+fRepEnCours()+"\WDModfic.exe"" -error -noanaconnection"+"/WDD="+fRepEnCours()+"\Analyse.wdd /SERVER=""Utilisateur:MotDePasse@Serveur:Port/BasedeDonnee""",exeBloquant)

Le code me semble correct, d'après les exemples que j'ai pu trouver sur le net, mais WDModfic me répond toujours : « Impossible de charger la ressource 16000. L'interface graphique n'est pas disponible. »
A noter, si cela a une quelconque influence, que WDModfic est lancé pendant l'initialisation du projet.

Pourquoi ce message, et que faire pour ne plus l'avoir, pour que l'analyse se déroule correctement ?

Merci d'avance pour vos réponses.

Cdlt,
David M.
Posté le 12 octobre 2012 - 17:30
David M a pensé très fort :
Bonjour,

Je gère à l'heure actuelle la modification automatique des données de mon
projet via la fonction HModifieStructure(), ce qui fonctionne très bien, et
me permet de gérer intégralement la montée de version directement dans mon
projet, pour que les clients n'aient pas la moindre intervention à effectuer.

Cependant, j'ai constaté que cette fonction ne fait pas la mise à jour des
liaisons, ce qui m'a posé plusieurs fois problème. D'après ce que j'ai pu
lire sur le forum et dans la doc, c'est le comportement normal de la fonction
HModifieStructure(), qui ne gère effectivement que la mise à jour des
fichiers.

La seule solution que j'aie trouvé à l'heure actuelle est d'utiliser WDModFic
en ligne de commande, mais là aussi, j'ai un bug, j'y viendrai après.

Mes questions, dans l'ordre, sont :
1) Existe-t-il une fonction, ou un ensemble de fonctions qui puisse me
permettre de mettre à jour les liaisons ? Une solution impliquant de
supprimer manuellement chaque liaison obsolète une à une, et de réécrire
chaque liaison mise à jour me convient également, même si l'idéal serait
l'équivalent de HModifieStructure() pour les liaisons.

2) Dans le cas de WDModFic, je l'utilise en ligne de commande, appelé
directement depuis le projet :
bResultatSynchro =
LanceAppli(""""+fRepEnCours()+"\WDModfic.exe"" -error
-noanaconnection"+"/WDD="+fRepEnCours()+"\Analyse.wdd
/SERVER=""Utilisateur:MotDePasse@Serveur:Port/BasedeDonnee""",exeBloquant)

Le code me semble correct, d'après les exemples que j'ai pu trouver sur le
net, mais WDModfic me répond toujours : « Impossible de charger la ressource
16000. L'interface graphique n'est pas disponible. » A noter, si cela a une
quelconque influence, que WDModfic est lancé pendant l'initialisation du
projet.

Pourquoi ce message, et que faire pour ne plus l'avoir, pour que l'analyse se
déroule correctement ?

Merci d'avance pour vos réponses.

Cdlt,
David M.


vérifiez votre chaine à l'aide d'une trace afin de voir si la chaine
correspond bien à la chaine volue notamment les "

vous devriez avoir :

"C:\MonRep\WDModfic.exe" -error -noanaconnection /WDD
"C:\MonRep\Analyse.wdd" /SERVER=login:password@serveur:port/bdd

le plus simple étant de constituer votre chaine à l'aide d'une variable
chaine multiligne et les "%" et d'enlever les RC _OU_ de remplacer les
" par des Caract(34)

(ci dessous les espaces sont symbolisé par des _)
szMaChaine est chaîne = [
"%1\WDModfic.exe"_
-error_
-noanaconnection_
/WDD "%2"_
/SERVER="%3:%4@%5:%6/%9"
]

szMaChaine = ChaîneConstruit(szMaChaine,var1,var2,...,varN)
szMaChaine = Remplace(szMachaine,RC,"")

ou
szMaChaine est chaîne =
Caract(34)+fRepEnCours()+"\WDModfic.exe"+Caract(34)+" -error
-noanaconnection
/WDD="+Caract(34)+fRepEnCours()+"\Analyse.wdd"+Caract(34)+"
/SERVER="+Caract(34)+"Utilisateur:MotDePasse@Serveur:Port/BasedeDonnee"+Caract(34)


--
Cordialement JeAn-PhI
Membre enregistré
54 messages
Posté le 12 octobre 2012 - 19:16
Merci JeAn-PhI pour cette première réponse. J'ai pas mal avancé, après avoir deux erreurs, dont une tellement énorme que j'en ai honte... ^^" :
La première erreur, c'était un espace manquant entre "-noanaconnection" et "/WDD". Réécrire la chaine avec les Caract(34) m'a permis de m'en rendre compte.
La seconde erreur, c'était tout simplement que j'avais oublié le fichier wd170vm.dll dans les DLL à inclure... -_-" (Oh le c**! oO )

Bref, a priori, la synchro fonctionne. Faudra que je teste sur un cas concret lors de la prochaine modif de ma BDD.

Bref, a priori, tout est ok.

Encore merci à vous, JeAn-PhI