Erreur de type dans l'ex du critère

Résolu/Fermé
Mr_Evil_Duck Messages postés 43 Date d'inscription vendredi 5 octobre 2018 Statut Membre Dernière intervention 31 octobre 2018 - 5 oct. 2018 à 08:47
Mr_Evil_Duck Messages postés 43 Date d'inscription vendredi 5 octobre 2018 Statut Membre Dernière intervention 31 octobre 2018 - 9 oct. 2018 à 13:52
Bonjour à tous !

Je suis nouveau sur le forum, et je ne connais pas encore bien les règles concernant la rédaction sur le forum, aussi je tâcherai de fournir le plus d'explication possible.

Contexte :
Je suis stagiaire dans une entreprise, et je suis mandaté pour recréer des graphiques provenant de Excel dans Access pour améliorer les performances.

J'ai donc maintenant une application Access qui importe en local toutes les tables utiles du serveur, maintenant il faut que je puisse faire des requêtes sur ces tables pour obtenir les données nécessaires au graphiques.

Problème :

J'ai déjà pus obtenir une parties des données que je souhaitais grâce a une requête de base utilisant les tables locales:



Ensuite je fait une autre requête sur cette requête pour faire un calcul qui permet d'obtenir si le pourcentage d'erreur de livraison entre la quantité commandée et celle obtenu ne dépasse pas la marge du fournisseur (colonne [Marge])
Voici la formule :

