Hello,
Problème bizarre. J'ai une query 2 qui dépend d'une query 1 et dans un cas précis, alors qu'il devrait ramener la valeur "null", la query 2 ramène seulement la partie texte d'une formule de concaténation quand il s'agit d'une entrée "filtrée" dans la query source (1) et tout le résultat de la formule si l'entrée n'est pas filtrée. Ce bug ne se produit pas si je n'ai pas de portion "texte" dans ma formule de départ.
je tiens à mon left join pour d'autres raisons. J'ai contourné en changeant "formule + filtre" en formule intégrant le filtre par un "if" mais c'est pas top.
voilà la description de ma base, simplifiée pour isoler le problème:
TABLE1 pays et règle pour donner un nom à la zone pays
- "COUNTRY" - short text (Country value 2 characters)
- "RULE" - short text (value est soit CTY soit REG)
QUERY1 utilise TABLE1 uniquement - formule va donner le nom de la zone et filtrer uniquement les pays dont la "rule" est "CTY" (une autre query fera de même pour la rule "REG"
- [TABLE1].[COUNTRY]
- [TABLE1].[RULE] criteria "CTY"
- ZOne_name:[COUNTRY] & "00000000"
le résultat montre uniquement les entrées RULE="CTY", jusque la tout va bien
mais ça déconne ensuite
TABLE2 (liste de clients et leur pays)
- "PARNTER" - short text (10 digit numbers)
- "PAYS" - short text (Country value 2 characters)
QUERY2, utilise QUERY1 & TABLE2 pour rapatrier le nom de la zone pour chaque client
- Left Join TABLE2 "PAYS" to QUERY1 "COUNTRY",
- [TABLE2].[PARTNER]
- [QUERY1].[Zone_name]
résultat:
si PAYS est dans la liste des pays filtrés (donc avec RULE=CTY" dans QUERY1, dans QUERY1.ZONE_name il ramène par exemple "USF0000000" - good
mais si PAYS n'est pas dans le résultat de QUERY1 (donc RULE <> "CTY"), dans QUERY1.ZONE_name le résultat donne "F0000000" ?????? ça devrait être vide!!
si au lieu de ZOne_name:[COUNTRY] & "00000000" dans QUERY1 je mets par exemple ZOne_name:[COUNTRY] & [RULE], pour un pays avec avec RULE<> CTY dans QUERY1 j'ai bien le résultat = null
comme si c'était la portion text qui mettait le bazar
Merci pour votre aide, en attendant j'ai changé la formule de "zone name" pour intégrer le "iif rule = cty" au lieu de le mettre comme un filtre! (peut etre Access ne supporte pas ma première façon de faire mais étrange que le bug ne soit qu'avec une portion texte)
SQL QUERY1:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT TABLE1.COUNTRY, TABLE1.RULE, TABLE1.COUNTRY & "F0000000" AS ZONE_Name FROM TABLE1 WHERE (((TABLE1.RULE)="CTY"));
SQL QUERY2:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT TABLE2.PARTNER, TABLE2.PAYS, QUERY1.ZONE_NAME, FROM TABLE2 LEFT JOIN QUERY1 ON TABLE2.PAYS = QUERY1.COUNTRY;
Partager