Générer une chaine de caractères avec 2 dictionnaires sous-jacents
Bonsoir,
pour une interface comptable, je souhaite générer une chaîne de caractères en pointant sur 2 dictionnaires. Le premier retourne le libellé de l'opération à l'aide d'une abréviation contenue dans la ligne SQL, puis compléter cette chaine avec le destinataire ou l'expéditeur du mouvement financier.
Les tests se font ligne par ligne retournée par la requête SQL. Avec le code ci-dessous, je n'ai pas le résultat escompté et je sèche depuis pas mal de temps.
Merci à vous.
Le moteur de base de données utilisé est SqlLite
Le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Condition = "WHERE Interface='F' AND Code_societe=" + Societe
sql1 = 'SELECT Date_ecriture,Libel,Montant FROM Extrait ' + Condition #récupere les écritures non traitées de l'extrait
curs1.execute(sql1)
base_recup = curs1.fetchall()
for row in base_recup:
Montant=row[2].replace(".","").replace(",","")
Date_saisie=row[0][0:2]+row[0][3:5]+row[0][8:10] # formatage de la date JJMMAA
for k, value in Libel.items(): # Libel contient le code opération
if row[1].find(k):
for j,valeur in Libel_interface.items(): # Libel_interface contient le destinataire ou l'expéditeur
if row[1].find(j):
Libel_ecriture=value+' '+j |
Générer une chaine de caractères avec 2 dictionnaires
Bonjour,
pour info, je sais ce qu'est un dictionnaire. Il s'agit de retourner par rapport à une chaine qui contient le code de l'opération bancaire IDD , ainsi que le nom du destinataire du prelévement (code opération IDD), un libellé pour l'interface comptable;
Voici l'exemple du libellé contenu dans le fichier source : "CEP TRESO SANTE PREV . IDD COR REF 8421295CXUPIQSDT 301"
et le résultat escompté "PRLVT TRESO SANTE".
J'ai préalablement stocké dans des tables de SqlLite : une correspondance entre les codes opération source('IDD') et le codes cibles ('VIRT'), puis une table pour la correspondance entre le code tiers, ici 'TRESO SANTE' et le code tiers comptable.
L'objet du code est de :
- générer le libellé pour l'interface 'PRVLT TRESO SANTE'
- générer le code comptable du tiers, par exemple ici '43750100'.
C'est pour cela que je fais appel à 2 dictionnaires:
- un avec comme clé le code de l'opération de la source et pour valeur le code pour l'interface,
- l'autre avec comme clé le tiers et pour valeur le code comptable du tiers.
Pour chaque ligne du résultat de la requête sql, je teste l'existence, dans le libellé source du code opération pour stocker le code correspondant et l'existence du libellé du tiers.
En ce qui concerne la remarque sur la condition dans la requête sql, je n'ai pas trouvé, malgré la lecture de plusieurs documents concernant sqlite, la possibilité de tester si le code opération est contenu dans le libellé. L'opérateur IN n'est valable qu'avec une liste de valeurs.
Générer une chaîne de caractères avec 2 dictionnaires
Rebonjour,
je viens de résoudre le problème avec 2 jointures sur les tables contenant l'extrait et les 2 tables de correspondances avec la fonction 'instr()' dans la condition de filtrage WHERE.
merci pour vos commentaires.