Bonjour
j'ai un probl=E8me avec mon programme
je cherche a additionner les valeur d'un champ qui est recup=E9rer sous
forme de liste de tuple partant de sa valeur initiale
Voici mon code
crt_obj =3D
self.pool.get('production.contrat').browse(cr,uid,vals['numcontrat'])
id_contrat =3D (str(crt_obj)[-2:-1])
coa =3D crt_obj.numcontrat
sit =3D crt_obj.situation
type_sous =3D crt_obj.type_souscri
cr.execute("SELECT tx_part FROM production_coassurance WHERE
numcontrat=3D%s AND situation=3D%s AND type_souscri=3D%s" ,[id_contrat, sit=
,
type_sous])
res =3D []
for val in cr.fetchall():
res.append(val)
if res:
tx_in =3D res[0][0] + val['tx_part']
NB: Chose =E9trange est que le premier enregistrement passe, mais ma
liste est vide et le second donne une erreur
TypeError: tx_in =3D res[0][0] + val['tx_part']
tuple indices must be integers
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alain BARTHE
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)
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']
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)
guyguy
On 27 juin, 13:22, Alain BARTHE 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
> 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, val parcour la liste de tuple qui est renvoyer par fetchall() tx_part est champ de saisie je saisie des valeurs une à une dans tx_part et avoir la somme de toute ces valeurs ainsi que la valeure initial de tx_part
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
> 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, val parcour la liste de tuple qui est renvoyer
par fetchall()
tx_part est champ de saisie
je saisie des valeurs une à une dans tx_part et avoir la somme de
toute ces valeurs ainsi que la valeure initial de tx_part
> 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
> 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, val parcour la liste de tuple qui est renvoyer par fetchall() tx_part est champ de saisie je saisie des valeurs une à une dans tx_part et avoir la somme de toute ces valeurs ainsi que la valeure initial de tx_part
Bruno Desthuilliers
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)
res = cr.fetchall()
if res: tx_in = res[0][0] + val['tx_part']
ici (du moins avec ton algo), val est le dernier tuple de la liste retournée par cr.fetchall().
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
cqfd.
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)
res = cr.fetchall()
if res:
tx_in = res[0][0] + val['tx_part']
ici (du moins avec ton algo), val est le dernier tuple de la liste
retournée par cr.fetchall().
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
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)
res = cr.fetchall()
if res: tx_in = res[0][0] + val['tx_part']
ici (du moins avec ton algo), val est le dernier tuple de la liste retournée par cr.fetchall().
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
cqfd.
Bruno Desthuilliers
guyguy a écrit :
On 27 juin, 13:22, Alain BARTHE 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]
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]
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]
guyguy
On 27 juin, 15:06, Bruno Desthuilliers <bruno. wrote:
guyguy a écrit :
> On 27 juin, 13:22, Alain BARTHE 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 so us >>> 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_coassuranc e WHERE >>> numcontrat=%s AND situation=%s AND type_souscri=%s" ,[id_contra t, 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'indiqu e >> 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]
Merci pour le bout de code elle marche et il me donne cette reponse [(1,), (1,)] mais je veux la valeur de ce resultat dans une variable pour me permet de faire une comparaison de valeur merci pour ce bout de code
On 27 juin, 15:06, Bruno Desthuilliers <bruno.
42.desthuilli...@websiteburo.invalid> wrote:
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 so us
>>> 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_coassuranc e WHERE
>>> numcontrat=%s AND situation=%s AND type_souscri=%s" ,[id_contra t, 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'indiqu e
>> 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]
Merci pour le bout de code elle marche et il me donne cette reponse
[(1,), (1,)]
mais je veux la valeur de ce resultat dans une variable pour me permet
de faire une comparaison de valeur
merci pour ce bout de code
On 27 juin, 15:06, Bruno Desthuilliers <bruno. wrote:
guyguy a écrit :
> On 27 juin, 13:22, Alain BARTHE 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 so us >>> 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_coassuranc e WHERE >>> numcontrat=%s AND situation=%s AND type_souscri=%s" ,[id_contra t, 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'indiqu e >> 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]
Merci pour le bout de code elle marche et il me donne cette reponse [(1,), (1,)] mais je veux la valeur de ce resultat dans une variable pour me permet de faire une comparaison de valeur merci pour ce bout de code
Alain BARTHE
Bruno Desthuilliers a écrit :
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)
res = cr.fetchall()
if res: tx_in = res[0][0] + val['tx_part']
ici (du moins avec ton algo), val est le dernier tuple de la liste retournée par cr.fetchall().
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
cqfd.
C'est pas clair cette histoire...
Bruno Desthuilliers a écrit :
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)
res = cr.fetchall()
if res:
tx_in = res[0][0] + val['tx_part']
ici (du moins avec ton algo), val est le dernier tuple de la liste
retournée par cr.fetchall().
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
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)
res = cr.fetchall()
if res: tx_in = res[0][0] + val['tx_part']
ici (du moins avec ton algo), val est le dernier tuple de la liste retournée par cr.fetchall().
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
cqfd.
C'est pas clair cette histoire...
guyguy
On 27 juin, 21:09, Alain BARTHE wrote:
Bruno Desthuilliers a écrit :
> 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
>> 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)
> res = cr.fetchall()
>> if res: >> tx_in = res[0][0] + val['tx_part']
> ici (du moins avec ton algo), val est le dernier tuple de la liste > retournée par cr.fetchall().
>> 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
> cqfd.
C'est pas clair cette histoire...
Bruno voici l'ensemble du 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 txtp 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) vals['txtp'] = res[0][0] + vals['txtp']
et sa me donne le resultat voulu(c'est à dire après chaque enregistrement il me donne la somme de ('txtp')
On 27 juin, 21:09, Alain BARTHE <alain.barthe...@free.fr> wrote:
Bruno Desthuilliers a écrit :
> 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
>> 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)
> res = cr.fetchall()
>> if res:
>> tx_in = res[0][0] + val['tx_part']
> ici (du moins avec ton algo), val est le dernier tuple de la liste
> retournée par cr.fetchall().
>> 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
> cqfd.
C'est pas clair cette histoire...
Bruno voici l'ensemble du 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 txtp 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)
vals['txtp'] = res[0][0] + vals['txtp']
et sa me donne le resultat voulu(c'est à dire après chaque
enregistrement il me donne la somme de ('txtp')
> 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
>> 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)
> res = cr.fetchall()
>> if res: >> tx_in = res[0][0] + val['tx_part']
> ici (du moins avec ton algo), val est le dernier tuple de la liste > retournée par cr.fetchall().
>> 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
> cqfd.
C'est pas clair cette histoire...
Bruno voici l'ensemble du 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 txtp 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) vals['txtp'] = res[0][0] + vals['txtp']
et sa me donne le resultat voulu(c'est à dire après chaque enregistrement il me donne la somme de ('txtp')
Bruno Desthuilliers
guyguy a écrit : (snip)
Bruno voici l'ensemble du 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 txtp 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) vals['txtp'] = res[0][0] + vals['txtp']
et sa me donne le resultat voulu(c'est à dire après chaque enregistrement il me donne la somme de ('txtp')
Pas exactement, non. Tu ajoutes la valeur du champ txtp *du premier enregistrement* à chaque itération. je doute très honnêtement que ce soit ce que tu veux.
Si tu a l'usage de res ailleurs dans ton code (et en partant du principe que txtp est un numérique, of course...):
cr.execute(""" SELECT txtp FROM production_coassurance WHERE numcontrat=%s AND situation=%s AND type_souscri=%s """, (id_contrat, sit, type_sous) )
res = cr.fetchall() vals['txtp'] += sum(rec[0] for rec in res)
Sinon (ie: tu n'utilises pas le contenu de res ailleurs), utiliser les fonctions d'agrégation de ta base serait certainement plus payant:
cr.execute(""" SELECT sum(txtp) FROM production_coassurance WHERE numcontrat=%s AND situation=%s AND type_souscri=%s """, (id_contrat, sit, type_sous) )
vals['txtp'] += cr.fetchone()[0]
guyguy a écrit :
(snip)
Bruno voici l'ensemble du 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 txtp 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)
vals['txtp'] = res[0][0] + vals['txtp']
et sa me donne le resultat voulu(c'est à dire après chaque
enregistrement il me donne la somme de ('txtp')
Pas exactement, non. Tu ajoutes la valeur du champ txtp *du premier
enregistrement* à chaque itération. je doute très honnêtement que ce
soit ce que tu veux.
Si tu a l'usage de res ailleurs dans ton code (et en partant du principe
que txtp est un numérique, of course...):
cr.execute("""
SELECT txtp FROM production_coassurance
WHERE numcontrat=%s
AND situation=%s
AND type_souscri=%s
""",
(id_contrat, sit, type_sous)
)
res = cr.fetchall()
vals['txtp'] += sum(rec[0] for rec in res)
Sinon (ie: tu n'utilises pas le contenu de res ailleurs), utiliser les
fonctions d'agrégation de ta base serait certainement plus payant:
cr.execute("""
SELECT sum(txtp) FROM production_coassurance
WHERE numcontrat=%s
AND situation=%s
AND type_souscri=%s
""",
(id_contrat, sit, type_sous)
)
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 txtp 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) vals['txtp'] = res[0][0] + vals['txtp']
et sa me donne le resultat voulu(c'est à dire après chaque enregistrement il me donne la somme de ('txtp')
Pas exactement, non. Tu ajoutes la valeur du champ txtp *du premier enregistrement* à chaque itération. je doute très honnêtement que ce soit ce que tu veux.
Si tu a l'usage de res ailleurs dans ton code (et en partant du principe que txtp est un numérique, of course...):
cr.execute(""" SELECT txtp FROM production_coassurance WHERE numcontrat=%s AND situation=%s AND type_souscri=%s """, (id_contrat, sit, type_sous) )
res = cr.fetchall() vals['txtp'] += sum(rec[0] for rec in res)
Sinon (ie: tu n'utilises pas le contenu de res ailleurs), utiliser les fonctions d'agrégation de ta base serait certainement plus payant:
cr.execute(""" SELECT sum(txtp) FROM production_coassurance WHERE numcontrat=%s AND situation=%s AND type_souscri=%s """, (id_contrat, sit, type_sous) )