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 21 June 2010 19:07

simon_g
Participant assidu
Lieu: Paris
Date d'inscription: 4 Oct 2006
Messages: 195
Site web

[mapbasic/MI] echappement champ de type string

Bonjour,

J'ai une petite question de base ... ;-)

depuis un script mapbasic, si je fais

Code:

Run Command "Select * from matable where monchamp = 'A' into Selection"

Le MB compile mais mapinfo grogne

J'essaie

Code:

Run Command "Select * from matable where monchamp = \"A\" into Selection"

Mais mapbasic ne compile pas. Pouvez vous me dire comment faire afin que je ne perde pas trop de temps la-dessus?


merci

Hors ligne

 

#2 Mon 21 June 2010 19:19

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: [mapbasic/MI] echappement champ de type string

Bonjour

essaie

Code:

dim cmd as string
cmd = "Select * from "+ matable +" where "+monchamp+" = "+ A +" into Selection"
Run Command cmd

ou "A" est une variable string

JF

Dernière modification par jean94 (Mon 21 June 2010 19:20)

Hors ligne

 

#3 Mon 21 June 2010 19:48

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

Re: [mapbasic/MI] echappement champ de type string

Salut,

J'aurais écrit ça comme ceci:

Code:

Dim cmd as string
cmd = "Select * from matable where monchamp like " & chr$(34) & A & chr$(34) " into Resultat"
Run Command cmd

PS:Le "into Selection" est superflu car si on ne mets rien, la requète enregistre par défaut dans "Selection"
Le Chr$(34) représente le caracrtère ascii du Guillemet
A+
Joël

Dernière modification par Spacejo (Mon 21 June 2010 20:01)

Hors ligne

 

#4 Mon 21 June 2010 21:45

simon_g
Participant assidu
Lieu: Paris
Date d'inscription: 4 Oct 2006
Messages: 195
Site web

Re: [mapbasic/MI] echappement champ de type string

Merci à vous deux, je teste ça demain!

(Pas très sympa cette syntaxe en tout cas)

Hors ligne

 

#5 Mon 21 June 2010 22:13

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [mapbasic/MI] echappement champ de type string

Bonjour
Peut être plus "sympa", si tant est que ça puisse être une caractéristique d'une syntaxe, il est possible que le code suivant compile et fonctionne:
Select * from matable where monchamp = "A" (matable et monchamp étant des variables)
tout simplement...produira une sélection nommée "selection" qui deviendra "Qeryn" dès que vous y toucherez
(pour éviter ça ajoutez Into bidule et la sélection sera et restera nommée "bidule" !)

Hors ligne

 

#6 Tue 22 June 2010 09:45

simon_g
Participant assidu
Lieu: Paris
Date d'inscription: 4 Oct 2006
Messages: 195
Site web

Re: [mapbasic/MI] echappement champ de type string

Code:

Dim cmd as string
cmd = "Select * from matable where monchamp like " & chr$(34) & "A" & chr$(34) " into Resultat"
Run Command cmd

Spacejo > il manquait juste des doubles quotes entre le A (puisqu'il s'agit d'une valeur et non pas d'une variable)

Maurice > La sympathie que je peux donner à mapbasic (ou à un autre langage) tient plus du jugement que de la caractéristique syntaxique. Complétement subjectif, donc! et relative à ma connaissance d'autres langages de programmation.

Merci à vous

Dernière modification par simon_g (Tue 22 June 2010 09:45)

Hors ligne

 

#7 Tue 22 June 2010 10:09

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [mapbasic/MI] echappement champ de type string

@simon_g: j'avais bien compris... smile
Au fait, que donne la simple ligne Select * from matable where monchamp = "A" (Into bidule), sans cmd = ni Run Command cmd
Ça passe ou ça passe pas ??

Hors ligne

 

#8 Tue 22 June 2010 10:43

simon_g
Participant assidu
Lieu: Paris
Date d'inscription: 4 Oct 2006
Messages: 195
Site web

Re: [mapbasic/MI] echappement champ de type string

Maurice > en effet ça passe! mais, je ne vois pas les enregistrements sélectionnés lorsque j'affiche la table sur laquelle je travaille - à la différence de Run command

Encore merci

Hors ligne

 

#9 Tue 22 June 2010 11:38

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [mapbasic/MI] echappement champ de type string

Un simple select * from bidule devrait faire l'affaire...

Hors ligne

 

#10 Fri 25 June 2010 10:52

simon_g
Participant assidu
Lieu: Paris
Date d'inscription: 4 Oct 2006
Messages: 195
Site web

Re: [mapbasic/MI] echappement champ de type string

Je profite de ce topic pour poser une question technique :

lorsque que j'essaie de faire une requête update depuis la fenêtre mapbasic j'obtiens :

update matable  set name = "N23" where name = "N13"


mapinfo me renvoie le message "Cannot perform this operation on field name"


En revanche, si ma clause where est sur rowid ca fonctionne.  La première requête est pourtant standard! Peut-on m'expliquer cette restriction?

merci

Dernière modification par simon_g (Fri 25 June 2010 10:52)

Hors ligne

 

#11 Fri 25 June 2010 11:09

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

Re: [mapbasic/MI] echappement champ de type string

Salut,

Code:

update matable  set name = "N23" where name = "N13"

Tu peux peut être faire:

Code:

Select name from matable where name like "N13" into Resultat
update Resultat Set name = "N23"

A+
Joël

Hors ligne

 

#12 Fri 25 June 2010 11:26

simon_g
Participant assidu
Lieu: Paris
Date d'inscription: 4 Oct 2006
Messages: 195
Site web

Re: [mapbasic/MI] echappement champ de type string

Merci Spacejo pour l'alternative. Mais j'aimerai bien comprendre la nécessité de fonctionner en 2 temps.... Encore une fois, ca ne rend pas mapbasic très sympathique ;-)

Hors ligne

 

Pied de page des forums

Powered by FluxBB