#1 Tue 13 September 2011 14:18
- shoei
- Participant occasionnel
- Lieu: Rouen
- Date d'inscription: 22 Oct 2007
- Messages: 23
[MapBasic] Découpage d'une chaine de caractère
Bonjour,
Après plusieurs recherche je ne trouve pas ma réponse donc je me tourne vers le forum.
Ci-dessous vous pouvez voir mon code qui me permet d'afficher un explorateur Windows pour que je puisse ouvrir une table MapInfo puis par la suite une Box qui me demande de saisir un identifiant qui par la suite me sert pour ma requête SQL en dessous.
Code:
'==========Déclaration des variables======================== Dim ID_Reponse as string Dim ma_table as string Dim nom_table as string '==============Permet d'ouvrir une table======================== ma_table = FileOpENDLG ("R:\SIG\Donnees_Vectorielles\","","tab","OUVRIR TABLE") '==============Extraction du nom de table pour la requête ============= 'Bout de code manquant '==============Exécute l'instruction si la table est ouverte============== if ma_table <> "" then open table nom_table Dialog Title "Indiquer l'ID" position 600,300 Width 160 Height 60 Control EditText Width 150 Into ID_Reponse Control OKButton Control CancelButton Select * from nom_table where ID = "ID_Reponse" into Selection Browse * from Selection Map from Selection end if
Cependant je n'arrive pas à faire une étape.
Quand mon explorateur me demande de sélectionner une table ma varaible ma_table prend la valeur suivant "R:\SIG\Donnees_Vectorielles\NomdeMaTable.TAB".
Ainsi ce que je souhaiterais c'est pouvoir extraire de cette variable ce qu'il y a après le dernier \ c'est à dire "NomdeMaTable.TAB et mettre ça dans la variable nom_table pour que je puisse l'utiliser dans ma requête SQL.
Pour extraire ce morceau de chaîne j'avais pensais à la fonction split() mais celle-ci ne fonctionne pas.
Avez vous une solution ?
Je vous remercie pour vos réponse.
Hors ligne
#2 Tue 13 September 2011 15:52
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] Découpage d'une chaine de caractère
Salut,
Pour extraire ta chaine de caratères il te faut utiliser -->
InStr( position, string, substring )
pour connaître la position de ton dernier "\" et len(tachaine) pour connaître la longueur de la chaine.
Ainsi Ta_Chaine à extraire est égale à
Right$(TaChaine,(Len(TaChaine)-Instr(8,Tachaine,"\")))
A essayer
PS:Le "8" dans l'instruction est la position de départ de la recherche (pour éviter les 2 premiers "\") en sachant que Instr travaille de la gauche vers la droite .
Par contre il me semble qu'il existe InstrRev qui va de la droite vers la gauche mais je ne sais pas si c'est valable dans mapbasic.
A+
Joël
Dernière modification par Spacejo (Wed 18 September 2013 23:58)
Hors ligne
#3 Tue 13 September 2011 16:33
- shoei
- Participant occasionnel
- Lieu: Rouen
- Date d'inscription: 22 Oct 2007
- Messages: 23
Re: [MapBasic] Découpage d'une chaine de caractère
Merci pour ta réponse je vais tester çà et je te tiens informé.
Merci
Charles
Hors ligne
#4 Tue 13 September 2011 19:21
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] Découpage d'une chaine de caractère
j'ai testé celà fonctionne
-->
Code:
Right$(TaChaine,(Len(TaChaine)-Instr(8,Tachaine,"\")))
PS:Pas de trace de InstrRev dans MapBasic, celà aurait été plus simple
A+
Joël
Dernière modification par Spacejo (Wed 18 September 2013 23:57)
Hors ligne
#5 Thu 15 September 2011 15:16
- shoei
- Participant occasionnel
- Lieu: Rouen
- Date d'inscription: 22 Oct 2007
- Messages: 23
Re: [MapBasic] Découpage d'une chaine de caractère
Moi aussi j'ai testé et ça marche merci C'est dommage qu'il n'existe pas une fonction Instr qui marche de droite à gauche car si la table se trouve dans un dossier le morceau de code ne fonctionne plus
Merci encore
Hors ligne