(je met des commentaires // pour rendre la compréhension plus facile, mais bien évidemment c'est en une seul ligne)

//enlève les espaces et le caractère '%' et convertit se nombre pour le tester avec
Check: VraiFaux(Val(Remplacer(Remplacer([Marge];"%";"");" ";""))>=

//la valeure obtenue en testant si le pourcentage entre la quantité commandée et celle obtenue
//-> outpout 1 ou 0

Val(VraiFaux([QTé commandée ST_Misc]>0;Val(Abs([rBasePO].[QTE_RECD]-[rBasePO].[QTé commandée
ST_Misc])/[QTé commandée ST_Misc]*100);0));1;0)



Voici le résultat de la requête :



Je me suis permis de masquer certaines données que je suppose être confidentielle ( et qui ne rentre pas dans le calcul )

Jusqu'à présent aucun problème n'est présent, c'est uniquement lorsque je souhaite appliquer un filtre en ne sélectionnant que les tuples ayant la colonne "[check]" à 1 que l'erreur
"type de donnée incompatible dans l'expression du critère" apparaît.

Cette erreur est censée indiquer que le type du filtre ne correspond pas au type de la colonne, hors j'ai déjà tenter de convertir les deux valeurs en string, en boolean, et en entier mais rien n'y fait, le problème ne viens visiblement pas de là.

De plus quand je lance la requête sans filtre et que j'utilise le filtre de colonne sur Access l'erreur réapparaît.




Voici le code SQL de la requête :

SELECT rBasePO.PO_NUMBER, rBasePO.SUPPLIER_NAME, rBasePO.PO_DATE, rBasePO.[QTé commandée ST_Misc], rBasePO.QTE_RECD, Abs([rBasePO].[QTE_RECD]-[rBasePO].[QTé commandée ST_Misc]) AS Difference, rBasePO.STATUS, Val(Replace(Replace([Marge],"%","")," ","")) AS Marge_Erreur, Val(IIf([QTé commandée ST_Misc]>0,Val([Difference]/[QTé commandée ST_Misc]*100),0)) AS Pourcent_Erreur, IIf(Val(Replace(Replace([Marge],"%","")," ",""))>=Val(IIf([QTé commandée ST_Misc]>0,Val(Abs([rBasePO].[QTE_RECD]-[rBasePO].[QTé commandée ST_Misc])/[QTé commandée ST_Misc]*100),0)),1,0) AS [Check]
FROM rQuantityOrRec AS rBasePO
WHERE (((IIf(Val(Replace(Replace([Marge],"%","")," ",""))>=Val(IIf([QTé commandée ST_Misc]>0,Val(Abs([rBasePO].[QTE_RECD]-[rBasePO].[QTé commandée ST_Misc])/[QTé commandée ST_Misc]*100),0)),1,0))=1));

Voila, j'espère que vous pourrai m'aider et merci d'avances pour votre aide !

1 réponse

yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
5 oct. 2018 à 10:06
bonjour, es-tu certain d'avoir montré le résultat de la requête que tu partages?
SELECT rBasePO.PO_NUMBER, rBasePO.SUPPLIER_NAME, rBasePO.PO_DATE, rBasePO.[QTé commandée ST_Misc], rBasePO.QTE_RECD, Abs([rBasePO].[QTE_RECD]-[rBasePO].[QTé commandée ST_Misc]) AS Difference, rBasePO.STATUS, Val(Replace(Replace([Marge],"%","")," ","")) AS Marge_Erreur, Val(IIf([QTé commandée ST_Misc]>0,Val([Difference]/[QTé commandée ST_Misc]*100),0)) AS Pourcent_Erreur, IIf(Val(Replace(Replace([Marge],"%","")," ",""))>=Val(IIf([QTé commandée ST_Misc]>0,Val(Abs([rBasePO].[QTE_RECD]-[rBasePO].[QTé commandée ST_Misc])/[QTé commandée ST_Misc]*100),0)),1,0) AS [Check] 
FROM rQuantityOrRec AS rBasePO 
WHERE (((IIf(Val(Replace(Replace([Marge],"%","")," ",""))>=Val(IIf([QTé commandée ST_Misc]>0,Val(Abs([rBasePO].[QTE_RECD]-[rBasePO].[QTé commandée ST_Misc])/[QTé commandée ST_Misc]*100),0)),1,0))=1));

peux-tu faire:
select distinct 
IIf(Val(Replace(Replace([Marge],"%","")," ",""))>=Val(IIf([QTé commandée ST_Misc]>0,Val(Abs([rBasePO].[QTE_RECD]-[rBasePO].[QTé commandée ST_Misc])/[QTé commandée ST_Misc]*100),0)),1,0) AS [Check] 
FROM rQuantityOrRec 
, et partager le résultat?
0
Mr_Evil_Duck Messages postés 43 Date d'inscription vendredi 5 octobre 2018 Statut Membre Dernière intervention 31 octobre 2018 1
5 oct. 2018 à 10:16
Merci de ta réponse rapide, Voici le résultat :

0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > Mr_Evil_Duck Messages postés 43 Date d'inscription vendredi 5 octobre 2018 Statut Membre Dernière intervention 31 octobre 2018
5 oct. 2018 à 10:23
le filtre fonctionne-t-il sur cette requête?
si oui, essaie en supprimant le distinct.
0
Mr_Evil_Duck Messages postés 43 Date d'inscription vendredi 5 octobre 2018 Statut Membre Dernière intervention 31 octobre 2018 1
Modifié le 5 oct. 2018 à 10:32
Non plus, la même erreur apparaît dans les deux cas
<edit>
en revanche le filtre sur la colonne une fois la requête faites fonctionne lorsque l'on utilise le distinct
</edit>
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > Mr_Evil_Duck Messages postés 43 Date d'inscription vendredi 5 octobre 2018 Statut Membre Dernière intervention 31 octobre 2018
5 oct. 2018 à 10:30
même soucis en utilisant les autres méthodes de filtrage, via les boutons de sélection et de sélection avancée?
0
Mr_Evil_Duck Messages postés 43 Date d'inscription vendredi 5 octobre 2018 Statut Membre Dernière intervention 31 octobre 2018 1
5 oct. 2018 à 10:36
Si on utilise le distinct les filtres avancés fonctionnent autrement non
0