Bonjour à toutes, bonjour à tous,
Grâce à Marot_r et Tofalu, je renseigne 2 tables T_anciennes_valeurs et T_nouvelles_valeurs pour stocker les données d'un enregistrement avant et après modifications.
J'en ai tiré une requête pour ne faire apparaitre que la nouvelle valeur du ou des champs modifiés (pour ne pas compliquer l'exploitation par des utilisateurs de base, en l’occurrence les adhérents d'une association à qui l'on enverra les modifs des coordonnées).
Cela donne par exemple, pour le champ ville :
Ville:VraiFaux(T_Nouvelles_valeurs!Ville<>T_Anciennes_valeurs!Ville;T_Nouvelles_valeurs!Ville;"")
Ainsi, si la ville change, seul le nom de la nouvelle apparait.
Cela fonctionne bien pour les champs "normaux".
Cela se complique pour les cases à cocher.
En effet, si la case est cochée, Access renvoie -1, sinon 0.
Pour éviter cela j'ai modifié ma formule pour faire apparaitre "oui" ou "non".
Mais dans ma requête, si le champ "case à cocher" [Retraite] n'est pas modifié pour l'enregistrement en question, [Retraite] devrait être vide.
Avec la formule ci-dessous, cela me retourne #Erreur.
Comment ne rien avoir du tout si aucune modif n'est faite sur ce champ ?
Pour info j'ai aussi essayé EstNull en début ou en fin de formule sans résultat.
Retraité: VraiFaux(EstVide(VraiFaux(VraiFaux([T_Nouvelles_valeurs]![Retraite]<>[T_Anciennes_valeurs]![Retraite];[T_Nouvelles_valeurs]![Retraite];"")=-1;"oui";VraiFaux(VraiFaux([T_Nouvelles_valeurs]![Retraite]<>[T_Anciennes_valeurs]![Retraite];[T_Nouvelles_valeurs]![Retraite];"")=0;"non")));"";VraiFaux(VraiFaux([T_Nouvelles_valeurs]![Retraite]<>[T_Anciennes_valeurs]![Retraite];[T_Nouvelles_valeurs]![Retraite];"")=-1;"oui";VraiFaux(VraiFaux([T_Nouvelles_valeurs]![Retraite]<>[T_Anciennes_valeurs]![Retraite];[T_Nouvelles_valeurs]![Retraite];"")=0;"non")))
Je vous mets aussi le code SQL
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT T_Anciennes_valeurs.MiseAJour, T_Anciennes_valeurs.N°Adh, IIf(T_Nouvelles_valeurs!Adresse<>T_Anciennes_valeurs!Adresse,T_Nouvelles_valeurs!Adresse,"") AS Adresse, IIf(T_Nouvelles_valeurs!Ville<>T_Anciennes_valeurs!Ville,T_Nouvelles_valeurs!Ville,"") AS Ville, IIf(IsEmpty(IIf(IIf([T_Nouvelles_valeurs]![Retraite]<>[T_Anciennes_valeurs]![Retraite],[T_Nouvelles_valeurs]![Retraite],"")=-1,"oui",IIf(IIf([T_Nouvelles_valeurs]![Retraite]<>[T_Anciennes_valeurs]![Retraite],[T_Nouvelles_valeurs]![Retraite],"")=0,"non"))),"",IIf(IIf([T_Nouvelles_valeurs]![Retraite]<>[T_Anciennes_valeurs]![Retraite],[T_Nouvelles_valeurs]![Retraite],"")=-1,"oui",IIf(IIf([T_Nouvelles_valeurs]![Retraite]<>[T_Anciennes_valeurs]![Retraite],[T_Nouvelles_valeurs]![Retraite],"")=0,"non"))) AS Retraité FROM T_Anciennes_valeurs LEFT JOIN T_Nouvelles_valeurs ON T_Anciennes_valeurs.N°Adh = T_Nouvelles_valeurs.N°Adh ORDER BY T_Anciennes_valeurs.MiseAJour DESC;
Merci de votre aide.
A+
C15
PS L'intitulé n'est peut-être pas le meilleur, n'hésitez pas à me faire une autre proposition
Partager