Bonjour
Bien que ma question implique Mapinfo 9 ET Access 2000, je ne pense pas qu'il soit nécessaire d'avoir jamais utilisé Mapinfo pour y répondre, car je suis convaincu que la solution sera purement Access.
C'est pourquoi j'ai occulté ce détail dans l'intitulé, car, comme vous le verrez en lisant cet interminable post, Mapinfo n'intervient que peu dans l'histoire et je voulais éviter d'avoir un intitulé d'un km de long… Merci de votre compréhension.
Pour info, et pour ceux qui maîtrisent Access mais ne connaissent pas Mapinfo, est un logiciel de SIG (Système d'Information Géographique) qui permet d'associer à des bases de données, une information graphique.
Bien que ce ne soit pas le meilleur exemple, le cadastre permet en cliquant sur une parcelle, de connaître sa surface et son propriétaire. De même, Mapinfo peut générer une table contenant les identifiant, ainsi que toutes les information relatives aux parcelles sélectionnées, ou contenues dans un périmètre.
Tout d'abord un petit lien.
http://www.paris-pc-gis.com/externes...ss_MI_demo.htm
Il s'agit d'un ensemble de fichiers de commandes tous prêts dont une partie est à ajouter à Mapinfo et l'autre à Access. Il y a aussi de quoi faire un essai, dont la procédure est présentée à la fin du document "Exemple de mise en œuvre". Il suffit de suivre cette procédure et ça marche de suite (il faut quand même avoir Mapinfo et Access, et je ne penses pas que la version ai de l'importance, puisque j'ai réussi à les faire fonctionner avec d'autres versions).
Ils permettent, à partir d'une sélection sous Mapinfo, et en appuyant sur un bouton dans Mapinfo de
- Ouvrir Access
- Ouvrir un formulaire prévu à l'avance
- Filtrer ce formulaire pour n'afficher que les enregistrements ayant le même identifiant que les objets sélectionnés sous Mapinfo.
Ils permettent aussi d'afficher une sélection sous Mapinfo depuis ce même formulaire Access.
Dans l'exemple ci-dessus, il est question de bâtiments. Les contours sont dessinés sous Mapinfo et les informations sont stockées sous Access.
On sélectionne les bâtiments que l'on souhaite sous Mapinfo, on clique sur le bouton Mapinfo et hop, le formulaire Access n'affiche plus que les enregistrements sélectionnés.
Voilà ce qu'il se passe en arrière plan (d'après ce que j'ai compris)
Mapinfo cherche et trouve le fichier windows Temp.
Dans mon cas il se trouve C:\Documents and Settings\Ext_User\Local Settings\Temp
Il y crée un fichier appelé transfert.txt, ans lequel il recopie l'identifiant commun, sans nom de champ, sans entête de colonne, juste une ligne par objet sélectionné. Ça donne :
1
2
3
4
Etc...
Ensuite, Mapinfo doit ouvrir Access et déclencher la macro ref_mapinfo.
Je penses que l'action de Mapinfo se termine là et que la suite des opérations se déroule purement sous Access, d'où ma question dans ce forum et mon indication que des non SIG-istes peuvent y répondre.
La macro ref_mapinfo ne sert qu'a déclencher la formule OpenTextFile() incluse dans le module ref_mapinfo (et oui, le concepteur a eu la malheureuse idée d'appeler la macro et le module du même nom…Mais bon ça fonctionne et tant mieux…)
Cette fonction à visiblement pour but d'ouvrir et de filtrer le formulaire "batiments" dans l'exemple, en utilisant le contenu du fichier Transfert.txt, localisé notamment grâce au module info_systeme qui doit servir à localiser le fichier Windows temp.
Alors voilà ce que je souhaite :
1) Je voudrais bien que le module ref_mapinfo crée une table, toujours la même, en écrivant le contenu du fichier Transfert.txt. Les fois suivantes, le contenu de cette table sera écrasé et remplacé par le nouveau contenu de Transfert.txt.
Bien sur mon objectif est de conserver ce principe qui permet à Access de trouver tout seul l'endroit où ce fichier est rangé, sinon, j'aurais utilisé une banale commande TransfererTexte en macro convertie en VBA.
2) Que ce même module ref_mapinfo ouvre un formulaire (en lieu et place de "batiments"), mais ce coup-ci sans filtrage.
3) Bien entendu le module ref_mapinfo ne devra plus ouvrir ni filtrer le formulaire ("batiments" ou tout autre en lieur et place) comme précédemment.
Pour ce qui concerne le second point, j'ai bien fait un essai de conversion de macro ouvrir un formulaire qui me donne évidement :
Mais je ne sais pas comment et où et surtout à la place de quoi l'intégrer au module ref_mapinfo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Function Macro2() On Error GoTo Macro2_Err DoCmd.OpenForm "batiments", acNormal, "", "", , acNormal Macro2_Exit: Exit Function Macro2_Err: MsgBox Error$ Resume Macro2_Exit
Pour l'instant, la fonction de Access vers Mapinfo n'est pas une priorité parce que si je fais ces modifs, c'est parce que la structure du formulaire proposé ne me convient pas.
Enfin, je n'utilise que très peu VBA, donc merci de faire comme si je ne comprenais rien et de ne pas balancer du code sans un minimum d'explications…
Je m'excuse de la longueur du message, mais je penses qu'il est complet et qu'ainsi même ceux qui n'ont jamais manipulé Mapinfo pourront participer.
D'avance merci.
PS : Pour ceux qui comme moi, veulent effectuer une liaison avec un identifiant en caractères plutôt qu'en chiffres, il y a quelques modifs à opérer, dont la liste se trouve sur ce lien.
http://www.forumsig.org/showthread.php?t=3240
Si jamais le lien ne fonctionne pas directement, voici comment retrouver la discussion :
Forum SIG - Systèmes d'Information Géographique > Les Logiciels SIG > MapInfo > Assistance Technique > [MapInfo 7.x] MapInfo et formulaire Access 2002
Partager