Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Mon 21 June 2010 19:07
[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
#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
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...
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
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
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
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