FRANAP
Messages postés4Date d'inscriptionjeudi 19 mars 2009StatutMembreDernière intervention11 juin 2009
-
11 juin 2009 à 11:49
FRANAP
Messages postés4Date d'inscriptionjeudi 19 mars 2009StatutMembreDernière intervention11 juin 2009
-
11 juin 2009 à 21:37
Bonjour,
Merci encore pour le VRunFoxpro qui nous aide bien pour mettre à jour les tables, chez les clients.
Chez un client, utilisant une application FoxPro sur un serveur, suite à un incident éléctrique (que le client ne nous a pas signalé mmédiatement !!) toutes les tables ont été endommagées et il a fallu réparer en urgence (bien sûr)
Ma question :
Existe-il une commande qui pourrait nous alerter sur un incident_système ou une table endommagée
et qui serait lancée lors de la 1ere connexion du 1er utilisateur.
Elle bloquerait l'accés à l'application et enverrait un message d'alerte (compréhensif, avec peut-être le type d'incident et le nom de la table endommagée)
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 11 juin 2009 à 16:51
Bonjour,
1 commande, non. Mais tu peux prévoir dans tes applications une routine de vérification, qui d'une part teste la fermeture correcte de l'appli la fois précédente, et d'autre part effectue des vérifs sur les tables.
Les vérfications sur les table porteront dans l'ordre sur les index, puis sur les memos. si un index fait 0 octets, alors c'est que l'appli a été fermée brutalement. mais si tu veux vérifier tes index plus précisément, alors tu dois ouvrir en exclusive et relancer une réindexation (ou bien carrémént reconstruire tous les index par du code).
Pour les mémos, le plus simple est de rajouter un enregistrement, d'écrire dans le memo, puis de faire un pack memo, puis delete l'enregistrement ajouté (et pack éventuellement).
Si ça ne suffit pas, tu peux utiliser le SET TABLEVALIDATE (si tu as VFP9).
Et si c'est encore insuffisant, il ne te reste plus qu'à vérifier le contenu du header des tables en les lisant avec des focntions de bas niveau (FOPEN, FREAD, FSEEK)
Pour tester la fermeture correcte, il faut vérifier l'état d'un drapeau qui est posé à la fermeture (dans le queryunload du form principal, ou dans le main.prg après le clear events qui lui redonne la main). ce flag peut être une valeur en clé de registre, ou un fichier dans un répertoire spécifique, etc...).
Si l'appli est "tuée", le flag est incorrect, tu le sais au démarrage, et tu peux lancer une vérif approfondie.
tu fais tout ça dans un TRY/CATCH, au lancement...