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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 30 April 2010 19:41

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

[Map Basic] Incompatibilité avec le code source d'un workspace

Bonjour à tous,

Je suis en train de compiler un code Mapbasic qui créé des workspace à partir de nouvelles données. À ma grande surprise une ligne de code utilisé dans un worspace entraine une erruer lors de la compilation avec MapBasic.

voici le code:

Code:

shade 14 with EMISSIONS/SOUMISSIONS*100 ranges apply all use all Brush (2,3253076,16777215) 
  0: 33 Brush (2,14096668,16777215) Pen (2,2,16777215) ,
  33: 66 Brush (2,10934634,16777215) Pen (2,2,16777215) ,
  66: 100 Brush (2,3253076,16777215) Pen (2,2,16777215) 
  default Brush (2,16777215,16777215) Pen (1,2,0) 
  # use 0 round 1 inflect on Brush (2,16776960,16777215) at 2 by 0 color 1 #

Bref, ce code est utiliser dans un workspace pour établir les bornes d'une carte thématique. La compilation s'arrête au dièse "#" et émet l'erreur "unrecognized command"

Quelqu'un connait la cause de l'erreur? ou a quoi sert commande entre les 2 # ? ou comment éviter une erreur de compilation?

Je sais que j'abuse du forum mais je suis bloqué et ne trouve pas de solutions

Merci
JF

Hors ligne

 

#2 Fri 30 April 2010 21:04

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

Bonjour
Il faut passer par une commande interprétée:

Code:

dim cmd as string
cmd="shade 14 with "+EMISSIONS+"/"+SOUMISSIONS+"*100 ranges apply all use all Brush (2,3253076,16777215) 
  0: 33 Brush (2,14096668,16777215) Pen (2,2,16777215) ,
  33: 66 Brush (2,10934634,16777215) Pen (2,2,16777215) ,
  66: 100 Brush (2,3253076,16777215) Pen (2,2,16777215) 
  default Brush (2,16777215,16777215) Pen (1,2,0) 
  # use 0 round 1 inflect on Brush (2,16776960,16777215) at 2 by 0 color 1 #"
Run Command cmd

Ci dessus je suppose que EMISSIONS et SOUMISSIONS sont des variables...et je conserve les retours à la igne pour la lisibilité mais a priori il faut tout mettre sur la même ligne ou introduire des chr$(13)...

Hors ligne

 

#3 Fri 30 April 2010 21:46

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

En fait c'est un carte thématique utilisant une expression, l'expression étant le champ emissions divisé par le champ soumission multiplié par 100..pour avoir une ratio.

Donc si j'ai bien comprit il faut insérer une commande en plein milieu de mon code pour pouvoir le compiler, je trouve sa bizzard qu'il y a des diffrentiation entre le scripts des Workspace et le language de Mapbasic

Merci! je l'essaie et redonne des nouvelles lundi

JF

Hors ligne

 

#4 Mon 03 May 2010 17:41

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

Bonjour,

Finalement passer par des commande ne fonctionne pas dans mon cas, car les bornes sont des variables définit par un edittext d'un formulaire. Je ne comprends toujours pas pourquoi mapbasic ne prend pas le charactère "#" alors que le workspace le prend.

Quelqun à une autre solution

p.s. dans mon code les bornes sont les suivantes
BorneA1
BorneA2
BorneB1
BorneB2
BorneC1
BorneC2

Merci Jf

Hors ligne

 

#5 Mon 03 May 2010 17:59

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

Salut,

le # est interprété par Mapbasic mais pas de cette façon.
As tu regardé là dedans --> http://www.i-signum.com/Telechargement.html
--> Reference guide
A+
Joël

Hors ligne

 

#6 Mon 03 May 2010 19:10

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

Bonsoir
Je le redis: il FAUT passer par une commande interprétée, en mettant tout ce qui est variable en dehors des guillemets
Il est prudent de faire un Print cmd avant le Run Command cmd, pour vérifier qu'on ne s'est pas trompé
Noter aussi que chr$(34) = guillemets ...

ps: chaque langage est "bizarre" mais on ne peut qu'en respecter la syntaxe !

Hors ligne

 

#7 Mon 03 May 2010 21:29

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

