problème de recuperation de la valeur d'un champ de la base de donnée
5 réponses
guyguy
Bonsoir
je veux recuperer la valeur d'un champ pour poser une condition if
Voici le code
def create(self,cr,uid,vals,context=3D{}):
vals['txtp'] =3D vals['tx_part']
# compare la somme des taux existant =E0 100
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 txtp 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)
vals['txtp'] =3D res[0][0] + vals['txtp']
(-------------jusqu'ici il marche--------------)
cr.execute("select txtp from production_coassurance where
numcontrat=3D%s",[id_contrat])
rs =3D []
for k in cr.fetchall():
rs.append(k)
je veux txtp qui est un champ de la base qui est de integer
je veux poser une condition s'il est superieur =E0 100 par exemple
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
guyguy
On 30 juin, 15:49, guyguy wrote:
Bonsoir je veux recuperer la valeur d'un champ pour poser une condition if Voici le code
def create(self,cr,uid,vals,context={}): vals['txtp'] = vals['tx_part'] # compare la somme des taux existant à 100 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, s it, type_sous]) res = [] for val in cr.fetchall(): res.append(val) vals['txtp'] = res[0][0] + vals['txtp']
(-------------jusqu'ici il marche--------------)
cr.execute("select txtp from production_coassurance where numcontrat=%s",[id_contrat]) rs = [] for k in cr.fetchall(): rs.append(k)
je veux txtp qui est un champ de la base qui est de integer je veux poser une condition s'il est superieur à 100 par exemple
Merci je reuisir à recuperer la valeur Merci
On 30 juin, 15:49, guyguy <sboa_mar...@yahoo.fr> wrote:
Bonsoir
je veux recuperer la valeur d'un champ pour poser une condition if
Voici le code
def create(self,cr,uid,vals,context={}):
vals['txtp'] = vals['tx_part']
# compare la somme des taux existant à 100
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, s it,
type_sous])
res = []
for val in cr.fetchall():
res.append(val)
vals['txtp'] = res[0][0] + vals['txtp']
(-------------jusqu'ici il marche--------------)
cr.execute("select txtp from production_coassurance where
numcontrat=%s",[id_contrat])
rs = []
for k in cr.fetchall():
rs.append(k)
je veux txtp qui est un champ de la base qui est de integer
je veux poser une condition s'il est superieur à 100 par exemple
Bonsoir je veux recuperer la valeur d'un champ pour poser une condition if Voici le code
def create(self,cr,uid,vals,context={}): vals['txtp'] = vals['tx_part'] # compare la somme des taux existant à 100 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, s it, type_sous]) res = [] for val in cr.fetchall(): res.append(val) vals['txtp'] = res[0][0] + vals['txtp']
(-------------jusqu'ici il marche--------------)
cr.execute("select txtp from production_coassurance where numcontrat=%s",[id_contrat]) rs = [] for k in cr.fetchall(): rs.append(k)
je veux txtp qui est un champ de la base qui est de integer je veux poser une condition s'il est superieur à 100 par exemple
Merci je reuisir à recuperer la valeur Merci
Bruno Desthuilliers
guyguy a écrit :
Bonsoir je veux recuperer la valeur d'un champ pour poser une condition if Voici le code
def create(self,cr,uid,vals,context={}):
Gotcha : les valeurs par défaut des arguments ne sont évaluées qu'une seule et unique fois. Tu veux:
def create(self, cr, uid, vals, context=None): if context is None: context = {}
vals['txtp'] = vals['tx_part'] # compare la somme des taux existant à 100 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']
(-------------jusqu'ici il marche--------------)
*Non*. cf réponse dans un thread précédent.
cr.execute("select txtp from production_coassurance where numcontrat=%s",[id_contrat]) rs = [] for k in cr.fetchall(): rs.append(k)
*pourquoi* ??? Pourquoi cette boucle *inutile* qui reconstruit à l'identique la liste retournée par cr.fetchall() ? Est-ce que tu comprends le code que tu écris ??? Ou est-ce que tu essayes n'importe quoi au hasard - en évitant soigneusement de lire la doc - jusqu'à ce que *par accident*, ça *semble* donner le résultat ? Désolé d'être désagréable, mais là, vraiment, il y a de quoi se poser des questions.
je veux txtp qui est un champ de la base qui est de integer je veux poser une condition s'il est superieur à 100 par exemple
Clause WHERE de ta requete SQL.
guyguy a écrit :
Bonsoir
je veux recuperer la valeur d'un champ pour poser une condition if
Voici le code
def create(self,cr,uid,vals,context={}):
Gotcha : les valeurs par défaut des arguments ne sont évaluées qu'une
seule et unique fois. Tu veux:
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
vals['txtp'] = vals['tx_part']
# compare la somme des taux existant à 100
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']
(-------------jusqu'ici il marche--------------)
*Non*. cf réponse dans un thread précédent.
cr.execute("select txtp from production_coassurance where
numcontrat=%s",[id_contrat])
rs = []
for k in cr.fetchall():
rs.append(k)
*pourquoi* ??? Pourquoi cette boucle *inutile* qui reconstruit à
l'identique la liste retournée par cr.fetchall() ? Est-ce que tu
comprends le code que tu écris ??? Ou est-ce que tu essayes n'importe
quoi au hasard - en évitant soigneusement de lire la doc - jusqu'à ce
que *par accident*, ça *semble* donner le résultat ? Désolé d'être
désagréable, mais là, vraiment, il y a de quoi se poser des questions.
je veux txtp qui est un champ de la base qui est de integer
je veux poser une condition s'il est superieur à 100 par exemple
Bonsoir je veux recuperer la valeur d'un champ pour poser une condition if Voici le code
def create(self,cr,uid,vals,context={}):
Gotcha : les valeurs par défaut des arguments ne sont évaluées qu'une seule et unique fois. Tu veux:
def create(self, cr, uid, vals, context=None): if context is None: context = {}
vals['txtp'] = vals['tx_part'] # compare la somme des taux existant à 100 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']
(-------------jusqu'ici il marche--------------)
*Non*. cf réponse dans un thread précédent.
cr.execute("select txtp from production_coassurance where numcontrat=%s",[id_contrat]) rs = [] for k in cr.fetchall(): rs.append(k)
*pourquoi* ??? Pourquoi cette boucle *inutile* qui reconstruit à l'identique la liste retournée par cr.fetchall() ? Est-ce que tu comprends le code que tu écris ??? Ou est-ce que tu essayes n'importe quoi au hasard - en évitant soigneusement de lire la doc - jusqu'à ce que *par accident*, ça *semble* donner le résultat ? Désolé d'être désagréable, mais là, vraiment, il y a de quoi se poser des questions.
je veux txtp qui est un champ de la base qui est de integer je veux poser une condition s'il est superieur à 100 par exemple
Clause WHERE de ta requete SQL.
guyguy
On 30 juin, 16:28, Bruno Desthuilliers <bruno. wrote:
guyguy a écrit :
> Bonsoir > je veux recuperer la valeur d'un champ pour poser une condition if > Voici le code
> def create(self,cr,uid,vals,context={}):
Gotcha : les valeurs par défaut des arguments ne sont évaluées qu'u ne seule et unique fois. Tu veux:
def create(self, cr, uid, vals, context=None): if context is None: context = {}
> vals['txtp'] = vals['tx_part'] > # compare la somme des taux existant à 100 > 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 WHE RE > 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']
> (-------------jusqu'ici il marche--------------)
*Non*. cf réponse dans un thread précédent.
> cr.execute("select txtp from production_coassurance whe re > numcontrat=%s",[id_contrat]) > rs = [] > for k in cr.fetchall(): > rs.append(k)
*pourquoi* ??? Pourquoi cette boucle *inutile* qui reconstruit à l'identique la liste retournée par cr.fetchall() ? Est-ce que tu comprends le code que tu écris ??? Ou est-ce que tu essayes n'importe quoi au hasard - en évitant soigneusement de lire la doc - jusqu'à ce que *par accident*, ça *semble* donner le résultat ? Désolé d'ê tre désagréable, mais là, vraiment, il y a de quoi se poser des questio ns.
> je veux txtp qui est un champ de la base qui est de integer > je veux poser une condition s'il est superieur à 100 par exemple
Clause WHERE de ta requete SQL.
Merci Bruno pour la remarque sur mon code je pense faire un effort la prochaine fois Ne te gène pas de me dire parce que je doit être un bon developpeur en python
On 30 juin, 16:28, Bruno Desthuilliers <bruno.
42.desthuilli...@websiteburo.invalid> wrote:
guyguy a écrit :
> Bonsoir
> je veux recuperer la valeur d'un champ pour poser une condition if
> Voici le code
> def create(self,cr,uid,vals,context={}):
Gotcha : les valeurs par défaut des arguments ne sont évaluées qu'u ne
seule et unique fois. Tu veux:
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
> vals['txtp'] = vals['tx_part']
> # compare la somme des taux existant à 100
> 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 WHE RE
> 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']
> (-------------jusqu'ici il marche--------------)
*Non*. cf réponse dans un thread précédent.
> cr.execute("select txtp from production_coassurance whe re
> numcontrat=%s",[id_contrat])
> rs = []
> for k in cr.fetchall():
> rs.append(k)
*pourquoi* ??? Pourquoi cette boucle *inutile* qui reconstruit à
l'identique la liste retournée par cr.fetchall() ? Est-ce que tu
comprends le code que tu écris ??? Ou est-ce que tu essayes n'importe
quoi au hasard - en évitant soigneusement de lire la doc - jusqu'à ce
que *par accident*, ça *semble* donner le résultat ? Désolé d'ê tre
désagréable, mais là, vraiment, il y a de quoi se poser des questio ns.
> je veux txtp qui est un champ de la base qui est de integer
> je veux poser une condition s'il est superieur à 100 par exemple
Clause WHERE de ta requete SQL.
Merci Bruno pour la remarque sur mon code
je pense faire un effort la prochaine fois
Ne te gène pas de me dire parce que je doit être un bon developpeur en
python
On 30 juin, 16:28, Bruno Desthuilliers <bruno. wrote:
guyguy a écrit :
> Bonsoir > je veux recuperer la valeur d'un champ pour poser une condition if > Voici le code
> def create(self,cr,uid,vals,context={}):
Gotcha : les valeurs par défaut des arguments ne sont évaluées qu'u ne seule et unique fois. Tu veux:
def create(self, cr, uid, vals, context=None): if context is None: context = {}
> vals['txtp'] = vals['tx_part'] > # compare la somme des taux existant à 100 > 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 WHE RE > 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']
> (-------------jusqu'ici il marche--------------)
*Non*. cf réponse dans un thread précédent.
> cr.execute("select txtp from production_coassurance whe re > numcontrat=%s",[id_contrat]) > rs = [] > for k in cr.fetchall(): > rs.append(k)
*pourquoi* ??? Pourquoi cette boucle *inutile* qui reconstruit à l'identique la liste retournée par cr.fetchall() ? Est-ce que tu comprends le code que tu écris ??? Ou est-ce que tu essayes n'importe quoi au hasard - en évitant soigneusement de lire la doc - jusqu'à ce que *par accident*, ça *semble* donner le résultat ? Désolé d'ê tre désagréable, mais là, vraiment, il y a de quoi se poser des questio ns.
> je veux txtp qui est un champ de la base qui est de integer > je veux poser une condition s'il est superieur à 100 par exemple
Clause WHERE de ta requete SQL.
Merci Bruno pour la remarque sur mon code je pense faire un effort la prochaine fois Ne te gène pas de me dire parce que je doit être un bon developpeur en python
bruno.desthuilliers
On 30 juin, 19:32, guyguy wrote: (snip)
Merci Bruno pour la remarque sur mon code
Merci à toi de le prendre bien - j'ai tendance à taper fort des fois.
je pense faire un effort la prochaine fois Ne te gène pas de me dire parce que je doit être un bon developpeur en python
Comment dire... Le problème n'est pas ici spécifique à Python AMHA, mais plutôt d'une approche vouée à l'échec qui consiste à essayer les trucs au petit bonheur la chance au lieu de comprendre ce qu'on fait. Le problème serait le même en PHP, en C, etc... Si tu veux devenir un bon programmeur (ou même un programmeur correct), laisse tomber la "programmation par accident", lit le manuel (celui du langage que tu utilises bien sûr, mais aussi des manuels plus généralistes), utilise l'interpréteur interactif pour explorer les API des bibliothèques que tu utilises, apprend à utiliser le debuggeur pour suivre pas à pas l'éxecution de ton code et t'assurer qu'il fait bien ce que tu crois, bref, fait en sorte de *savoir* ce que fait ton code.
On 30 juin, 19:32, guyguy <sboa_mar...@yahoo.fr> wrote:
(snip)
Merci Bruno pour la remarque sur mon code
Merci à toi de le prendre bien - j'ai tendance à taper fort des fois.
je pense faire un effort la prochaine fois
Ne te gène pas de me dire parce que je doit être un bon developpeur en
python
Comment dire... Le problème n'est pas ici spécifique à Python AMHA,
mais plutôt d'une approche vouée à l'échec qui consiste à essayer les
trucs au petit bonheur la chance au lieu de comprendre ce qu'on fait.
Le problème serait le même en PHP, en C, etc... Si tu veux devenir un
bon programmeur (ou même un programmeur correct), laisse tomber la
"programmation par accident", lit le manuel (celui du langage que tu
utilises bien sûr, mais aussi des manuels plus généralistes), utilise
l'interpréteur interactif pour explorer les API des bibliothèques que
tu utilises, apprend à utiliser le debuggeur pour suivre pas à pas
l'éxecution de ton code et t'assurer qu'il fait bien ce que tu crois,
bref, fait en sorte de *savoir* ce que fait ton code.
Merci à toi de le prendre bien - j'ai tendance à taper fort des fois.
je pense faire un effort la prochaine fois Ne te gène pas de me dire parce que je doit être un bon developpeur en python
Comment dire... Le problème n'est pas ici spécifique à Python AMHA, mais plutôt d'une approche vouée à l'échec qui consiste à essayer les trucs au petit bonheur la chance au lieu de comprendre ce qu'on fait. Le problème serait le même en PHP, en C, etc... Si tu veux devenir un bon programmeur (ou même un programmeur correct), laisse tomber la "programmation par accident", lit le manuel (celui du langage que tu utilises bien sûr, mais aussi des manuels plus généralistes), utilise l'interpréteur interactif pour explorer les API des bibliothèques que tu utilises, apprend à utiliser le debuggeur pour suivre pas à pas l'éxecution de ton code et t'assurer qu'il fait bien ce que tu crois, bref, fait en sorte de *savoir* ce que fait ton code.
Christophe
a écrit :
On 30 juin, 19:32, guyguy wrote: (snip)
Merci Bruno pour la remarque sur mon code
Merci à toi de le prendre bien - j'ai tendance à taper fort des fois.
je pense faire un effort la prochaine fois Ne te gène pas de me dire parce que je doit être un bon developpeur en python
Comment dire... Le problème n'est pas ici spécifique à Python AMHA, mais plutôt d'une approche vouée à l'échec qui consiste à essayer les trucs au petit bonheur la chance au lieu de comprendre ce qu'on fait. Le problème serait le même en PHP, en C, etc...
Justement, il me semble que le terme inventé pour ce genre de chose est le Shotgun Debugging: http://en.wikipedia.org/wiki/Shotgun_debugging (pas trouvé de version en français)
J'ai tout de suite pensé à ça en voyant ce message, mais en lisant cette partie de la définition de Wikipedia, ça conforte grandement dans le choix de ce terme: "when used as an attempt to work around programming language features that one may be using improperly"
On peut voir facilement de part de l'age de ce "Jargon File" que ce genre de code n'est absolument pas spécifique à Python et même bien plus ancien que lui :)
bruno.desthuilliers@gmail.com a écrit :
On 30 juin, 19:32, guyguy <sboa_mar...@yahoo.fr> wrote:
(snip)
Merci Bruno pour la remarque sur mon code
Merci à toi de le prendre bien - j'ai tendance à taper fort des fois.
je pense faire un effort la prochaine fois
Ne te gène pas de me dire parce que je doit être un bon developpeur en
python
Comment dire... Le problème n'est pas ici spécifique à Python AMHA,
mais plutôt d'une approche vouée à l'échec qui consiste à essayer les
trucs au petit bonheur la chance au lieu de comprendre ce qu'on fait.
Le problème serait le même en PHP, en C, etc...
Justement, il me semble que le terme inventé pour ce genre de chose est
le Shotgun Debugging: http://en.wikipedia.org/wiki/Shotgun_debugging
(pas trouvé de version en français)
J'ai tout de suite pensé à ça en voyant ce message, mais en lisant cette
partie de la définition de Wikipedia, ça conforte grandement dans le
choix de ce terme:
"when used as an attempt to work around programming language features
that one may be using improperly"
On peut voir facilement de part de l'age de ce "Jargon File" que ce
genre de code n'est absolument pas spécifique à Python et même bien plus
ancien que lui :)
Merci à toi de le prendre bien - j'ai tendance à taper fort des fois.
je pense faire un effort la prochaine fois Ne te gène pas de me dire parce que je doit être un bon developpeur en python
Comment dire... Le problème n'est pas ici spécifique à Python AMHA, mais plutôt d'une approche vouée à l'échec qui consiste à essayer les trucs au petit bonheur la chance au lieu de comprendre ce qu'on fait. Le problème serait le même en PHP, en C, etc...
Justement, il me semble que le terme inventé pour ce genre de chose est le Shotgun Debugging: http://en.wikipedia.org/wiki/Shotgun_debugging (pas trouvé de version en français)
J'ai tout de suite pensé à ça en voyant ce message, mais en lisant cette partie de la définition de Wikipedia, ça conforte grandement dans le choix de ce terme: "when used as an attempt to work around programming language features that one may be using improperly"
On peut voir facilement de part de l'age de ce "Jargon File" que ce genre de code n'est absolument pas spécifique à Python et même bien plus ancien que lui :)