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

 

#6 Tue 26 March 2013 14:54

paul.sok
Participant occasionnel
Date d'inscription: 20 Feb 2012
Messages: 20

Re: Calculatrice de valeurs de champs

Bien entendu, voici le bout de code et le message d'erreur


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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

 

Pied de page des forums

Powered by FluxBB