banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 03 April 2006 15:13

V. Girault
Participant actif
Lieu: Clermont-Ferrand
Date d'inscription: 22 Sep 2005
Messages: 106

Erreur de table ouverte sous MapBasic

Bonjour à tous !

Contexte : Je sélectionne un répertoire via Mapinfo. Mon programme Mapbasic doit : pour la première table qu'il trouve dans le répertoire, faire une copie de celle-ci sous le nom "TEST"
Puis, pour toutes les autres tables de ce répertoire, copier leur données en intégralité dans la table TEST.

Le problème est qu'à un moment du traitement (lors de la copie des données dans la deuxième table très exactement....) Mapbasic me signale que la table test est déjà ouverte.
Voici le code de cette section :

Code:

Open Table rep+"\test.TAB" Interactive  
          Browse * from TableSeule                    
          Select * from TableSeule into Selection
          Commit Table test as rep+"\Resultat.TAB" TYPE NATIVE    'Table deja ouverte

Il doit y avoir une subtilité dans le into de la troisième ligne car au début je mettais into test et j'avais le même message.
Effectivement, via la commande MI Fichier... Fermer Table, ma table test est bien listée dans la liste déroulante, mais si je fais la manip en dur sous Mapinfo, en surveillant la fenêtre Mapbasic par la même occasion, je parviens à faire mes commandes sans problème. La seule commande que j'ai pu pister via la fenêtre MapBasic est "Close table test Interactive", et là elle disparaît de la liste des tables. Mais si je lance cette commande dans mon algo, forcément, çà ne fonctionne plus.

Quelle est la commande magique qu'il me manque pour arriver à mes fins ? J'ai regardé le livre MB à propos de Into, mais çà ne m'a rien apporté de précis..... J'ai regardé la commande Commit aussi, je n'ai rien trouvé de plus non plus....

Si vous avez des idées, merci d'avance !

Hors ligne

 

#2 Mon 03 April 2006 20:48

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: Erreur de table ouverte sous MapBasic

Pour le problème en dernière ligne celà peu peut être provenir du fait que la table resultat est ouverte.
Pour le into de la troisième ligne, il s'agit du nom que prendra ta sélection dans la liste des table, la table test ayant au préalable été ouverte, celà en ferait deux, ce qui est interdit, change de nom et celà devrait fonctionner.

Hors ligne

 

#3 Mon 03 April 2006 21:03

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Erreur de table ouverte sous MapBasic

Bonjour,
Pas très explicite le code joint...
Le code dit:
- ouvrir la table 'test'
- ouvrir le feuille de donnée de la table' TableSeule'
- tout sélectionner dans 'TableSeule'
- enregistrer la table test sous le nom de 'resultat'.....??pas sûr que ce soient les actions souhaitées??
Un des problème est que pour mélanger des constantes (test.tab) et des varables (rep) il vaut mieux passer par une commande interprétée. Donc,après un dim cmd as string, dire:
cmd="Open Table "+rep+"\test.TAB interactive"
run command cmd
L'autre est que pour ajouterTableSeule à test il faut des commandes genre:
Insert into test select * from TableSeule
nb: il faut que les structures des tables soient identiques, sinon on perd les attributs de la table ajoutée

Hors ligne

 

#4 Wed 05 April 2006 16:07

V. Girault
Participant actif
Lieu: Clermont-Ferrand
Date d'inscription: 22 Sep 2005
Messages: 106

Re: Erreur de table ouverte sous MapBasic

Merci pour vos réponses !
Comme le signale Maurice Nadal, la commande de la deuxième ligne fonctionne, mais uniquement dans le cas de structures de tables identiques. Ce qui sera parfois le cas mais pas toujours.....
Depuis, j'ai modifié mon code comme suit :

Code:

Open Table rep+"\test.TAB" Interactive
         Insert into test Select * from TableSeule 
         Commit Table test as rep+"\Resultat.TAB" TYPE NATIVE    
         Close All

et après je fais un kill de la table test. Il ne me reste plus que la table Resultat qui est la solution escomptée....
Ca fonctionne ! Merci beaucoup

Hors ligne

 

#5 Mon 10 April 2006 11:16

ghaieth
Juste Inscrit !
Lieu: tunis
Date d'inscription: 8 Mar 2006
Messages: 3

Re: Erreur de table ouverte sous MapBasic

Ou est ce qu'on peut télécharger gratuitement MapBasic!!

Merci beaucoup

Hors ligne

 

#6 Mon 10 April 2006 11:34

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Erreur de table ouverte sous MapBasic

Hello ghaieth,

Le Mapbasic est un langage de programmation. Tu peux utiliser du Mapbasic dans Mapinfo, du moins certaines fonctions.
En revanche et contrairement a son concurrent chez esri, il faut acheter le logiciel pour pouvoir faire et compiler des programmes en MB.

Donc gratuitement... pas possible, en tout cas pas légalement :'(
Rob.

Hors ligne

 

#7 Mon 10 April 2006 14:59

ghaieth
Juste Inscrit !
Lieu: tunis
Date d'inscription: 8 Mar 2006
Messages: 3

Re: Erreur de table ouverte sous MapBasic

merci beaucoup Rob pour ces précisions!!

Et tant qu'on y est-ce qu'on peut  visualiser un parcours de mesures numérique à partir de fichiers traités ".xls" sur Google Earth!! et non pas sur des cartes non calées (ou supposées calées)

C'est extrèmement important par ce qu'on peut détecter avec précision des évènements tels que les appels bloqués etc...

Encore merci!

Hors ligne

 

Pied de page des forums

Powered by FluxBB