Message posté par : F.Duval
----------------------------------------
-----------------
Sylther écrit :
-----------------
F.Duval écrit :
AlorsLctrl=Lctrl.dataProvider().fieldNameIndex("Alors")
et si j'écris :
AlorsLctrl=Lctrl.dataProvider().fields()[3]
Est ce exactement pareil ? A quelles fonctionnalités et quelles informations donnent accès
l'une et l'autre ?
F.DUVAL
-----------------
C'est la même chose. Dans les deux cas tu instancies un objet de la classe QgsFields
(
https://qgis.org/pyqgis/3.0/core/other/QgsFields.html?highlight=fieldname) .
Bon courage !
S.
-----------------
Bonjour,
Etes vous bien sûr que c'est la même chose ? Ce que je ne comprends pas c'est que
dans un autre script :
Si j'écris :
-----------------
Code :
ZcanaLctrl=Lctrl.dataProvider().fields()[5]
# pour le remplir avec une valeur ...
for objet in Lctrl.getFeatures():
valeur = objet.attributes()[2] - objet.attributes()[4]
Lctrl.changeAttributeValue(objet.id(), ZcanaLctrl, valeur)
-----------------
J'ai ce message : TypeError: QgsVectorLayer.changeAttributeValue(): argument 2 has
unexpected type 'QgsField'
Si j'écris :
-----------------
Code :
ZcanaLctrl=Lctrl.dataProvider().fieldNameIndex("Z cana")
# pour le remplir avec une valeur ...
for objet in Lctrl.getFeatures():
valeur = objet.attributes()[2] - objet.attributes()[4]
# print (objet.attributes()[3])
Lctrl.changeAttributeValue(objet.id(), ZcanaLctrl, valeur)
-----------------
Le script fonctionne et le champ est bien rempli par le résultat de la soustraction.
Pourquoi le premier me renvoi un message d'erreur, d'après vous, si les deux
définitions de ZcanaLctrl sont sensées être les mêmes ?
Cordialement,
F.DUVAL
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=329854#p329854
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net