|
HChangeMotDePasse : fonctionne, fonctionne pas :( |
Débuté par Greg, 10 aoû. 2025 21:43 - 9 réponses |
| |
| | | |
|
| |
Membre enregistré 69 messages |
|
Posté le 10 août 2025 - 21:43 |
Bonjour la communauté
Je rencontre un comportement étrange pour lequel j'ai besoin de votre savoir. L'utilisation de "HChangeMotDePasse" ne fonctionne pas sur certains fichiers
HChangeMotDePasse(FICHIER_A,"*******") => fonctionne HChangeMotDePasse(FICHIER_B,"*******") => ne fonctionne pas : on dirait que le programme est dans un boucle infinie.
Aucune erreur n'est générée. Je dois terminer le test pour arrêter le traitement. La fenêtre qui appelle le code se met alors à flasher. Parfois l'analyseur temps réel apparaît sans aucune données
Ce sont des fichiers FIC en mode HFSQL classic avec 2-3 records tout au plus. Rien de particulier ou d'extravagant dans la description des tables.
Je cale... auriez-vous des pistes à explorer ?
Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 263 messages |
|
Posté le 10 août 2025 - 22:25 |
Bonjour, Je cite la doc : >Cette fonction lance une modification automatique du fichier de données. Si le fichier de données était crypté avec un mot de passe différent, il sera entièrement re-crypté avec le nouveau mot de passe. Cette opération peut être relativement longue.
Ne serais-tu pas dans cas de figure ?
-- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFM |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 69 messages |
|
Posté le 11 août 2025 - 12:33 |
malheureusement Voroltinquo a écrit :
Bonjour, Je cite la doc : Cette fonction lance une modification automatique du fichier de données. Si le fichier de données était crypté avec un mot de passe différent, il sera entièrement re-crypté avec le nouveau mot de passe. Cette opération peut être relativement longue.
Ne serais-tu pas dans cas de figure ? -- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFM
Malheureusement non... et le fichier en question contient 2-3 records tout au plus. Rien de bien méchant qui impliquerait un temps long de traitement. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 955 messages |
|
Posté le 11 août 2025 - 13:02 |
Bonjour, Je ne prétends pas avoir la réponse mais qu'en est-il des droits sur le fichier, la doc de "HChangeMotDePasse" en parle. Eventuellement, ne faut-il pas fermé la connexion au fichier après l'opération et avant de passer au suivant ?
Je ne sais pas, j'apporte juste des idées qui me passent par la tête. Cdlt |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 69 messages |
|
Posté le 11 août 2025 - 20:32 |
Je ne sais pas si c'est lié ou pas mais lorsque j'essaie de créer un dossier perso dans l'analyse j'ai un message d'erreur : Un argument non valide a été détecté. Le dossier perso se crée quand même. Si je déplace une table vers ce dossier => même message Si je double clic sur le dossier pour y accéder, même message.
Et cela sur 2 postes différents

|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 955 messages |
|
Posté le 11 août 2025 - 23:18 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 69 messages |
|
Posté le 20 août 2025 - 21:42 |
Greg a écrit :
Je ne sais pas si c'est lié ou pas mais lorsque j'essaie de créer un dossier perso dans l'analyse j'ai un message d'erreur : Un argument non valide a été détecté. Le dossier perso se crée quand même. Si je déplace une table vers ce dossier => même message Si je double clic sur le dossier pour y accéder, même message.
Et cela sur 2 postes différents
Pour information :
Après désinstallation et réinstallation complète de windev, cette erreur d'argument non valide a disparu. C'est déjà ça. cela n'a pas résolu mon problème de "blocage" sur le HChangeMotDePasse(FICHIER_B,"*******") qui bloque comme une boucle infinie. Cependant, en compilant l'app et en essayant en mode "runtime" ce n'est pas le cas. Cela semble donc limité au mode débug. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 11 septembre 2025 - 13:39 |
Hello
Je me retrouve dans un cas similaire, où le comportement de HChangeMotDePasse() est étrange, voire instable. Je ne sais pas si une solution a été trouvée pour le cas rencontré par @Greg ?
Dans mon cas, je suis dans une procédure qui permet d’initialiser mon composant dans le programme principal. Historiquement, les tables du schéma de données de mon composant utilisaient un mot de passe différent de celui des tables du programme principal. Une décision a été prise pour harmoniser le tout, en utilisant un mot de passe unique. Je dois donc mettre à jour le mot de passe des fichiers à l’initialisation du composant.
Pour ce faire, nous utilisons un coffre-fort de mots de passe, qui contient à la fois le nouveau mot de passe à utiliser et l’ancien.
Je récupère la liste des tables de mon schéma via la fonction HListeFichier(). Ensuite, je boucle sur cette liste : à chaque itération, j’obtiens le nom de la table à manipuler.
Je vérifie si le fichier existe. S’il n’existe pas, je le crée avec le nouveau mot de passe. Dans le cas contraire, j’entre dans un SELON qui gère trois cas :
- Je HPasse() la table avec le nouveau mot de passe. - Je HPasse() la table avec l’ancien mot de passe. - Je HPasse() la table sans mot de passe (""), pour gérer le cas (qui existe) où le fichier n’a pas de mot de passe.
Ce SELON est lui-même dans une boucle TANTQUE, qui continue tant que je n’ai pas réussi à ouvrir la table avec HOuvre() ou tant que je n’ai pas testé toutes les possibilités (via une variable de type entier qui me permet aussi de sélectionner le cas à tester).
L’appel à HOuvre() est encadré par un QUAND EXCEPTION DANS. Si aucune exception ne se produit, et que HOuvre() retourne Vrai, j’utilise alors la fonction HChangeMotDePasse() avec, en premier paramètre, le nom de la table, et en second, le nouveau mot de passe (stocké dans le coffre-fort).
Voici les comportements que j’observe : - Parfois, cela fonctionne. - Parfois, la fonction retourne Vrai, mais le mot de passe n’est pas changé. - Parfois, j’ai une erreur bloquante indiquant un problème avec le mécanisme de sécurité HFSQL, et qu’il n’y a eu aucun retour pour "*", alors que j’utilise bien le nom de la table.
J’ai essayé plusieurs choses, sans succès. Je n’ai cependant pas encore testé la compilation du projet pour vérifier si le problème ne se produit qu’en mode débogage. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 509 messages |
|
Posté le 11 septembre 2025 - 15:05 |
J'ai constaté sans m'appesentier que parfois,les fichiers vides ont des soucis |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 11 septembre 2025 - 15:24 |
Ralph IGCI a écrit : > J'ai constaté sans m'appesentier que parfois,les fichiers vides ont des soucis
Dans mon cas, les fichiers ne sont pas vides.
Sinon, même constat que @Greg : si je compile le projet, je n'ai aucun problème avec HChangeMotDePasse(). Cependant, le problème est présent en débug. |
| |
| |
| | | |
|
| | | | |
| | |
|