#1 Fri 10 September 2010 15:18
- V. Girault
- Participant actif
- Lieu: Clermont-Ferrand
- Date d'inscription: 22 Sep 2005
- Messages: 106
[MB 8.5] Compteur d'initialisation d'outil MB
Bonjour à tous....
Depuis un moment, j'ai terminé le code d'un outil Mapbasic qui permet d'automatiser une carte donnée. Le 1er souci étant que ma structure à un système de positionnement des objets propriétaire, j'ai une table à mettre à jour tout le temps à l'initialisation de l'outil. Pour ce faire, je dois d'abord récupérer la table sur un serveur, puis manuellement la géocoder avec un logiciel propriétaire de ma structure pour que l'outil puisse ensuite monter un début de carte se basant sur cette table. Avant de créer sa carte toutefois, je modifie la table pour réécrire le contenu de deux colonnes en clair, vu qu'en sortie de géocodage, celles-ci contiennent un caractère parasite à chaque ligne. Le deuxième souci ensuite est qu'il faut ensuite copier cette table au bon endroit dans le paquetage Copy Plus sur lequel s'appuie le WOR de l'outil.
La chose sympa que je pense à faire serait donc, avec un module de code supplémentaire, d'automatiser tout çà. La mise à jour de la table se ferait une fois par semaine. Il me faudrait donc, puisque les variables globales de l'outil (il y en a pas mal) sont initialisées à chaque exécution de l'outil pendant toute la durée de son exécution, tester si l'outil est exécuté ou non plus d'une fois par semaine, et si oui, ne lancer qu'une seule fois la mise à jour de la table. Par extension, il me faut aussi contrer le fait que l'utilisateur ferait une mauvaise manip, veuille recommencer sa carte, donc il faut que les vars globales se remettent toutes à zéro, notamment pour la mise à jour des colonnes de ma table. Pertinemment, il me faut donc un compteur au cours de la session également, pour pister également la confection d'une nouvelle carte au profit d'une râtée.... et éviter ainsi de refaire la mise à jour des colonnes de la table.
C'est l'action de tester si l'outil est exécuté ou non plus d'une fois par semaine, ou au cours d'une même journée me pose souci, pour l'instant, je n'ai pas trop d'idée... Comment feriez-vous ? Si l'idée n'est pas bonne, que feriez-vous autrement ?
J'ai bien pensé à une gestion à la date, mais çà me semble d'emblée trop lourd...
Dans l'attente de lumineuses idées, merci beaucoup d'avance à tous....
Hors ligne
#2 Fri 10 September 2010 16:05
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: [MB 8.5] Compteur d'initialisation d'outil MB
Bonjour,
Voici une suggestion :
Dans ta "sub main" Celle qui habituellement créer les menu et initialise l'outil, just apres la déclaration de variable/fonction/sub, ajoute ceci
Code:
If Weekday( CurDate( ) ) = 2 Then ' 2 étant lundi, 3 mardi etc.... run application c:\...\mise_a_jour.mbx 'Un mbx que tu crées pour mettre a jours ta table End If ... 'Le reste de ton code ...
Le code se met donc a jour tout les lundi quand tu "load" l'outil
JF
Dernière modification par jean94 (Fri 10 September 2010 16:06)
Hors ligne
#3 Wed 15 September 2010 15:04
- V. Girault
- Participant actif
- Lieu: Clermont-Ferrand
- Date d'inscription: 22 Sep 2005
- Messages: 106
Re: [MB 8.5] Compteur d'initialisation d'outil MB
Bonjour ,
C'est merveilleux ! Merci beaucoup jean94 !!
Hors ligne
#4 Wed 15 September 2010 16:07
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: [MB 8.5] Compteur d'initialisation d'outil MB
Il a un ou deux hic que je prévois deja...que se passera t-il si tu ouvre deux fois l'outil le lundi et si lundi tu es absent tu voudrais p-e qu'il se mettre à jour le jour suivant?
Pour cela je te conseil d'écrire la date dans un .txt et lire la date de derniere mise à jour avec le jour présent pour activer la mise a jour ou non. Les fonction nécéssaire seraient les suivantes
CurDate( ) function
Month( ) function
Day( ) function
Year( ) function
Tu peux même réécrire comme ceci pour avoir le la date ajd : Print Day( CurDate( ) ) + "/" + Month( CurDate( ) ) + "/" + Year( CurDate( ) )
JF
Hors ligne