PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Comment supprimer liaisons crée automatiquement avec fichiers inexistantes (oui j'ai ça)
Comment supprimer liaisons crée automatiquement avec fichiers inexistantes (oui j'ai ça)
Débuté par KC76, 18 sep. 2017 16:55 - 19 réponses
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 18 septembre 2017 - 16:55
Bonjour,

J'ai une structure de base de données multi société comme ci:

RACINE
Société 1
Société 2
Société n


Dans racine j'ai certain fichiers communs ( libellés de statuts, civilités, pays du monde...) puis chaque société a ses propres fichiers commandes/factures etc...

Je travail sur du nouveau code qui va copier certains enregistrements d'une société à une autre, dès que j'ajoute un nouveau fichier qui n'existait pas encore, il y a des liaisons de crées, des fois mal : entre les sociétés, qui est embêtant mais gérable.

Mais là ce qui m'arrive est grave:

Je commence à avoir des erreurs d'intégrité avec des liaisons avec des fichiers : Racine\Racine\nomfichier1.fic avec Racine\Société n\nomfichier2.fic

sauf qu'il n'y a même pas un sous dossier Racine\Racine!!! alors pas de fichier Racine\Racine\nomfichier1.fic non plus...

et quand je veux supprimer ces liaisons erronées qui me bloquent, j'ai une erreur qui me dit que le fichier ne peut pas être trouvé (pas étonnant), mais le problème c'est qu'il ne supprime pas la liaison erronée qui me bloque alors!

Quelqu'un a une idée...
1. pourquoi ca se fait, dans ce cas les nouveau fichiers étaient crées lors mes tests avec hcopieenreg de société 1 vers société n
2. comment je fais pour les virer et pouvoir de nouveau crée des enregistrements Racine\Société n\nomfichier2.fic
3. comment je peux être sûr que ca n'arrive pas en production, c'est un projet urgent prévue à sortir cette semaine...


Merci d'avance!
Posté le 18 septembre 2017 - 21:23
Bonjour.

Une analyse, un modèle conceptuel des données, ça vous dit quelque chose ?
Sinon, il va vous falloir songer à une formation adéquate avant de vous lancer dans ce projet.
Cordialement.
Membre enregistré
3 846 messages
Popularité : +227 (347 votes)
Posté le 19 septembre 2017 - 09:02
A priori, tu accèdes à tes répertoires, Société1...Sociétén , via hChangeRep. Je pense à un problème de construction nom de répertoires.
Un fRepExe qui remplace un fRepDonnées, ou un sous répertoire codé en "dur".
Racine doir être le répertoire de données. Je pense à
sRepertoireTravail=ComplèteRep(fRepDonnées())+"Racine\Société1"


--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 19 septembre 2017 - 10:14
@Pierre-Louis - mon analyse est énorme, j'ai 163 fichiers environ (le centre de contrôle m'indique plus que 1000 tables avec RACINE plus les 5 sociétés, j'ai 454 liaisons). C'est alors trop grand à montrer ici et l'analyse n'est pas le problème, c'est les liaisons crées en automatique sur les fichiers qui n'ont jamais existés et surtout que je n'arrive pas à supprimer. C'est loin d'être un nouveau projet, mon prédécesseur l'a commencé en 1996, mais depuis peu, j'ai de plus en plus de problèmes avec les fichiers/liaisons crées aux mauvaises endroits.


@DandyPunk : Effectivement, à l'ouverture des différents logiciels (plusieurs tapent dans la même BDD), on fait notre choix de la société souhaité dans une table. Dans le code du projet je fais la connexion au serveur avec connexion à la source "RACINE" et je vérifie juste les niveau utilisateur (fichier utilisateur dans racine), Une table qui lit une fichier Société présent dans la RACINE est lancé par du code dans les déclarations globales de la 1ere fenêtre du projet, puis selon choix de société je fais ça (dites moi si vous voyez de problème dans tout ça)

--D'Abord je change le répertoire pour celui de la société sSauvesociete est une texte à 3 caractères correspondant au nom du sous dossier.
HChangeRep ("*" ,".\"+sSauvesociete)

--Puis après, je rechange pour les fichiers communs une par une (ici je mets trois mais il y en a beaucoup plus)
HChangeRep(MODREG,"..\RACINE")//mode de règlement
HChangeRep(PAYS,"..\RACINE")
HChangeRep(TVA,"..\RACINE")

J'ai déjà eu des fichiers crées au mauvais niveau mais je n'ai jamais trouvé pourquoi...

Cela dit, je suis sur un projet ou je dois copier des enregistrements entre sociétés, encore avec des HChangeRep("clientFLEX",".\FLE\") avec des fichiers avec alias. J'ai crée les fichiers dans "FLE" pour la première fois pendant ce projet.


Voici une image ou on voit bien que le dossier RACINE\.\RACINE n'existe pas, mais j'ai bien des liaisons!!









Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 19 septembre 2017 - 10:27
Voici l'erreur que j'ai quand j'essaye de supprimer les liaisons erronées:



Membre enregistré
3 846 messages
Popularité : +227 (347 votes)
Posté le 19 septembre 2017 - 11:01
Je reformule :
Nous avons 3 "couches" de données
1-La partie gestion des sociétés (propre a ton entreprise donc limite domaine)
2-La partie "Fichiers communs aux sociétés" situés dans \RACINE
3-La partie "Fichiers propres aux sociétés" situés dans \RACINE\XXX (les structures sont les mêmes mais les données diffèrent)

le .fic.modreg m'intrigue
--
Il y a peut être plus simple, mais, ça tourne
Message modifié, 19 septembre 2017 - 11:03
Membre enregistré
218 messages
Popularité : +14 (14 votes)
Posté le 19 septembre 2017 - 11:21
KC76 a écrit :
@Pierre-Louis - mon analyse est énorme, j'ai 163 fichiers environ (le centre de contrôle m'indique plus que 1000 tables avec RACINE plus les 5 sociétés, j'ai 454 liaisons). C'est alors trop grand à montrer ici et l'analyse n'est pas le problème, c'est les liaisons crées en automatique sur les fichiers qui n'ont jamais existés et surtout que je n'arrive pas à supprimer. C'est loin d'être un nouveau projet, mon prédécesseur l'a commencé en 1996, mais depuis peu, j'ai de plus en plus de problèmes avec les fichiers/liaisons crées aux mauvaises endroits.

Bonjour KC76.
Excuse-moi d'avoir douté, c'est moi qui n'ai pas compris ton problème. Pas simple celui-ci en effet.
Bon courage pour la résolution.
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 19 septembre 2017 - 11:27
Bonjour,

Je ne sais pas trop ce que vous vouliez dire par 1 mais oui pour 2/3, J'ai la BDD Racine avec les fichiers communs, plus les fichiers propres à chaque société comme vous indiquez.

J'ai essayé de resynchroniser mon analyse avec la base test, j'ai des erreurs sur les mêmes fichiers
Impossible d'obtenir la description du fichier <racine\modreg.fic> Erreur renvoyée par le serveur
Impossible d'ouvrir le fichier <RACINE\racine\modreg.fic>.

Détail de l'erreur système :
Le chemin d’accès spécifié est introuvable.
Le chemin d’accès spécifié est introuvable.

Je suis allée aussi voir dans la fichier .REP et j'ai trouvé les enregistrements erronées là aussi comme celle ci:

MODREG .\..\RACINE\MODREG.FIC

J'ai essayé de supprimer cette enregistrement au fichier .rep mais ca n'a pas corrigé les autres problèmes.

MODREG .\MODREG.FIC (existe aussi et c'est celui qui est correcte)

j'ai même essayé de crée manuellement RACINE\racine\modreg.fic pour pouvoir supprimer propre dans le centre de contrôle, en espérant le liaison partirait avec, mais ca n'a pas marché (il veut peut être RACINE\racine\.\modreg.fic mais Windows ne me le permet pas un dossier "."

Je dois faire des erreurs en développement, et alors création de mauvais fichier lors tests, moi je corrige mon code, sauf que WD stocke ça dans le fichier REP et mémorise pour toujours (et malheureusement également pour la base prod)

Je ne sais toujours pas comment les virer, sans suppression complète de fichier intégrité à ce point...
Membre enregistré
1 923 messages
Popularité : +53 (65 votes)
Posté le 19 septembre 2017 - 11:44
Bonjour,

J'apporte juste une piste mais je n'ai pas le temps de rechercher en détail :
il faut virer les fichiers systèmes du serveur HF pour ta BDD après avoir arrêter le serveur HF.
Les fichiers seront recréés automatiquement à partir de l'analyse avec les bonnes relations.

On doit trouver des posts sur ce sujet dans le forum mais pas récents.

--
Bon dev,
Jean-Pierre
Membre enregistré
3 846 messages
Popularité : +227 (347 votes)
Posté le 19 septembre 2017 - 12:04
En désactivant temporairement la gestion du .REP (HGèreRep(Faux)) et en créant un .REP temporaire, cela permettrait éventuellement de corriger le problème "à la main".

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 19 septembre 2017 - 13:42
@Jean-Pierre - je pense que c'est ça ma seule option à ce point, je vais voir ce que ca donne sur ma base test et si ça fonctionne correctement je le ferai aussi en prod
@Dandypunk - je voulais faire une nettoyage avec WDOptimiseur, mais ça ne marche pas en en C/S... je vais voir si je ne peux pas juste renommer le fichier .REP pour voir s'il crée un nouveau tout seul.
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 19 septembre 2017 - 13:59
Après qq tests avec un fichier .REP vierge sur une des mes projets

Je constate
en mode débug quand j'arrive à la ligne 9, avant son exécution, j'ai un enregistrement dans mon .REP déjà avec SOCIETE dans le dossier de la société en cours avant que je peux la changer de place et ca continue pour tout les hchangerep() qui suivent...quand j'arrive sur la ligne de code, l'enregistrement .REP est crée. Ca ne me parait pas normal qu'on écrit dans le .REP avant d'accéder le fichier...


1 bResultat=HChangeRep ("*" ,".\"+gsSociete)
2 SI bResultat = Faux ALORS
3 Erreur("La société n'a pas pu être ouvert. Vérifier que le code société " + gsSociete + " existe et qu'il est paramétré dans le fichier .ini")
4 Ferme
5 FIN
6
7
8 //fichiers dans le fichier racine
9 HChangeRep(SOCIETE,"..\RACINE")
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 19 septembre 2017 - 14:12
En mode test simplement (sans débuggage à la ligne) il m’a ajouté ça, aussi erronée et exactement comme mes "fichiers" liaison à problème

SOCIETE .\..\RACINE\SOCIETE.FIC
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 19 septembre 2017 - 14:32
J'ai trouvé le coupable au moins pour cette exemple:

HFerme("*") que j'ai mise dans le code de prise de focus des mes fenêtres menu en 2009/2010, malheureusement, j'ai commencé mon logging de modifs qu'en 2010 alors je ne sais pas pourquoi j'avais mis ça à l'époque...

Cela dit l'aide sur le sujet dit ca, alors ca ne devrait pas se produire: "Après la fermeture du fichier de données, les réassignations effectuées par les fonctions HChangeNom, HChangeRep et HSubstRep sont conservées."
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 19 septembre 2017 - 14:58
J'ai trouvé pourquoi j'avais mis hferme partout dans mes mails au support technique...suite à la migration vers C/S (j'étais sous WinDev 14) j'avais des enregistrements qui ne se faisaient pas, mais aucune erreur pour me dire pourquoi... Apparemment ceci avait résolu le problème...(ma solution pas la leur)
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 20 septembre 2017 - 05:18
Bonjour,

Je sais que ce que je vais dire ne va pas faire avancer le schmilblik, mais il est dommage que tu ais pris comme choix de créer des répertoires par société plutôt que de rajouter le code de la société dans les fichiers nécessaires. Tous les documents auraient été au même endroit mais filtrable pa code société, tu te serais affranchis de ces problèmes.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 20 septembre 2017 - 09:35
:) Je ne sais pas si les filtres sur les 150+ fichiers aurait été très efficace... C'est en fait une BDD qui sert toute une suite de 7 logiciels, en tout cas c'était fait 10 ans avant mon arrivé et il faudra une armée pour la changer et je suis toute seule!

C'est que récemment que ca semble poser problème, et surtout que je vois parce qu'on en en train de monter une nouvelle société qui va être autant utilisé que la société principale (les autres il y a pas grand chose).

J'ai supprimé ma base test (toute le dossier BDD/RACINE) et j'ai récrée mes fichiers avec hcréationsilinexistant() comme conseillé ici et aussi le support technique, ca ma récrée les mauvais liens simplement.

J'ai eu d'autres problèmes avec des liaisons depuis la dernière MAJ de HF... je crois qu'il y a un problème sérieux, parce que hferme(*) ou pas j'ai des fichiers dans mon .REP qui n'existe pas. Il semble que le hchangerep communique mal au fichier .REP les chemins des fichiers et après le problème se présente sur la création des liaisons/fichiers automatique...

alors je prie que le support technique va bien trouver ce qui se passe parce que je suis bien bloquée là....
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 20 septembre 2017 - 11:47
J'espère pour toi que le ST réussira à te venir en aide.

Juste pour info, lorsque l'on met toutes les données dans le même fichier, il suffit de passer sur des requêtes plutôt que sur des HFiltre(), ça te renvoit les données exactes dont tu as besoin.

Bon courage...

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 21 septembre 2017 - 10:51
J'espère aussi, je leur a fait un projet hier et j'attends qu'ils la regardent maintenant.

Je pense que c'est HChangeRep(NOMFICHIER,"..\RACINE") qui ne marche plus correctement... c'est bien indiqué dans l'aide qu'on peut utiliser cette syntax pour rechercher le dossier parent, mais il crée systématiquement les enregistrements erronées dans le .REP et à partir de là les liaisons erronées.

J'ai fait un test avec HChangeRep(NOMFICHIER,"") pour me remettre dans la racine, là tous les enregistrements .REP et liaisons sont corrects, sauf que à l'utilisation de logiciel, il ne cherche pas certains fichiers au bon endroit et il les recrée à une autre endroit.

J'ai aussi constaté que le dernier fichier que j'ai crée (10/2016) se mette toujours dans la racine lors sa création, malgré le fait qu'il devrait être dans le dossier société selon HChangeRep ("*" ,".\"+gsSociete)....

Normalement je désactive les hcreation... (même si les fichiers semblent à se créer tout seuls quand même) mais là en les rallumant pour les tests ça fait très peur...Je suis assez confiante que tout ca marchait correctement en 2012, parce que j'avais pris un stagiaire qui avait pour tâche à tester les logiciels, et spécifiquement les nouvelles installations (on avait qqn qui était intéressé pour vendre notre suite de logiciels alors il fallait que les nouvelles installs à partir de 0 fonctionnent ;) )
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 02 février 2018 - 11:22
Le ST a confirmé que mon HCHANGEREP ..\Racine était "faux" (mais c'est toujours indiqué sur la fichier d'aide en ligne à cette date alors comment savoir..)

Le changement de code, plus une récréation de la base ont résolu cette problème. J'ai simplement copié mes données, supprimé le dossier Racine de ma base de données, fait du code pour récréer toute les fichiers (vides) puis j'ai recopié mes données.