#1 Mon 16 September 2013 10:43
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
ArcMap 10.0 - Casse
Bonjour à tous,
J'essaie de convertir la valeur d'un champ saisi en majuscule dans la table, pour l'affichage de mes étiquettes.
J'utilise ce code trouvé sur l'aide Esri sensé répondre à ma question dans lequel j'ai remplacé le nom du champ [NAME] par le nom de mon champ :
function FindLabel ( [NAME] )
{
var str = [NAME];
var iLen = String(str).length;
var upper = (str.substring(0,1)).toUpperCase();
var lower = (str.substring(1, iLen)).toLowerCase()
return upper + lower;
}
Seulement ArcMap me répond qu'il y a une erreur, sans autre précision.
Quelqu'un aurait-il une idée svp ?
Merci par avance.
Hors ligne
#2 Mon 16 September 2013 11:00
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: ArcMap 10.0 - Casse
Salut,
Ton code est en Jscript
As tu essayé en Vbscript:
Code:
Function FindLabel ( [NAME] ) FindLabel = UCase(Left([NAME],1)) & LCase(Right([NAME], Len([NAME]) -1)) End Function
A+
Joël
Hors ligne
#3 Mon 16 September 2013 11:03
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Oui j'ai essayé les 2 mais sans succès.
Hors ligne
#4 Mon 16 September 2013 11:21
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: ArcMap 10.0 - Casse
Es tu passé par la calculette esri pour modifier ton champ (si ton cahier des charges te permets de le faire)?
PS:Je demande à tout hasard --> Y'a t'il des cases à cocher avec Jscript ou Vbscript?
Auquel cas --> le code que tu colles est 'il en adéquation avec le language spécifié?
Dernière modification par Spacejo (Mon 16 September 2013 11:25)
Hors ligne
#5 Mon 16 September 2013 11:30
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Oui j'ai bien vérifié que la case "Analyseur" soit sur la bonne occurence selon le langage utilisé mais cela ne fonctionne pas.
Mais je ne peux pas modifier le contenu du champ.
Hors ligne
#6 Mon 16 September 2013 11:32
Re: ArcMap 10.0 - Casse
Bonjour,
Est-ce que cette procédure (en anglais) peut aider? http://support.esri.com/en/knowledgebas … tail/38592
C'est du Python mais ça peut donner des idées
EDIT :
Autre idée, à mettre dans le champ étiquette : [NAME].lower()
(ne pas oublier de sélectionner Python)
Réf : http://docs.python.org/3.0/library/stdtypes.html
Dernière modification par Robin (Mon 16 September 2013 12:11)
Hors ligne
#7 Mon 16 September 2013 11:33
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: ArcMap 10.0 - Casse
Le message d'erreur ne spécifie pas un code erreur?
Hors ligne
#8 Mon 16 September 2013 12:01
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: ArcMap 10.0 - Casse
Il faut cocher "Avancé" pour pouvoir interpréter une fonction. Les codes Jscript et Vbscript fonctionnent très bien.
Hors ligne
#9 Mon 16 September 2013 12:10
Re: ArcMap 10.0 - Casse
Pour complément : les code [NAME].lower() ou [NAME].title() ne nécessitent pas de se mettre en mode avancé.
Comme le dit dominique, c'est à activer uniquement quand il y a des fonctions à interpréter.
Par contre, il faut bien spécifier quel langage est utilisé dans les deux cas.
Hors ligne
#10 Mon 16 September 2013 13:37
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Devant rendre mes travaux aujourd'hui, je contourne ce problème qui ne concerne que quelques étiquettes, en le traitant à la main.
J'y renviendrai ultérieurement et vous rendrai compte de mon avancée.
Merci à tous.
Hors ligne
#11 Tue 17 September 2013 10:02
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
J'ai re-testé ce matin mon affichage d'étiquettes.
Pas mieux, j'obtiens toujours le message "L'expression contient une erreur. Modifiez l'expression et recommencez".
Voici ce que je copie en VB :
Function FindLabel ( [NomStructure] ) FindLabel = UCase(Left([NomStructure],1)) & LCase(Right([NomStructure], Len([NomStructure]) -1)) End Function
Ou bien c'est beaucoup plus complexe que je ne le pensais, ou bien c'est d'une telle évidence que je passe à côté.
Hors ligne
#12 Tue 17 September 2013 10:18
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: ArcMap 10.0 - Casse
Salut,
Essaye uniquement en minuscule:
Code:
Function FindLabel ( [NomStructure] ) FindLabel = LCase([NomStructure]) End Function
A+
Joël
Dernière modification par Spacejo (Tue 17 September 2013 10:20)
Hors ligne
#13 Tue 17 September 2013 10:28
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Pas mieux...
Hors ligne
#14 Tue 17 September 2013 10:32
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: ArcMap 10.0 - Casse
Bizarre!!!
Avant que tu colles ton code dans la fenêtre ---> est 'elle vide (j'ai déjà eu la triste expérience)
Faire un "Ctrl A" dans la fenêtre puis un "Suppr"
Puis tu colles ton code
Hors ligne
#15 Tue 17 September 2013 10:51
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Avant de coller le code, il y a juste le nom du champ [NomStructure] puisque c'est sur lui que se fait l'affichage.
Je suis obligé de supprimer les retours à la ligne car ils ne sont pas acceptés, et ensuite j'ai le message précédemment cité. Dans le meilleur des cas, j'ai un message disant qu'aucune expression n'a été trouvée si le nom du champ n'est pas correct. Mais quand il l'est, j'ai le message d'erreur.
Dernière modification par chanteclair (Tue 17 September 2013 10:54)
Hors ligne
#16 Tue 17 September 2013 10:57
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: ArcMap 10.0 - Casse
Excuse la question mais tu as bien coché "avancé" et tu es bien dans la fenêtre "Expression"?
Hors ligne
#17 Tue 17 September 2013 11:03
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Oui c'est bien coché.
J'ai fait un test (par lequel j'aurais dû commencer, j'aurais gagné du temps)avec un autre champ et là, ça fonctionne ! Je ne sais pas ce que peut avoir celui sur lequel je veux réaliser l'affichage ! Si ce n'est que ça, je devrais pouvoir trouver une solution.
Merci à tous de votre aide et de votre patience .
Bonne journée.
Hors ligne
#18 Tue 17 September 2013 11:27
Re: ArcMap 10.0 - Casse
Bonjour,
Sans vouloir être insistant, la solution que je propose ne convient pas ?
Ca évite de voir définir une fonction, notamment...
Hors ligne
#19 Tue 17 September 2013 11:52
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Je l'ai testé aussi mais le calculateur plante sans arriver au bout.
J'avais créé un champ supplémentaire comme l'indique la procédure pour le remplir avec le résultat mais je n'ai pas pu le remplir.
Hors ligne
#20 Tue 17 September 2013 12:04
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: ArcMap 10.0 - Casse
Avec la calculette --> faire une copie de ton champ.
Puis sur cette copie --> utilise "NomPropre.zip" dans ---> http://ressources.esrifrance.fr/form_ca … ract.aspx#
Dernière modification par Spacejo (Tue 17 September 2013 12:06)
Hors ligne
#21 Tue 17 September 2013 13:10
Re: ArcMap 10.0 - Casse
Je l'ai testé aussi mais le calculateur plante sans arriver au bout.
Oui, ça c'est la première solution, qui consiste à faire une modif en dur. La seconde consiste juste à changer [NAME] dans le champ Expression de l'étiquette pour le remplacer par [NAME].lower() (+sélectionner Python). Aucune modification en dur, ça ne modifie que l'affichage de l'étiquette.
Hors ligne
#22 Tue 17 September 2013 13:37
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Sauf que Robin, je n'ai le choix, dans le champ Expression qu'entre VB et Jscript, pas de python sauf erreur de ma part.
Hors ligne
#23 Tue 17 September 2013 13:42
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Au final ça marche en Vb et sur la copie du champ d'origine mais pas sur l'original.
Peu importe, le résultat est là.
Merci à tous.
Hors ligne
#24 Tue 17 September 2013 14:57
Re: ArcMap 10.0 - Casse
Sauf que Robin, je n'ai le choix, dans le champ Expression qu'entre VB et Jscript, pas de python sauf erreur de ma part.
Ah, flûte. Ca ne doit marcher qu'à partir de la 10.1..mes excuses dans ce cas, j'ignorais
Hors ligne
#25 Wed 18 September 2013 12:41
- supernul
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 103
Re: ArcMap 10.0 - Casse
Bonjour,
vous ne disposez pas du choix entre python et VBscript dans la calculatrice de valeur de champs dans la version 10.0 ?
Hors ligne
#26 Wed 18 September 2013 13:50
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 723
Re: ArcMap 10.0 - Casse
Dans la calculatrice peut être mais je n'ai pas regardé. Mais là, les manip se situent dans les Propriétés de la couche/Etiquettes.
Hors ligne
#27 Wed 18 September 2013 16:32
- supernul
- Participant actif
- Date d'inscription: 31 Jan 2010
- Messages: 103
Re: ArcMap 10.0 - Casse
Au temps pour moi, j'ai zappé cette partie. En effet dans les propriétés seuls JS et VBS sont présents dans la 10.0
Hors ligne