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é ?

#1 Mon 17 February 2014 23:22

Thomas
Participant actif
Lieu: Rennes
Date d'inscription: 5 Sep 2005
Messages: 71

Sélection itérative

Bonjour,
Petit problème qui en est un gros pour un non-utilisateur de Map basic...
Je dispose de 2 tables : 1 tables surfaces et une tables points.
Les tables surfaces peuvent se superposer, donc chaque surface contient plusieurs points et chaque point peut être contenu dans plusieurs surfaces.
Je souhaite, pour chaque surface, effectuer une sélection des points qu'elle contient afin d'enregistrer ma sélection dans une nouvelle table.
En fait, générer une boucle du genre :
For i=1 to "nb de valeur de la table surface"
Select * from Surfaces, points where Surfaces.ID=i and Surfaces.Obj Contains Points.Obj into Selection_i

Je ne sais pas si c'est plus clair avec mon exemple....
Avez-vous des pistes vers lesquelles m'orienter?
D'avance merci.

Hors ligne

 

#2 Tue 18 February 2014 00:41

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

Re: Sélection itérative

Salut,

Une solution est d'utiliser la FMB couplée avec scriptgen.
Scriptgen --> voir Post#3 --> http://www.forumsig.org/showthread.php/ … =scriptgen
Voilà le script de base -->

Code:

Select * from TablePoints where obj within any (select obj from TableSurfaces where ID=XXXX) into TableXXXX
Commit Table TableXXXX As "c:\BlaBlaBla\TableXXXX.TAB" TYPE NATIVE Charset "WindowsLatin1" Interactive

Voilà un exemple avec des images (c'est mieux qu'un long discours) ---> http://www.forumsig.org/showthread.php/ … =scriptgen
A+
Joël

Dernière modification par Spacejo (Tue 18 February 2014 00:44)

Hors ligne

 

#3 Tue 18 February 2014 14:38

Thomas
Participant actif
Lieu: Rennes
Date d'inscription: 5 Sep 2005
Messages: 71

Re: Sélection itérative

Merci!
J'abuserais si je demandais également un coup de pouce pour construire ma boucle? wink
(pour créer autant de sélections de points que j'ai de surfaces)

Hors ligne

 

#4 Tue 18 February 2014 14:44

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

Re: Sélection itérative

Le but pour toi est de construire un .mbx (outil MI) ou d'enregistrer tes sélections car la démarche n'est pas la même du tout wink
Pour un .mbx -> voilà la bible --> http://www.google.fr/url?sa=t&rct=j … 5280,d.bGQ
Voir page 283
Sinon scriptgen te duplique tes requêtes (pour tout tes ID) et tu colles le tout dans la FMB et tu valides

Dernière modification par Spacejo (Tue 18 February 2014 14:51)

Hors ligne

 

#5 Tue 18 February 2014 15:07

Thomas
Participant actif
Lieu: Rennes
Date d'inscription: 5 Sep 2005
Messages: 71

Re: Sélection itérative

Ok, je regarde tout ça...
Merci!

Hors ligne

 

#6 Tue 18 February 2014 17:54

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

Re: Sélection itérative

Pour un .mbx -> Essaye voir ceci:

Code:

Dim i As Integer
Dim Cmd as string
Dim Cmd2 as string
Dim Chemin as string

Chemin = "C:\TonChemin\"
i = 0

Fetch First From Surfaces 
Do While Not EOT(Surfaxes) 
i = i + 1 
Cmd = "Select * from Points where obj within any (select obj from Surfaces where ID=" & i & ") into" & " Sel" & i
run command Cmd
Cmd2 = "Commit Table" & " Sel" & i & " As " & chr$(34) & Chemin & "Sel" & i & ".TAB" & chr$(34) & " TYPE NATIVE Charset " & chr$(34) & "WindowsLatin1" & chr$(34) & " Interactive"
run command Cmd2
Fetch Next From Surfaces
loop

PS:Celà fonctionne chez moi
A+
Joël

Dernière modification par Spacejo (Tue 18 February 2014 17:55)

Hors ligne

 

#7 Tue 18 February 2014 19:10

Thomas
Participant actif
Lieu: Rennes
Date d'inscription: 5 Sep 2005
Messages: 71

Re: Sélection itérative

Ok, merci.
Au final, j'ai réussi avec scriptgen.
Je ne connaissais pas ; ça risque de servir à nouveau smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB