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 :

HModifieStructure vs Maj Auto [WD17]


Sujet :

WinDev

  1. #1
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut HModifieStructure vs Maj Auto
    Bonjour

    Quelle belle nouveauté que cette fonction HModifieStructure qui met à jour un fichier si on le trouve en erreur de structure (erreur 70016).
    Si !
    Et en plus il peut focntionner dans les deux sens avec le paramètre hmsSansControle en forçant la mise à jour selon l'analyse de l'exécutable en cours (et donc un possible retour à la version précédente).

    Maintenant on se dit : plus besoin de wdmodfic alors... que ce soit en ligne de commande ou via WDSetup.

    Mais bon voila une limite qui est limite :
    HModifieStructure ne fonctionne que pour le fichier logique en cours pour le chemin physique en cours !!!
    Ainsi, si vous imaginez qu'il va aussi mettre à jour vos alias et autres fichiers déportés dans des sous répertoires : NON !
    A vous d'en programmer la modification.

    Et donc ma question : si on fListe les fichiers "*.Fic", comment savoir s'il correspondent à un fichier de l'analyse ou qu'il s'agit de ficheirs décrits par programmation ?
    Celui qui réponds par le nom du fichier est évidement à coté en raison d'alias potentiels
    la propriété FichierDecrit provoque à nouveau une erreur 70016 justifiée
    L'affectation à une source de donnée + hDeclareExterne sur le fichier physique rompt la relation analyse et la possibilité de récupérer cette propriété.

    j'étidie l'usage du GUID analyse à condition dedisposer de l'ancien GUID (écrit dans un .ini après ce test ?)...

    Bref, on j'ai pas trop envie de monter l'API de WDMODFICxx.DLL qui fait l'inventaire des fichiers à modifier.

  2. #2
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Voici la conclusion de nos travaux sur le sujet.

    1- HModifieStructure fonctionne donc pour un fichier logique et uniquement pour le contexte en cours.
    2- Un fichier logique est une description de fichier dans l'analyse. chaque fichier logique a un identifiant unique composé du coupe GUID analyse + GUID Fichier.
    En effet, nous avons remarqué que cette information ne changeait pas lors des mises à jours de structure successives .

    La stratégie pour utiliser HModifie structure et donc réaliser la mise à jour des données directement par le programme (et non WDModFic ou l'installation WDSetup ou sa classe cModifAuto.wdc) est la suivante :

    1- au lancement du projet, détecter un changement de version du programme (nous avons aussi intégré le numéro de génération d'analyse dans la version du projet). Et dans ce cas entrer en mise à jour des données.

    2-En mode mise à jour des données on inventorie les GUID analyse/fichier pour chacun des fichiers logiques de l'analyse (la nouvelle). Pour ce faire, créer un répertoire temporaire et y brancher la base (hChangeConnexion + hChangeRep) et y lancer la création des fichier de la nouvelle analyse (hCreationSiInexistant). En faisant l'énumération des ficheirs (hListeFichier), on va pouvoir récupérer un tableau des GUID analyse et GUID fichier (Fichier..GUIDAnalyse, Fichier..GUIDFichier) par nom logique. Nous avons fait un tableau associatif qui pour un couple GUIDAnalyse+GUIDFichier donne le nom logique.

    3- en rebranchant le répertoire des données (ou le client serveur) on inventorie l'ensemble des fichiers physique du programme (hListeFichier en C/S ou fListeFichier) et pour chacun des fichiers physiques on va avoir une procédure qui permet de retrouver le nom logique.

    4- La procédure qui donne le nom logique va déclarer le fichier physique dans une source de donnée (HDeclareExterne) pour en récupérer les GUID analyse et fichier et aller les chercher dans le tableaux pour trouver le nom logique associé.

    5- Ainsi pour chaque fichier physique, si on trouve un nom logique, on peut alors procéder à l'appel de hModifieStructure qui assurera la modification.

    La mise à jour de tous les fichiers existants concernés est assurée, qu'il s'agisse des fichiers normaux comme des fichiers aliassé etc.

    Note 1 : les fichiers décrit en dynamiques sont exclus car on ne leur trouve pas un nom logique.

    note 2 : hModifieStructure peut copier le fichier dans un répertoire de sauvegarde. Toutefois, nous avons rencontré des problème de réutilisation du même nom temporaire sur les index, nous avons donc procédé manuellement (HCopieFichier / fCopieFichier).

    Bref : maintenant c'est le programme qui adapte les données et non l'installateur, ce qui simplifie la procédure et autorise, sous certaines conditions, le retour en arrière !

  3. #3
    Membre éprouvé Avatar de wimbish
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 416
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    Merci pour le partage de la conclusion de tes travaux.
    Christophe.

    Tous les chemins mènent à Rome http://doc.pcsoft.fr/fr-FR/

  4. #4
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    De rien....
    Nous rencontrons encore des difficultés :
    - un fichier généré après un simple HChangeNom qui se retrouve avec un fGUID différent de son fichier normal qui met à mal la théorie du couple aGUID/fGUID jusqu'à ce qu'on trouve.
    Si, dans l'éditeur d'analyse, on supprime une description de fichier pour la réimporter depuis un fichier physique, le FGUID change (pour le même nom logique)... ce qui nous pose donc le problème actuel. Dans ce cas, HModifieStructure retourne une erreur 70226
    MODIFICATION AUTOMATIQUE IMPOSSIBLE pour peu qu'on force la mise à jour du-dit fichier. Noter que WDModFic affecte un état "Ambigüe" au fichier mais passe quand même.

    - des erreurs qui peuvent arriver pendant hModifieStructure et son travail sur des .tmp pour le backup. Pour cela, nous somme parvenu à une solution de temporisation en gérant l'exception sur l'erreur 70150 pour relancer la commande après une temporisation.

    On ne doit pas être loin, je prends donc toute idée sur le sujet si quelqu'un a utilisé cette voie.

  5. #5
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Voila, après travail avec le ST tout cela est corrigé en 78n.

    les fichiers ambigus passent avec l'option hmsSansControle et donc que le FGUID change ou pas entre deux génération ne pose plus de problème.

    Conclusion : si on doit rester capable de faire correspondre chaque fichier physique à une description de l'analyse, HModifiestructure permet au programme final d'adapter les fichiers de données. Exit donc WDModfic

  6. #6
    Membre régulier Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Points : 73
    Points
    73
    Par défaut
    Bonjour, à quoi sert la procédure qui récupère le nom logique du fichier ?

    La procédure HListeFichier renvoie déjà les noms logiques des fichiers, non ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Points : 202
    Points
    202
    Par défaut
    Bonjour,

    je ne saisis pas bien comment utiliser cette fonction...

    En HFCS, si je suis sur mon environnement de développement, je créé une Analyse B (rajout de rubriques), mon analyse est différente de l'Analyse A en production.

    1) Quand je déploie ma nouvelle version de projet (avec analyse B) en production, l'analyse A ne devient-elle pas automatiquement l'analyse B sur le serveur de production ? Dans ce cas, la synchronisation est forcément OK non ?

    2) Comment appeler HModifieStructure (code du projet ?)

    3) L'analyse en production va essayer de se synchroniser avec quelle analyse?

    EDIT :
    4) D'après l'aide (http://doc.pcsoft.fr/fr-FR/?3044195) cette fonction est l'équivalent en programmation de l'option 'Modification automatique des données' lors de l'installation.
    Là où je ne comprends pas : si j'utilise l'option de l'installeur, la modification a lieu pendant la mise à jour de l'application en production MAIS avec HModifieStructure : cette modification a par exemple lieu à chaque ouverture du projet (si placée dans le code du projet) ? Donc une synchronisation avec l'analyse (de développement je suppose) systématique, même si pas de déploiement encore réalisé de ce nouveau projet+analyse ?

    J'avoue être bien paumé sur la question, pouvez-vous m'éclairer ?
    Merci

  8. #8
    Membre régulier Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Points : 73
    Points
    73
    Par défaut
    R&B utilise des déclarations externes, c'est peut être pour ça qu'il est obligé de passer par une méthodes assez compliquée.

    Pour ma part, tout les fichiers sont décrit dans l'analyse, et HListeFichier() les récupère tous.

    Du coup je boucle sur ma liste, et pour chaque fichier si j'ai une exception pendant l'accès je fais un HModifieStructure.


    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
     
     
    sListeFichiersH est une chaîne = HListeFichier(hLstTriée)
     
    ChaîneVersTableau(sListeFichiersH,tabRecupFichiersHF, RC)POUR TOUT 
     
    sFichier DE tabRecupFichiersHF
     
    	QUAND EXCEPTION DANS
     
    	sChaine = {sFichier, indFichier}..GUIDAnalyse
    	sChaine =  {sFichier, indFichier}..GUIDFichier
     
    	FAIRE
     
    		HModifieStructure(sFichier, hmsNormal)
     
    	FIN
     
    FIN

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Points : 202
    Points
    202
    Par défaut
    Merci pour ces précisions ToxiK

    Pour mes questions 1,3 et 4, quelqu'un a une idée ?

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

Discussions similaires

  1. [WS 2003] ajouter une GPO pour désactiver la MAJ Auto
    Par devlopassion dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 20/03/2010, 19h09
  2. Réponses: 1
    Dernier message: 26/08/2008, 18h23
  3. Vue/Requete sur Access 2003 (Regen ou MAJ auto?)
    Par jamesleouf dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/05/2008, 15h33
  4. MAJ auto sous-formulaire
    Par Ne0zenith dans le forum IHM
    Réponses: 4
    Dernier message: 06/06/2007, 11h27
  5. [VBA]MAJ auto contrôle active x calendrier?
    Par poney01 dans le forum VBA Access
    Réponses: 9
    Dernier message: 22/04/2007, 08h41

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