|
Ré-indexation automatique des fichiers |
Débuté par fahugues, 30 jan. 2006 23:27 - 9 réponses |
| |
| | | |
|
| |
Posté le 30 janvier 2006 - 23:27 |
Bjr!
j'ai un petit soucis : je voudrais intégrer dans le menu de mon appli, une option pour lancer la reindexation de tous les fichiers de ma bd. et je voudrais faire apparaitre une jauge pendant ce temps. comment le faire concretement surtout le traitement jauge et reindextaion ensemble. merci du coup de main ---fahug |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 07:22 |
En WD10, il y a moyen de lancer un menu qui fait le nettoyage des fichiers. Voir aide. En WD9, il y a le composant wdk, du moins je crois qu'il s'appele comme cela. |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 10:16 |
Bonjour
"fahugues" <fahugues@gmail.com> a écrit dans le message de news: 43df9e7e$1@news.pcsoft.fr...
Bjr!
j'ai un petit soucis : je voudrais intégrer dans le menu de mon appli, une option pour lancer la reindexation de tous les fichiers de ma bd. et je voudrais faire apparaitre une jauge pendant ce temps. comment le faire concretement surtout le traitement jauge et reindextaion ensemble. merci du coup de main ---fahug
Pour mes logiciels développés avec WD9 (tous en HF classic), j'ai bricolé un truc tout simple, de façon à ce que les utilisateurs puissent, quand ils le souhaitent, procéder à la ré-indexation "à chaud" de tous les fichiers de la base de données.
Pour cela, dans un menu, j'ai placé une option "Ré-indexation de tous les fichiers". Donc, quand un utilisateur souhaite, pour quelque raison que ce soit, procéder à la ré-indexation, il sélectionne cette option du menu. Le fait de sélectionner cette option place un code spécial dans la base de registres de Windows via SauveParametre et engendre une réindexation de tous les fichiers HF au prochain démarrage du logiciel.
Pour ce faire, dans le code d'initialisation du projet et avant tout traitement sur les fichiers HF, il y a une vérification de la présence de ce code spécial via ChargeParametre: 1) s'il ne s'y trouve pas: il ne se passe rien 2) s'il s'y trouve : tous les fichiers index sont effacés
Ensuite, via la réindexation à chaud, les index sont recréés automatiquement.
Puisque, dans certaines situations, les problèmes d'index peuvent empêcher le bon fonctionnement du logiciel (et donc son démarrage), ce démarrage du logiciel avec suppression automatique des index peut également être effectué depuis un raccourci placé dans le menu Démarrer de Windows, en utilisant un paramètre spécial sur la ligne de commande
A+
Val |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 10:30 |
Personnellement, j'ai créer une fenêtre avec 2 jauges ...
Une : Etat de la réindexation du fichier en cours Deux : Etat de la réindexation totale des fichiers
Ensuite je parcours les tables 1 par 1 en acrémentant les compteurs...
C'est un peu de code ( pas trop je te rassure) mais la retranscription pour l'utilisateur est trés clair au moins !!
Sinon la solution de Val est trés intéressante, et si d'ailleurs elle pouvait faire partager son code cela pourrait m'intéresser !!! |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 11:22 |
Bonjour
"Aurélien MACHABERT" <43@gauthiersa.fr> a écrit dans le message de news: 43e07096$1@news.pcsoft.fr...
Personnellement, j'ai créer une fenêtre avec 2 jauges ...
Une : Etat de la réindexation du fichier en cours Deux : Etat de la réindexation totale des fichiers
Ensuite je parcours les tables 1 par 1 en acrémentant les compteurs...
C'est un peu de code ( pas trop je te rassure) mais la retranscription pour l'utilisateur est trés clair au moins !!
Sinon la solution de Val est trés intéressante, et si d'ailleurs elle pouvait faire partager son code cela pourrait m'intéresser !!!
En fait, c'est très simple:
1) J'ai une option de menu libellée ainsi: "Reconstruire tous les index de la base de données"
Ensuite, dans le code de sélection de ce menu, j'ai ceci: ************** SauveParamètre("Systeme\Lesindex",1) Info("Au prochain démarrage du logiciel, tous les index de la base"+rc+"de données seront reconstruits automatiquement au fur et"+rc+"à mesure des besoins.") **************
2) dans le code INIT du projet, avant manipulation des fichiers HF, j'ai ceci ************** FichierNDX est une chaine
SI ChargeParamètre("Systeme\Lesindex",0)=1 ALORS TitreSuivant("Maintenance") Info("Tous les index de la base de données vont être reconstruits"+rc+"automatiquement au fur et à mesure des besoins.") FichierNDX = fRep(RepDonnes+"\*.NDX",frFichier)
TANTQUE FichierNDX <>"" fSupprime(RepDonnes+"\"+FichierNDX,frLectureSeule) Multitâche(2) FichierNDX = fRep("") FIN
fRep("")
// Pour finir, je remet à 0 le code spécial de façon à ce que le processus // ne soit pas ré-exécuté ensuite SauveParamètre("Systeme\Lesindex",0) FIN **************
Voilà ... le truc tout simple. Une habitude que j'ai pris également depuis WD55 c'est, dans le code INIT du projet, de modifier les attributs de tous les fichiers de la base de données (FIC, NDX ou MMO) ainsi que celui des divers autres fichiers appelés à être modifiés par le logiciel (DOC, TXT, INI, etc ...) de façon à faire sauter l'attribut lecture seule et ne pas engendrer des erreurs de "droits d'écriture". J'ai trop souvent, par le passé, été confronté à des clients qui font des copies de fichiers entre machine avec un CD ce qui, comme vous le savez, active automatiquement l'attribut lecture seule des fichiers.
A+
Val |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 11:32 |
les deux dernières solutions sont assez interessantes. et si val peut partager avec nous son bout de code, personnellement j'y verrai plus clair encore. sinon que ce à quoi je pense maintenant, c'est d'intégrer à mon appli, le composant WDOptimiseur. comme ca j'aurai une option de menu pour le lancer à partir de l'interface utilisateur. Tout autre apport est le bienvenu
--fahug |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 12:37 |
Aussi j'aimerais savoir pour la solution qui consiste à gérer manuellement la reindexation pour tous les fichiers avec jauge, comment gérer la progression du jauge avec la fonction hreindexe(). j'ai ajouté un superchamp dont je met le nom en paramètre dans Hreindexe comme cidessous mais ca ne marche pas:
HRéindexe(FACTURE,hNdxNormal,SCJauge.CH_JAUGE,hNdxNormal) |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 14:44 |
merci bien pour le code, c'est plus clair maintenant. |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 17:32 |
là je viens de le tester et il me supprime tous les fichiers .ndx y compris les fichiers journalidentification.ndx et JournalOperation.ndx o démarrage de mon appli après la reindexation, j'ai un messaged'erreur me disant impossible d'ouvrir les fichiers cidessus. du coup je n'ai plus accès à mon appli. une solution? |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 18:05 |
Bonjour
"fahugues" <fahugues@gmail.com> a écrit dans le message de news: 43e0d459$1@news.pcsoft.fr...
là je viens de le tester et il me supprime tous les fichiers .ndx y compris les fichiers journalidentification.ndx et JournalOperation.ndx o démarrage de mon appli après la reindexation, j'ai un messaged'erreur me disant impossible d'ouvrir les fichiers cidessus. du coup je n'ai plus accès à mon appli. une solution?
Pour que cela marche ... il faut bien sur activer la réindexation des fichiers pour le projet ... sinon cela ne marche pas, c'est évident.
Pour ce faire: 1) Menu déroulant "Projet" 2) Choix "Description du projet" 3) Section "Fichiers"
.... et là, dans la rubrique "Réindexation automatique", tu coches l'option "activer la réindexation automatique" et, si tu le souhaites, tu coches également l'option "Fenêtre de réindexation visible".
Ainsi, les fichiers index sont re-créés automatiquement par le "système" au fur et à mesure des besoins. Si tu as coché l'option "Fenêtre de réindexation visible", tu verras une fenêtre te signalant l'opération en cours.
A+
Val |
| |
| |
| | | |
|
| | | | |
| | |
|