#1 Tue 26 March 2013 14:13
- paul.sok
- Participant occasionnel
- Date d'inscription: 20 Feb 2012
- Messages: 20
Calculatrice de valeurs de champs
Bonjour,
J'ai une classe d'entités avec deux champs: VEHICLEID de type texte et GROUPE de type texte aussi. Le champ GROUPE est vide et je souhaite le remplir en fonction des valeurs de VEHICLEID.
J'ouvre donc la table attributaire et effectue un clic droit-"Calculer les valeurs".
J'utilise l'option VB, n'ayant aucune connaissance en python.
J'affiche le bloc de code et dans "Code de script Pre-Logic", je mets: [VEHICLEID]="1"
Puis dans "GROUPE=", je mets "Fedex".
Le calcul s'effectue mais lorsque j'ouvre la table, la requête a rempli toutes les valeurs du champ GROUPE par "Fedex"...
Je n'arrive pas à ne lui faire appliquer les valeurs que pour le cas mentionné.
J'ai aussi essayé avec la condition IF mais à ce moment la calculatrice échoue.
Merci d'avance
Hors ligne
#2 Tue 26 March 2013 14:22
- anne13
- Participant actif
- Lieu: Villeurbanne
- Date d'inscription: 12 May 2009
- Messages: 71
Re: Calculatrice de valeurs de champs
Bonjour, avant de faire "calculer les valeurs", vous pouvez sélectionner les lignes qui ont la valeur 1 dans le champ VEHICLEID (sélection/sélectionner par attribut/indiquer [VEHICLEID]="1") puis ensuite faire le calcul GROUPE="Fedex" en cochant la case "calculer les enregistrements sélectionnés uniquement". Vous n'avez alors plus besoin d'être en mode "Avancé" dans la calculatrice.
Bien sur, il vous faudra répéter ces 2 opérations pour toutes vos valeurs de VEHICLEID.
Bonne journée et bons tests.
Anne
Anne B, Ville de Villeurbanne
Hors ligne
#3 Tue 26 March 2013 14:24
- paul.sok
- Participant occasionnel
- Date d'inscription: 20 Feb 2012
- Messages: 20
Re: Calculatrice de valeurs de champs
Merci Anne pour cette solution, seulement existe-t-il un moyen de faire ça automatiquement?
En effet, j'ai 33 valeurs à calculer représentant 4 millions de point...
Hors ligne
#4 Tue 26 March 2013 14:42
- anne13
- Participant actif
- Lieu: Villeurbanne
- Date d'inscription: 12 May 2009
- Messages: 71
Re: Calculatrice de valeurs de champs
peux tu envoyer le bout de code que tu as essayé avec If? Peut etre qu'il est améliorable?
J'ai pensé aussi à la fonction replace... (voir l'aide arcgis, tables et infos attributaires/création de tables et gestion des infos attrib/exécution de calculs de champs)
Sinon, pour faire les 33 valeurs avec la première méthode, il faudra t'armer de courage!!!!
: )
Anne B, Ville de Villeurbanne
Hors ligne
#5 Tue 26 March 2013 14:52
- anne13
- Participant actif
- Lieu: Villeurbanne
- Date d'inscription: 12 May 2009
- Messages: 71
Re: Calculatrice de valeurs de champs
à essayer
Dans la partie code :
Dim monresult as string
if [num_rue] = "1" Then
monresult = "Fedex"
elseif [num_rue] = "2" Then
monresult = "TNT"
else monresult = "rien"
end if
Puis dans la partie GROUPE=
indiquer monresult sans guillemets
Anne B, Ville de Villeurbanne
Hors ligne
#7 Tue 26 March 2013 14:58
- anne13
- Participant actif
- Lieu: Villeurbanne
- Date d'inscription: 12 May 2009
- Messages: 71
Re: Calculatrice de valeurs de champs
désolé, j'ai cliqué trop vite, en fait j'ai pris un code qui fonctionne chez moi... il faut bien sur remplacer num_rue par VEHICLEID et si ca fonctionne avec 2 valeurs mettre autant de elseif que d'autres valeurs à remplir.
Dim monresult as string
if [VEHICLEID] = "1" Then
monresult = "Fedex"
elseif [VEHICLEID] = "2" Then
monresult = "TNT"
else monresult = "rien"
end if
Puis dans la partie GROUPE=
indiquer monresult sans guillemets
Il manquait un petit morceau dans le code en pièce jointe, il faut passer par une variable que j'ai appelé monresult mais qui peut s'appeler autrement. Je pense que ca devrait fonctionner avec celui indiqué
Bons tests!
Anne B, Ville de Villeurbanne
Hors ligne
#8 Tue 26 March 2013 15:07
- paul.sok
- Participant occasionnel
- Date d'inscription: 20 Feb 2012
- Messages: 20
Re: Calculatrice de valeurs de champs
Merci énormément anne13, je vais essayer tout ça et je reviendrai pour le fin mot de l'histoire!
Bonne journée
Hors ligne
#9 Tue 26 March 2013 16:45
- paul.sok
- Participant occasionnel
- Date d'inscription: 20 Feb 2012
- Messages: 20
Re: Calculatrice de valeurs de champs
Malheureusement, et bien que j'ai appliqué scrupuleusement le code donné, j'ai une erreur m'indiquant une défaillance:
'ERROR 999999' et 'Identificateur attendu'
Point qui peut être important, je travaille avec la version 10.
Hors ligne
#10 Tue 26 March 2013 19:23
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Calculatrice de valeurs de champs
Salut à vous,
Personnellement j'ai toujours eu des problêmes avec le "Else".
Une alternative:
Code:
Dim monresult as string if [VEHICLEID] like "1" Then monresult like "Fedex" elseif [VEHICLEID] like "2" Then monresult like "TNT" elseif [VEHICLEID] not like "1" and [VEHICLEID] not like "2" then monresult like "Aucun" end if End
A essayer
PS:Dans ton code --> if [VEHICLEID] like "1" Then monresult like "Fedex"
Aprés le "then" l'instruction ne doit pas être sur la même ligne:
Code:
if [VEHICLEID] like "1" Then monresult like "Fedex"
A+
Joël
Dernière modification par Spacejo (Tue 26 March 2013 19:49)
Hors ligne