Probleme dans un champ calculé

Fermé
jeffrey734 Messages postés 59 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 5 juillet 2015 - 17 juin 2015 à 02:35
 Tessel75 - 6 juil. 2015 à 12:34
bonjour j'etais en train d'essayer de créer un champ calculer dans ma base de donnée access seulement j'avais plutot l'habitude sur excel et dans access ca a l'aire d'etre différent

en gros j'essaye de faire en sorte que mon champ calcule des taxe dependament de mon numero de facture j'ai donc essayer ceci pour faire plus simple mais j'arrive pas a la faire fonctionné

IIf( [Numero_de_facture] = MG08*; «Expr» [Prix] + [TPS] * 0,075; «Expr» [Prix] * 0,0975)

MG08* est pour mes numero de facture par xemple (MG08-01) le * comme generique

si vous pouriez m'eclairer sur le pourquoi ca ne fonctionne pas pour que finalement j'arrive a faire fonctionner cette formule ci

IIf( [Numero_de_facture] =MG08*; «Expr» [Prix] + [TPS] *0,075; IIf( [Numero_de_facture] =MG09*; «Expr» [Prix] + [TPS] *0,075;IIf( [Numero_de_facture] =MG10*; «Expr» [Prix] + [TPS] *0,075;IIf( [Numero_de_facture] =MG11*; «Expr» [Prix] + [TPS] *0,085;IIf( [Numero_de_facture] =MG12*; «Expr» [Prix] + [TPS] *0,095;IIf( [Numero_de_facture] =MG13*; «Expr» [Prix] *0,0975;IIf([Numero_de_facture] =MG14*; «Expr» [Prix] *0,0975; «Expr» [Prix] *0,0975))))))

merci a vous

11 réponses

le meruvien Messages postés 1124 Date d'inscription vendredi 12 août 2011 Statut Membre Dernière intervention 18 août 2024 40
17 juin 2015 à 06:33
bonjour,
essaye ça:
IIf( [Numero_de_facture] = MG08* then [Expr]= [Prix] + [TPS] * 0,075
0
Bonjour,
Beaucoup des fonctions de calcul sont communes à Excel et Access, même si elles ne s'écrivent pas toujours de la même façon.
Sinon pour ton problème, il faut savoir où tu as entré ta fonction. Les calculs entrés directement dans les tables ne peuvent être qu'assez simples, sinon ça coince, alors tu dois passer par une requête. De toutes façons, les tables doivent restées les plus légères possibles, alors la saisie des calculs dans les requêtes ne pose aucun problème.
Bonne suite
0
jeffrey734 Messages postés 59 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 5 juillet 2015 3
18 juin 2015 à 00:55
merci pour l'aide j'ai essayer ta formule Meruvien mais ca ne fonctionne pas on me dit L'espression entrée comporte une fonction dont le nombre d'arguments n'est pas corect
0
le meruvien Messages postés 1124 Date d'inscription vendredi 12 août 2011 Statut Membre Dernière intervention 18 août 2024 40
18 juin 2015 à 06:00
bonjour,
a mon avis c'est le "MG08*" qui met la pagaille!!
A quoi correspond ce truc??
0
Bonjour Méruvien,
Ben alors, Où tu vas là ? Qu'est-ce que c'est cette formule ?
IIf( [Numero_de_facture] = MG08* then [Expr]= [Prix] + [TPS] * 0,075
Il y a un "Then" au milieu de la formule qui n'a rien à faire ici.

Bonjour Jeffrey,
Je te propose la formule qui serait plus simple, mais je n'ai pas compris ce qu'est le [Exp] :
IIf ( ([Numero_de_facture] like MG08*) or ([Numero_de_facture] like MG09*) or ([Numero_de_facture] like MG10*) ; «Expr» [Prix] + [TPS] *0,075; IIf ( [Numero_de_facture] =MG11*; «Expr» [Prix] + [TPS] *0,085; IIf ( [Numero_de_facture] =MG12*; «Expr» [Prix] + [TPS] *0,095; «Expr» [Prix] *0,0975 )))
Bonne suite
0
jeffrey734 Messages postés 59 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 5 juillet 2015 3
Modifié par jeffrey734 le 18/06/2015 à 22:38
Bonjour merci je viens de tester, mais ce a bloqué encore j'y ai pensé aujourd'hui au "comme"/like je crois, bien l'avoir oublié, mais on dirait que ce n'est pas que ça je vais tenter de vulgariser ma formule et d'expliquer un peu ma table

dans ma table j'ai mon champ numéro de facture qui commencent tous pas MG ensuite 08 à 15 qui est pour l'année et ensuite le -01 -02 etc. pour le numéro de cette année ou sinon on pourrait aussi tenter avec un condition avec mon champ [Date_de_facturation] qui devrait aussi pouvoir fonctionner

ensuite je voudrais que ma formule calcule
SI (le numéro de facture commence par MG08(peut importe la suite) FAIT mon PRIX + ma TPS (qui était de 5% dans mon champ TPS et qui fonctionne très bien) SINON SI ça commence par MG09 etc., ainsi de suite pour qu'il calcule mes taxes différentes pour chaque année (je suis au Québec les taxes ont beaucoup changé depuis 2008 lol)

Sinon je me demande si peut-être je ne ferai pas mieux d'abandonner cette idée et essayer de faire une table différente pour chaque année et ensuite je ne sais pas trop comment toute les rassembler dans la même avec une requête? merci de vos conseilles :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Re...,
Tu n'as pas répondu à la question de savoir si ton calcul est fait sur une table ou une requête. Je répète si il est sur une table, ce n'est pas la peine d'insister, tu n'y arriveras pas. Les champs calculés des tables ne prennent que des calculs simples, du genre 4 opérations et pas plus. POur les calculs plus complexes, il faut impérativement passer par une requête.
2) Si ton calcul est basé sur des années, pourquoi ne pas avoir, ou peut être existe-t-il déjà, un champ "Année", et après faire le calcul à partir e là; du genre
"Iif( annee < 10 ; aaaa ; Iif (annee < 11 ; bbbb ; Iif( Annee < 12 ; cccc ; dddd )))"
Et alors, faire le calcul final avec la valeur du champ calculé ci-dessus.
Vous faites des trucs compliqués, et après vous vous étonnés que ça coince, plutôt que faire des calculs par étapes successives, avec le calcul final à partir de plusieurs champs calculés successifs. Sans compté que cette méthode permet d'avancer progressivement et de vérifier à chaque étape ce qui passe et ce qui coince.
Bonne suite.
0
jeffrey734 Messages postés 59 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 5 juillet 2015 3
19 juin 2015 à 00:55
désoler j'ai du oublier la question dans ma réponse oui il est dans une table alors vous me dites que je serai mieux de passer par une requête

Je dois sélectionner une requête d'ajout? Ou mise à jour? Et ensuite je mets mon calcule a la ligne critère?

c'est vrais que je me casse peut être un peu trop la tête a tout vouloir faire d'un coup, mais j'essaye le plus de choses possible ça fais pas beaucoup de temps que je suis dans ça, ça fais partie d'un module de mon cours en informatique alors j'apprécie beaucoup votre aide merci
0
Re.....,
"une requête d'ajout? Ou mise à jour? "
Pas du tout, il faut une requête "sélection", ordinaire. Le calcul se fera à chaque fois que tu ouvres la requête, c'est prévu pour.
Pour les formulaires, ils seront construits autour des requêtes ou des tables, sans difficulté.
0
jeffrey734 Messages postés 59 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 5 juillet 2015 3
19 juin 2015 à 14:38
daccord je pense que je commence a comprendre je vais essayer de faire ca mais par la suite y a t'il un moyen pour afficher mon champ dans ma table client? ou il faudra toujours se deplacer entre les table et requete? merci
0
Il suffira que tu mettes la requête comme source de données pour le formulaire. La seule chose sera que tu devras vérifier que tu peux ajouter des données à la requête.
0
jeffrey734 Messages postés 59 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 5 juillet 2015 3
23 juin 2015 à 21:18
rebonjour désoler pour le délai je n'ai pas eu beaucoup de temps pour ma base de données j'ai essayé de créé ma requête et de créer un champ calculé dedans en choisissant ma date comme critère ça a l'aire de bien fonctionner, mais comment je fais pour la choisir comme source de donnée dans ma table principale [client] pour avoir toutes mes informations nécessaires au même endroit sachant que la source sera différente pour chaque année si je fais une requête différente pour chaque merci
0
Re...
Pas d'affolement! Tu peux utiliser ta requête directement comme source de ton formulaire. Quand tu sélectionnes la source de ton formulaire, tu sélectionnes la requête.
Pour avoir tes champs disponibles pour ton formulaire, il suffit de les mettre dans ta requête. Sans en être sûr, je crois qu'une requête peut aller jusqu'à 255 champs; ça laisse de la marge.
Si tes données sont sur des tables différentes, il suffit de les joindre par un lien pour que les données des 2 tables correspondent les unes aux autres.
0
jeffrey734 Messages postés 59 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 5 juillet 2015 3
Modifié par jeffrey734 le 5/07/2015 à 21:56
Rebonjour j'ai pris un peu de temps pour faire mes formulaire et état qui n'était pas encore prêts pour pouvoir essayer ce que vous m'avez dit seulement je suis encore un peu confus j'ai essayer de faire une requête qui sélectionne les factures de 2008 seulement comme exemple et ensuite calculer la 2em taxe de cette façon mon calcule fonctionne, mais il ne se retrouve pas dans ma table principale de client ce qui ne fonctionne pas ensuite pour mes états de client ou bien sinon faire un état pour chaque année peut être? je propose un peu ce qui me passe par la tête je me demande si peut être je devrais pas oublier mon idée de taxe automatique c'est que je me disais que ça serait plus simple pour l'utilisateur et éviterais des erreurs de calcule

pour la partie de "joindre par un lien" vous voulez dire quoi je crois qu'on n'a pas vu ça en classe merci beaucoup
0
Re-Bonjour,
"mon calcul fonctionne, mais il ne se retrouve pas dans ma table principale de client"
Le principe 1er d'une base de données est de réduire autant qu'on peut la quantité de données stockées. Ce qui implique que tout est recalculé à chaque fois. Il est donc non seulement normal de ne pas retrouver le calcul dans la table principale, mais ce serait anormal de les y retrouver.

Pour ce qui est des liens, Le mieux est est de consulter cette question, (en particulier la vue d'écran jointe):
http://www.commentcamarche.net/forum/affich-31995703-requete-access
Bonne suite
0