Un champ est-il considérer comme une variable le cas de mon emission et soumission qui sont des champ de colonnes?

Merci

JF

Hors ligne

 

#8 Mon 03 May 2010 22:48

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

I faut voir en détail comment le nom du champ est utilisé, mais il y a bien des chances que ce soit une variable...et il ne faut pas oublier que pour les noms de colonnes, il faut passer par des variables définies comme Alias

Hors ligne

 

#9 Tue 04 May 2010 20:34

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

Je suis rendu ici mais je ne crois pas être sur la bonne piste

Code:

Open Table "H:\intranet\Ventes\Ratio_vente_soum\par_produit\2010\mars\Auto_autres_produits_mun.TAB" Interactive as table
Map From table

dim cmd as string
dim borneA1 as string
dim borneA2 as string
dim borneB1 as string
dim borneB2 as string
dim borneC1 as string
dim borneC2 as string
dim numerateur as string
dim denominateur as string

numerateur = "table.emission"
denominateur = "table.soumission"


borneA1 = "0" 
borneA2 = "33"
borneB1 = "33"
borneB2 = "66" 
borneC1 = "66"    
borneC2 = "100"


cmd="shade 1 with "numerateur"/"denominateur"*100 ranges apply all use all Brush (2,3253076,16777215)" 
  borneA1":" borneA2 "Brush (2,14096668,16777215) Pen (2,2,16777215) ,"
  borneB1":" borneB2 "Brush (2,10934634,16777215) Pen (2,2,16777215) ,"
  borneC1":" borneC2 "Brush (2,3253076,16777215) Pen (2,2,16777215) 
  default Brush (2,16777215,16777215) Pen (1,2,0) 
  # use 0 round 1 inflect on Brush (2,16776960,16777215) at 2 by 0 color 1 #"
Run Command cmd

Quelqu'un aurait de l'info supplémentaire que le MapBasic Reference Guide pour les commandes?

Merci

JF

Hors ligne

 

#10 Tue 04 May 2010 22:48

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

Sans rentrer dans les détails: éviter "table" comme nom de la table, introduisez un print pour vérifier (en comparant avec ce qui s'ecrit dans un wor qui marche), donnez la bonne définition aux variables (string ou smallint, etc...) suivant les cas

Code:

Open Table "H:\intranet\Ventes\Ratio_vente_soum\par_produit\2010\mars\Auto_autres_produits_mun.TAB" Interactive as bidule
Map From bidule

dim cmd as string
dim borneA1 as smallint
dim borneA2 as smallint
dim borneB1 as smallint
dim borneB2 as smallint
dim borneC1 as smallint
dim borneC2 as smallint
dim numerateur as string
dim denominateur as string

numerateur = "emission"
denominateur = "soumission"
borneA1 = 0
borneA2 = 33
borneB1 = 33
borneB2 = 66 
borneC1 = 66    
borneC2 = 100

cmd="shade bidule with ("+numerateur+"/"+denominateur+")*100 ranges apply all use all Brush (2,3253076,16777215) "+chr$(10)+
borneA1+":"+borneA2+"Brush (2,14096668,16777215) Pen (2,2,16777215) , "+chr$(10)+
borneB1+":"+borneB2+ "Brush (2,10934634,16777215) Pen (2,2,16777215) , "+chr$(10)+
borneC1+":" +borneC2+ "Brush (2,3253076,16777215) Pen (2,2,16777215) "+chr$(10)+
"default Brush (2,16777215,16777215) Pen (1,2,0) "+chr$(10)+
"# use 0 round 1 inflect on Brush (2,16776960,16777215) at 2 by 0 color 1 #"

print cmd
run command cmd

Hors ligne

 

#11 Wed 05 May 2010 14:37

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

Merci Maurice, sa fonctionne,

Ou peut on apprendre à utiliser les comande et quand les utilisers, je m'y intésesse mais je ne trouve pas d'information pertinante sur le web

JF

Hors ligne

 

#12 Wed 05 May 2010 18:52

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

Re: [Map Basic] Incompatibilité avec le code source d'un workspace

Bien content...
Pour les ressources, regardez ce qui est épinglé en tête du forum
Je ne peux en dire beaucoup plus, m'étant formé sur le tas...aidé par Georezo smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB