Iif dans requête ou VB?

Fermé
lemain Messages postés 4 Date d'inscription lundi 21 mars 2011 Statut Membre Dernière intervention 21 mars 2011 - 21 mars 2011 à 14:56
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 - 21 mars 2011 à 19:23
Bonjour,

j'ai une bd access (97) dans laquelle je crée via une requête, une table qui affiche un résultat selon calcul de valeurs.

table Contrôles comprenant:
id_Contrôle, Valeur 1, Valeur 2, Valeur 3 (qyi servent de référence pour le calcul)

table Résultats comprenant:
date,
id_Contrôle,
Valeur brute (que je rentre manuellement)

table Résultats analyse construite via requête
date,
id_Contrôle,
Valeur brute,
résultat du mois en cours => dans field:"Résultat du mois en cours": IIf(Résultats.[Valeur brute]=0 And Résultats.[Valeur autre] Is Null;"soleil";IIf(Résultats.[Valeur brute]<15 And Résultats.[Valeur autre] Is Null;"assez satisfaisant";IIf(Résultats.[Valeur brute]>15 And Résultats.[Valeur autre] Is Null;"peu satisfaisant";"insatifsfaisant")))

Question:

j'ai un calcul différent selon l'id_Contrôle, comment intégrer pour chaque id_Contrôle un calcul différent? Faut-il passer par du VB? ou puis-je faire quelque chose du genre: "iif [id_contrôle] then.. ou exécuter une sous-requête?

Merci par avance pour votre aide en espérant être suffisamment claire?

2 réponses

Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
Modifié par Jean_Jacques le 21/03/2011 à 16:28
Bonjour lemain,


La solution "iif [id_contrôle] ..... est viable, à condition que la liste des id_controle ne soit pas excessive.
Car il faut prévoir chacun des cas ..... et rédiger la condition Iff adaptée a chacun d'entre-eux.


Cordialement
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
0
lemain Messages postés 4 Date d'inscription lundi 21 mars 2011 Statut Membre Dernière intervention 21 mars 2011
21 mars 2011 à 16:58
Merci Jean_Jacques pour ta réponse.
Ce qui me manque:
j'ai une 15e de contrôles pour lesquels j'applique un calcul différent.
Comment gérer cela automatiquement? Je mets les valeurs qui correspondent à "satisfaisant", peu satisfaisant, etc..
J'ai une table dans laquelle je rentre les résultats mensuellement ("valeur brute" ).
Je dois comparer la valeur brute aux valeurs de calcul.
le résulat sera dans une table affichant par mois, satisfaisant ou peu satisfaisant: et cela je voudrais que ce soit automatique. (ça m'évite de regarder toujours mes fiches et me planter dans mon interprétation)
Merci pour ta réponse si tu as une idée.
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
Modifié par Jean_Jacques le 21/03/2011 à 19:30
Malheureusement, je ne dispose que de ACCESS 2000. Je ne suis donc pas en mesure d'expérimenter des solutions dans le même contexte que le vôtre.
A priori la solution la plus évidente me semble être un code du type :


If RéfOpération = 1 And ((PrixUnitaire * Quantité) / 100 * 0.7) <= 9.9 Then
Rem Forms!saisie.Refresh
'1 Calcul des opérations sur Achat
Me!Montant_Brut = (Me!PrixUnitaire * Me!Quantité)
Me!Commission = 9.9
Me!Montant_Net = Format(([Montant_Brut]) + ([Commission] + [Frais]), "##,##0.00")
'Commentaire automatique inséré dans le champ Remarque
If IsNull(Me!Remarque) Then
Me!Remarque = Me!Remarque & "/" & (Me!RéfTransaction) & "/ " & (Me!RéfOpération) & " /" & (Me!PrixUnitaire) & "/" & (Me!Quantité) & "/Transaction saisie le : " & Date & " " & Me!Code & " " & "Vérification : "
End If

ElseIf RéfOpération = 2 And ((PrixUnitaire * Quantité) / 100 * 0.7) <= 9.9 Then
'Forms!saisie.Refresh
' 2 Calcul des opérations sur Vente
Me!Montant_Brut = (PrixUnitaire * Quantité)
Me!Commission = 9.9
Me!Montant_Net = Format(([Montant_Brut]) - ([Commission] + [Frais]), "##,##0.00")
'Commentaire automatique inséré dans le champ Remarque
If IsNull(Me!Remarque) Then
Me!Remarque = Me!Remarque & "/" & (Me!RéfTransaction) & "/ " & (Me!RéfOpération) & " /" & (Me!PrixUnitaire) & "/" & (Me!Quantité) & "/Transaction saisie le : " & Date & " " & Me!Code & " " & "Vérification : "
End If

Mais je n'en suis pas totalement convaincu.....
Pour conclure, je vous invite à consulter le site : https://access.developpez.com/
qui est très riche en astuces et autres ficelles de programmeurs ...

Cordialement
0