Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 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 wink.
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 wink
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 smile 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 smile

Merci encore

Hors ligne

 

Pied de page des forums

Powered by FluxBB