Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Fri 31 January 2014 20:57
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
Mise à jour quotidienne Mapinfo avec fichier excel
Bonjour,
Je cherche un moyen d'automatiser une mise à jour entre excel et Mapinfo ( pour l'instant je vais pas aborder Mapbasic)
Je dispose d'un fichier Mapinfo avec des polygones ( une colonne ID , et d'autres colonnes...) c'est une table qui risque d'évoluer concernant que la création d'autre polygone avec leur ID
Je vais donc produire d'autre polygone mais juste renseigner la colonne ID
J'ai un fichier excel qui contient des informations ( même structure que le fichier Mapinfo avec la colonne ID) cependant le fichier contient des informations que souhaite rapatrier souvent dans la table Mapinfo
Comment mettre à jour le fichier Mapinfo sans passer par la mise à jour colonne "mise à jour" SQL?
La création des polygones dans le fichier Mapinfo se fera toujours avant l'actualisation du fichier excel. ( je procède à la création du polygone puis j'informe l'autre personne pour mettre à jour le fichier excel puis après j'ai le feu vert pour mettre à jour le fichier Mapinfo grâce au fichier excel)
Est-possible de remplacer simplement le .DAT par le fichier excel et après de remplacer tout simplement le fichier excel quand il y a une mise à
jour.
Ou alors je passe par une mise à jour par la conception MBX perso (Mise à jour automatique des colonnes) !!
Merci par avance !!
Dernière modification par didou72 (Fri 31 January 2014 20:58)
Hors ligne
#2 Mon 03 February 2014 11:42
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: Mise à jour quotidienne Mapinfo avec fichier excel
Bonjour,
Est-il nécessaire d'avoir en doublon les attributs dans le fichier Mapinfo ?
Car vous pouvez ouvrir votre table avec la géométrie et celle qui appelle le fichier excel, puis vous travaillez avec des jointures.
Sinon, si vous voulez absolument avoir les données attributaires en "dur" dans le fichier mapinfo, un wor tout simple, à écrire avec le bloc-note, peut suffire :
Code:
!Workspace !Version 600 !Charset WindowsLatin1 Open Table "Mon_Chemin\Ma_Table_Geographique" As Ma_Table_Geographique Interactive Open Table "Mon_Chemin\Ma_Table_Excel" As Ma_Table_Excel Interactive Add Column "Ma_Table_Excel" (Champ_a_Mettre_a_jour) From Ma_Table_Geographique Set To Champ_a_Mettre_a_jour Where COL3 = COL9 Commit Table Ma_Table_Geographique Interactive
en personnalisant les noms : "Mon_Chemin\Ma_Table", "Mon_Chemin\Ma_Table_Excel", "Champ_a_Mettre_a_jour", "COL3" et "COL9" (COL3 est dans mon exemple la 3ième colonne de la table excel qui contient l'identifiant permettant de faire la jointure, COL9 est la 9ième colonne de la table géographique qui contient le même identifiant)
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#3 Sun 09 February 2014 18:21
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
Re: Mise à jour quotidienne Mapinfo avec fichier excel
Merci beaucoup !
Je viens de réaliser l'opération cela marche très bien en plus c'est en chemin relatif.
Hors ligne
#4 Fri 21 February 2014 20:25
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
Re: Mise à jour quotidienne Mapinfo avec fichier excel
Bonjour,
l'astuce marche mais je rencontre quand même un problème
Je dispose d'un fichier excel et son fichier .tab en mode feuille intégrale ou alors A1 M10000!
J'ai produit le fichier .wor avec vos recommandation pour faire une mise à jour automatique.
Quand j'écrase l'ancien fichier excel par le nouveau qui dispose de plus de ligne et que je relance la MAJ avec le fichier .wor alors là il ne procède pas à la nouvelle MAJ des nouvelles lignes (pourtant il y a quand même dans le.tab A1M10000).
Par contre quand je supprime le fichier . IND du fichier excel.tab alors j'ai une erreur comme quoi il ne trouve pas le fichier.IND mais il procède bien à la MAJ.
Avez-vous une solution pour éviter que le fichier .IND se produise quand j'ouvre le fichier excel.tab dans Mapinfo ou alors avez vous une autre solution ?
Je suis maintenant en Mapinfo 12
Merci pour votre retour
Dernière modification par didou72 (Fri 21 February 2014 20:36)
Hors ligne
#5 Fri 21 February 2014 21:09
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
Re: Mise à jour quotidienne Mapinfo avec fichier excel
Apparemment c'est le fichier .wor pour mettre à jour le fichier qui produit le fichier Excel_mapinfo.IND
Du coup il index est après il ne fait que la MAJ sur les lignes indexé
Comment éviter que le fichier IND se produise lors de la Mise à jour ?
merci pour votre retour
Dernière modification par didou72 (Fri 21 February 2014 21:10)
Hors ligne
#6 Mon 24 February 2014 11:49
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: Mise à jour quotidienne Mapinfo avec fichier excel
Bonjour,
A partir du moment où on fait une jointure entre 2 tables, le champ utilisé pour la jointure est indexé. Cela est incontournable.
Par contre, vous pourriez définir votre table excel avec plus de lignes qu'elles n'en contient au départ (seul inconvénient, votre table comportera un certain nombre de lignes vides). Cela se fait au moment où vous ouvrez votre fichier excel pour la première fois dans Mapinfo : ne pas prendre la définition par défaut de la plage de cellules, mais il faut en spécifier une manuellement.
Pour un fichier excel déjà défini, il faut ouvrir directement le .xls et écraser la définition existante de la table.
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#7 Tue 25 February 2014 10:24
- cec_92
- Participant assidu
- Date d'inscription: 28 Feb 2008
- Messages: 193
Re: Mise à jour quotidienne Mapinfo avec fichier excel
Bonjour,
Voir également du côté d'une liaison ODBC entre Excel et Mapinfo, si cela pourrait convenir à votre fonctionnement.
Fichier --> Ouvrir une connexion DBMS.
Cordialement.
Hors ligne
#8 Thu 27 February 2014 09:28
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
Re: Mise à jour quotidienne Mapinfo avec fichier excel
Bonjour,
A partir du moment où on fait une jointure entre 2 tables, le champ utilisé pour la jointure est indexé. Cela est incontournable.
Par contre, vous pourriez définir votre table excel avec plus de lignes qu'elles n'en contient au départ (seul inconvénient, votre table comportera un certain nombre de lignes vides). Cela se fait au moment où vous ouvrez votre fichier excel pour la première fois dans Mapinfo : ne pas prendre la définition par défaut de la plage de cellules, mais il faut en spécifier une manuellement.
Pour un fichier excel déjà défini, il faut ouvrir directement le .xls et écraser la définition existante de la table.
Nicolas.
bonjouŕ merci pour votre retour cependant j ai déjà définit manuellement la taille du tableau excel dans mapinfo avec beaucoup de ligne en trop.
j essaye de trouver une méthode simple de maj pour des gens qui ne sont pas pro de sig. je vais produire le fichier wor et produire le premier fichier tab du tableau excel.
pour moi écraser le fichier exel par un nouveau puis lancer le fichier wor pour activer la maj de la table c est assez simple. bon cependant apparemment il faut aussi supprimer le ficher ind avant mais cela provoque une petite alerte dommage c est pas clean.
je résume
1er maj
1 produire le fichier mapinfo contenant les polygones
2 produire par une personne un fichier excel contenant les informations sur certains polygones les autres ne sont pas rentrés
3 mettre le tableau excel dans le même dossier que le tableau mapinfo
4 produire le fichier .tab du fichier excel ( définition de plus de 5ooo lignes pour voir grand )
6 produire le fichier wor avec les noms des fichiers pour faire la maj
pour les autres maj
écraser le fichier excel
supprimer le fichier ind
lancer le fichier wor pour la maj une alerte s affiche faire ok mais il exécute bien la mise a jour
est il possible de faire une verification avec le fichier wor du style je compte le nombre de ligne remplit mais que dans certaines colonnes (3 colonnes) dans le fichier avec les polygone et je compte le nombre de ligne remplit dans le fichier
excel.tab
j imagine quil faut faire une selection différent de 0 sur les colonnes et faire un count
mais j arrive pas l ecrire
merci pour votre retour
Hors ligne
#9 Thu 27 February 2014 11:33
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: Mise à jour quotidienne Mapinfo avec fichier excel
est il possible de faire une verification avec le fichier wor du style je compte le nombre de ligne remplit mais que dans certaines colonnes (3 colonnes) dans le fichier avec les polygone et je compte le nombre de ligne remplit dans le fichier
excel.tab
j imagine quil faut faire une selection différent de 0 sur les colonnes et faire un count
le code à utiliser :
Code:
Select count(*) from MaTable where Champ1<>"" group by ChampX into Selection
l'astuce étant de grouper sur un champ (ChampX dans l'exemple) qui a la même valeur pour tout les enregistrements.
Sinon, un point de vigilance dans votre procédure pour que la jointure se fasse correctement :
- s'assurer que la "table contenant les polygones" soit bien compactée avant de faire les maj.
Testez la solution de cec_92 qui me parait plus judicieuse. Ainsi, vous n'aurez pas besoin de reproduire un .tab à chaque maj.
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#10 Thu 27 February 2014 12:30
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
Re: Mise à jour quotidienne Mapinfo avec fichier excel
je vais regarder un tuto sur la connexion odbc (si vous avez un bon lien je suis preneur)
concernant ma procedure je vais rajouter une commande de compactage de tabe dans le wor de mise a jour.
le fichier .tab du fichier excel n est pour l instant pas reproduit c est juste le fichier excel qui est ecrasé.
le .tab comporte une dimension de tabe tres importante est des formats tres grands pour les colonnes subissants la maj
autre solution
avant le traitement le fichier excel est transformė par vba pour etre compatible à mapinfo je pense que je peux aussi produire par vba son fichier .tab à chaque maj et donc ecraser les anciens fichiers.
1 supprimer le fichier ind
2 ecraser le fichier excel et son .tab (plus d alerte)
3 lancer le .wor (compactage , maj des colonnes, nombre d enregistrement pour chaque table )
pour le nombre d enregistrement je pense faire un message avec une variable
moi je cherche à compter les lignes qui sont non vide dans au moins une colonne.
ligne 1 si colonne 1 vide , colonne 2 non vide ,colonne 3 vide alors je compte 1
ligne 2 si colonne 1 non vide, colonne 2 non vide, colonne 3 non vide alors je compte 1 donc il y a 2 enregistrement
ligne 3 si colonne 1 vde, colonne 2 vide, colonne 3 vide alors je compte 0 donc il y a toujours 2 enregistrements
en gros
Code:
Select count(*) from MaTable where Champ1<>"" or champ2 <> "" or champ 3 <>"" into Selection
Dernière modification par didou72 (Thu 27 February 2014 19:59)
Hors ligne
#11 Sat 08 March 2014 10:19
- didou72
- Participant assidu
- Date d'inscription: 21 Mar 2012
- Messages: 192
Re: Mise à jour quotidienne Mapinfo avec fichier excel
Bonjour,
Un petit retour sur le problème !!
Il faut juste utiliser la commande "DROP index" qui est expliquée dans la notice de Mapbasic
A bientôt
Hors ligne