Erreur de type dans l'ex du critère
Résolu
Mr_Evil_Duck
Messages postés
45
Statut
Membre
-
Mr_Evil_Duck Messages postés 45 Statut Membre -
Mr_Evil_Duck Messages postés 45 Statut Membre -
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 !
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 !
A voir également:
- Erreur de type dans l'ex du critère
- Money manager ex - Télécharger - Bourse & Finance
- Type de ram - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
1 réponse
bonjour, es-tu certain d'avoir montré le résultat de la requête que tu partages?
peux-tu faire:
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?
si oui, essaie en supprimant le distinct.
<edit>
en revanche le filtre sur la colonne une fois la requête faites fonctionne lorsque l'on utilise le distinct
</edit>