guyguy a écrit :
On 27 juin, 13:22, Alain BARTHE <alain.barthe...@free.fr> wrote:
guyguy a écrit :
Bonjour
j'ai un problème avec mon programme
je cherche a additionner les valeur d'un champ qui est recupérer sous
forme de liste de tuple partant de sa valeur initiale
Voici mon code
crt_obj =
self.pool.get('production.contrat').browse(cr,uid,vals['numcontrat'])
id_contrat = (str(crt_obj)[-2:-1])
coa = crt_obj.numcontrat
sit = crt_obj.situation
type_sous = crt_obj.type_souscri
cr.execute("SELECT tx_part FROM production_coassurance WHERE
numcontrat=%s AND situation=%s AND type_souscri=%s" ,[id_contrat, sit,
type_sous])
res = []
for val in cr.fetchall():
res.append(val)
if res:
tx_in = res[0][0] + val['tx_part']
NB: Chose étrange est que le premier enregistrement passe, mais ma
liste est vide et le second donne une erreur
TypeError: tx_in = res[0][0] + val['tx_part']
tuple indices must be integers
SVP si quelqu'un à une idée
Je ne comprends pas ton algo, mais si val est un tuple, comme l'indique
le message, pour obtenir le premier element, tu dois utiliser val [0] et
non val ['tx_part']
Si tu veux la somme de res , utilise sum (res)
val n'est pas le tuple,
Si.
val parcour la liste de tuple qui est renvoyer
par fetchall()
Non. val est le nom auxquels sont associés, successivement, les tuples compris dans la liste retournée par fetchall(). Une fois sorti de la boucle (par ailleur inutile), ce nom reste lié au dernier tuple de la liste. IOW :
for val in cr.fetchall():
res.append(val)
assert val is res[-1]