Bonjour
Je n'arrive pas =E0 =E9viter les enregistrement double(c'est =E0 dire
enregistrer deux fois le m=EAme enregistrement)
Voici mon code
cr.execute("SELECT DISTINCT code_client FROM production_client WHERE
numcontrat=3D%s AND type_souscri=3D%s" ,[id_contrat, type_sous])
clt =3D []
for t in cr.fetchall():
clt.append(t)
while len (clt) !=3D0:
try:
dernier =3D clt.pop()
except:
pass
else:
if dernier =3D=3D clt.append() :
raise osv.except_osv('Warning !', 'il exciste
d=E9j=E0!')
Je souhaiterais, si possible, voir comment as tu fait.
Un optimiste.
Moi pas.
Un réaliste.
Perso, étant en ouakanss, je préfère aller me baigner.
@+ -- Michel Claveau
Voici mon code (mon objectif était d'éviter les enregistrement double dans la base)
# Verification de la saisie d'un seul client dans la base (Eviter les doublons) cr.execute("SELECT code_clt FROM production_client WHERE numcontrat=%s AND type_souscri=%s AND situation=%s" ,[id_contrat, type_sous,sit]) res = [] new = vals['code_clt'] [res.append(k[0]) for k in cr.fetchall()] if len(res)==0: return super(production_client,self).create(cr,uid,vals,context=context) else: if new in res: raise osv.except_osv('Error !', 'Le client existe déjà!')
Merci pour vos conseil surtout à Bruno qui me tire les oreilles merci Bruno
Et si tu integrais dans ta requete le code client dont tu veux verifier s'il existe deja.
Ca t'eviterai de faire un algo trop complexe en python.
cli = vals ['code_clt']
cr.execute ("SELECT code_clt FROM production WHERE code_clt = %s AND numcontrat = %s AND type_souscri = %s AND situation = %s", [cli, id_contrat, type_sous, sit])
if len (cr.fetchall()) > 0: raise osv.except_osv ("Error !", "client existe deja") else: super (production_client, self).create (...)
Ca me semble plus simple.
Boa Guy Serge wrote:
On 17 juil, 09:21, "Méta-MCI (MVP)"
<enleverlesX.X...@XmclaveauX.com> wrote:
Bonjour !
Je souhaiterais, si possible, voir comment as tu fait.
Un optimiste.
Moi pas.
Un réaliste.
Perso, étant en ouakanss, je préfère aller me baigner.
@+
--
Michel Claveau
Voici mon code (mon objectif était d'éviter les enregistrement double
dans la base)
# Verification de la saisie d'un seul client dans la base (Eviter les
doublons)
cr.execute("SELECT code_clt FROM production_client WHERE
numcontrat=%s AND type_souscri=%s AND situation=%s" ,[id_contrat,
type_sous,sit])
res = []
new = vals['code_clt']
[res.append(k[0]) for k in cr.fetchall()]
if len(res)==0:
return
super(production_client,self).create(cr,uid,vals,context=context)
else:
if new in res:
raise osv.except_osv('Error !', 'Le client existe
déjà!')
Merci pour vos conseil surtout à Bruno qui me tire les oreilles merci
Bruno
Et si tu integrais dans ta requete le code client dont tu veux verifier
s'il existe deja.
Ca t'eviterai de faire un algo trop complexe en python.
cli = vals ['code_clt']
cr.execute ("SELECT code_clt FROM production WHERE code_clt = %s AND
numcontrat = %s AND type_souscri = %s AND situation = %s", [cli,
id_contrat, type_sous, sit])
if len (cr.fetchall()) > 0:
raise osv.except_osv ("Error !", "client existe deja")
else:
super (production_client, self).create (...)
Je souhaiterais, si possible, voir comment as tu fait.
Un optimiste.
Moi pas.
Un réaliste.
Perso, étant en ouakanss, je préfère aller me baigner.
@+ -- Michel Claveau
Voici mon code (mon objectif était d'éviter les enregistrement double dans la base)
# Verification de la saisie d'un seul client dans la base (Eviter les doublons) cr.execute("SELECT code_clt FROM production_client WHERE numcontrat=%s AND type_souscri=%s AND situation=%s" ,[id_contrat, type_sous,sit]) res = [] new = vals['code_clt'] [res.append(k[0]) for k in cr.fetchall()] if len(res)==0: return super(production_client,self).create(cr,uid,vals,context=context) else: if new in res: raise osv.except_osv('Error !', 'Le client existe déjà!')
Merci pour vos conseil surtout à Bruno qui me tire les oreilles merci Bruno
Et si tu integrais dans ta requete le code client dont tu veux verifier s'il existe deja.
Ca t'eviterai de faire un algo trop complexe en python.
cli = vals ['code_clt']
cr.execute ("SELECT code_clt FROM production WHERE code_clt = %s AND numcontrat = %s AND type_souscri = %s AND situation = %s", [cli, id_contrat, type_sous, sit])
if len (cr.fetchall()) > 0: raise osv.except_osv ("Error !", "client existe deja") else: super (production_client, self).create (...)
Ca me semble plus simple.
Bruno Desthuilliers
Alain BARTHE a écrit :
Boa Guy Serge wrote:
On 17 juil, 09:21, "Méta-MCI (MVP)" wrote:
Bonjour !
Je souhaiterais, si possible, voir comment as tu fait.
Un optimiste.
Moi pas.
Un réaliste.
Perso, étant en ouakanss, je préfère aller me baigner.
@+ -- Michel Claveau
Voici mon code (mon objectif était d'éviter les enregistrement double dans la base)
# Verification de la saisie d'un seul client dans la base (Eviter les doublons) cr.execute("SELECT code_clt FROM production_client WHERE numcontrat=%s AND type_souscri=%s AND situation=%s" ,[id_contrat, type_sous,sit]) res = [] new = vals['code_clt'] [res.append(k[0]) for k in cr.fetchall()] if len(res)==0: return super(production_client,self).create(cr,uid,vals,context=context) else: if new in res: raise osv.except_osv('Error !', 'Le client existe déjà!')
Merci pour vos conseil surtout à Bruno qui me tire les oreilles merci Bruno
Et si tu integrais dans ta requete le code client dont tu veux verifier s'il existe deja.
Ca t'eviterai de faire un algo trop complexe en python.
cli = vals ['code_clt']
cr.execute ("SELECT code_clt FROM production WHERE code_clt = %s AND numcontrat = %s AND type_souscri = %s AND situation = %s", [cli, id_contrat, type_sous, sit])
if len (cr.fetchall()) > 0:
cursor.execute retourne le nombre de rows affectés - donc dans le cas d'une requête "select", le nombre de rows qui matchent.
if cr.execute(sql, (arg1, argn)): raise YourException("your message")
*mais* si le schema était correct, il ne serait de toutes façon pas possible de créer des doublons puisqu'il y aurait une clé unique sur les champs concernés.
Alain BARTHE a écrit :
Boa Guy Serge wrote:
On 17 juil, 09:21, "Méta-MCI (MVP)"
<enleverlesX.X...@XmclaveauX.com> wrote:
Bonjour !
Je souhaiterais, si possible, voir comment as tu fait.
Un optimiste.
Moi pas.
Un réaliste.
Perso, étant en ouakanss, je préfère aller me baigner.
@+
--
Michel Claveau
Voici mon code (mon objectif était d'éviter les enregistrement double
dans la base)
# Verification de la saisie d'un seul client dans la base (Eviter les
doublons)
cr.execute("SELECT code_clt FROM production_client WHERE
numcontrat=%s AND type_souscri=%s AND situation=%s" ,[id_contrat,
type_sous,sit])
res = []
new = vals['code_clt']
[res.append(k[0]) for k in cr.fetchall()]
if len(res)==0:
return
super(production_client,self).create(cr,uid,vals,context=context)
else:
if new in res:
raise osv.except_osv('Error !', 'Le client existe
déjà!')
Merci pour vos conseil surtout à Bruno qui me tire les oreilles merci
Bruno
Et si tu integrais dans ta requete le code client dont tu veux verifier
s'il existe deja.
Ca t'eviterai de faire un algo trop complexe en python.
cli = vals ['code_clt']
cr.execute ("SELECT code_clt FROM production WHERE code_clt = %s AND
numcontrat = %s AND type_souscri = %s AND situation = %s", [cli,
id_contrat, type_sous, sit])
if len (cr.fetchall()) > 0:
cursor.execute retourne le nombre de rows affectés - donc dans le cas
d'une requête "select", le nombre de rows qui matchent.
if cr.execute(sql, (arg1, argn)):
raise YourException("your message")
*mais* si le schema était correct, il ne serait de toutes façon pas
possible de créer des doublons puisqu'il y aurait une clé unique sur les
champs concernés.
Je souhaiterais, si possible, voir comment as tu fait.
Un optimiste.
Moi pas.
Un réaliste.
Perso, étant en ouakanss, je préfère aller me baigner.
@+ -- Michel Claveau
Voici mon code (mon objectif était d'éviter les enregistrement double dans la base)
# Verification de la saisie d'un seul client dans la base (Eviter les doublons) cr.execute("SELECT code_clt FROM production_client WHERE numcontrat=%s AND type_souscri=%s AND situation=%s" ,[id_contrat, type_sous,sit]) res = [] new = vals['code_clt'] [res.append(k[0]) for k in cr.fetchall()] if len(res)==0: return super(production_client,self).create(cr,uid,vals,context=context) else: if new in res: raise osv.except_osv('Error !', 'Le client existe déjà!')
Merci pour vos conseil surtout à Bruno qui me tire les oreilles merci Bruno
Et si tu integrais dans ta requete le code client dont tu veux verifier s'il existe deja.
Ca t'eviterai de faire un algo trop complexe en python.
cli = vals ['code_clt']
cr.execute ("SELECT code_clt FROM production WHERE code_clt = %s AND numcontrat = %s AND type_souscri = %s AND situation = %s", [cli, id_contrat, type_sous, sit])
if len (cr.fetchall()) > 0:
cursor.execute retourne le nombre de rows affectés - donc dans le cas d'une requête "select", le nombre de rows qui matchent.
if cr.execute(sql, (arg1, argn)): raise YourException("your message")
*mais* si le schema était correct, il ne serait de toutes façon pas possible de créer des doublons puisqu'il y aurait une clé unique sur les champs concernés.