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 Thu 11 December 2014 09:35

SylvaDEES
Participant actif
Date d'inscription: 12 Jul 2012
Messages: 83

Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)

Bonjour,

je dispose de 208 tables sur lesquelles je dois :  créer/ajouter une colonne "surface" et y ajouter la surface en m² de chaque objets.

J'aimerais, si possible, automatiser cette tâche par l'intermédiaire d'une seule requête SQL à lancer dans la fenêtre FMB, cependant je sèche
sur la façon de la rédiger. Je souhaiterais passer par :

  ALTER TABLE  table1,....,....,.....,table208
    ADD colonne"Surface", type colonne,......

  UPDATE table1,....,....,.....,table208
    SET colonne"Surface"=CartesianArea


En vous remerciant pour vos suggestions.

Hors ligne

 

#2 Thu 11 December 2014 11:01

nicoboud
Membre
Lieu: Nantes
Date d'inscription: 12 Oct 2007
Messages: 860

Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)

Bonjour,

Vous devriez y arriver avec scriptgen. Tapez ce mot-clé dans la barre de recherche.

Le principe : mettez au point votre commande (un script) pour une table, puis remplacer le nom de votre table par une variable qui va reprendre les noms de vos 208 tables dans scriptgen, qui va vous produire les 208 scripts à copier coller dans la FMB.

Nicolas.


Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS

Hors ligne

 

#3 Thu 11 December 2014 11:45

SylvaDEES
Participant actif
Date d'inscription: 12 Jul 2012
Messages: 83

Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)

Bonjour,

autant pour moi, ce n'est finalement pas si compliqué.
J'ai édité un script de ce type avec Notepad++ et qui fonctionne bien:

Open Table "Chemin d'accès de ma_Table"
Alter table "ma_Table" (add SURFACE Integer)
Update ma_Table Set SURFACE=CartesianArea(obj, "sq m")
Commit Table ma_Table

Petites questions cependant, de la part d'un novice en FMB:

. dans ce cas précis, ne peut-on pas s'affranchir de l'ouverture des Tables dans Mapinfo ??

. quelle est l'interface d'écriture la plus adaptée : Notepad ++  ou Scriptgen ??

SylvaDEES

Hors ligne

 

#4 Thu 11 December 2014 13:28

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)

Salut,

. dans ce cas précis, ne peut-on pas s'affranchir de l'ouverture des Tables dans Mapinfo ??


Non, et il faut bien le chemin de ta table pour la modifier.

. quelle est l'interface d'écriture la plus adaptée : Notepad ++  ou Scriptgen ??


Je ne comprends pas trés bien la question.
D'un côté tu as un éditeur de texte et de l'autre un executable qui te dupliques des lignes de code.
Je ne connais pas bien Notepad ++, ce qui est bien c'est qu'il a une coloration syntaxique pour MapBasic mais je n'ai jamais trouvé de fonction pour dupliquer des requêtes via une liste.Tu peux peut être m'éclairer?
Maintenant pour ton script initial, je rajouterais un:

close table TaTable Interactive


Celà évitera que tu aies 208 tables d'ouvertes wink
Une autre observation -> la FMB est limitée en nombre de lignes donc 208 x 5 lignes de code celà fait beaucoup.
Procède par lots.
A+
Joël

Hors ligne

 

#5 Thu 11 December 2014 16:19

SylvaDEES
Participant actif
Date d'inscription: 12 Jul 2012
Messages: 83

Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)

Bonjour Spacejo,

tout d'abord merci pour tes réponses et ton expertise.

J'ai ajouté la ligne Close Table comme indiqué, cela complète à 100% l'objectif de la requête.

J'avoue ne pas avoir encore découvert et pris en main Scriptgen, ce qui ne serait tarder. Par conséquent je ne suis, pour le moment,
pas suffisamment compétent pour répondre à ta question.

Sinon, oui,  Il y a bien une coloration syntaxique pour MapBasic dans Notepad++

Concernant le nombre de lignes supportées par la fenêtre FMB, j'ai donc coupé la poire en deux, et pas de problèmes particuliers,
les requêtes se sont parfaitement exécutées.

SylvaDEES

Hors ligne

 

#6 Wed 14 January 2015 08:26

Betula
Participant occasionnel
Date d'inscription: 18 Sep 2005
Messages: 20

Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)

Bonjour,
La fenêtre mapbasic est utile pour développer du code ou tester des commandes. 
Pour faire des traitements répétitifs nombreux il est préférable de recourir à un fichier .wor. 
Il n'y a pas de limite du nombre de lignes. 
L'astuce est décrite dans l'aide de Scriptgen. 
D'ailleurs celui ci génère des fichiers wor fonctionnels.
Salutations
BeTuLa


BeTuLa

Hors ligne

 

Pied de page des forums

Powered by FluxBB