#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?
(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
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
Hors ligne