OVH Cloud OVH Cloud

Question au sujet d'un code de module

5 réponses
Avatar
Sonia
Bonjours,

Est il possible de réaliser deux fonctions au sien d'un même Module ? Ces deux fonctions sont dépendantes l'une de l'autre.

Exemple : La première fonction fait un calcul. La seconde fonction utilise le calcul fait par la première, afin de réaliser, une opération de sélection du plus petit Calcul fait .

En bref il s'agit de regrouper deux modules de fonction en un seul et dont le résultat s'affiche dans une seule requête au lieu de deux.

Exemple : Avec deux modules et deux requêtes
Requête Calcul :
N_Article : Calcul
1 15
1 17
1 15.5
1 14
2 16
2 15.75
2 15.25

Requête Meilleur Calcul

N_Article Meilleur Calcul
1 14
2 15.25

Avec la question ci-dessus, il n' y aura juste qu' une seule requête

Requête Meilleur Calcul
N_Article Meilleur Calcul
1 14
2 15.25

Est ce Possible ?
Merci d'avance
Bisous Sonia!!!!

5 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

Je dirais que oui c'est possible mais que finalement ta 2ème fonction
ne sert à rien....

Il te suffit au lieu d'utilier une 2ème fonction, de faire directement
une requête de regroupement sur la première en choisissant
comme regroupement sur le champ Calcul : "min"

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Sonia" a écrit dans le message news:

Bonjours,

Est il possible de réaliser deux fonctions au sien d'un même Module ? Ces deux fonctions
sont dépendantes l'une de l'autre.


Exemple : La première fonction fait un calcul. La seconde fonction utilise le calcul
fait par la première, afin de réaliser, une opération de sélection du plus petit Calcul

fait .

En bref il s'agit de regrouper deux modules de fonction en un seul et dont le résultat
s'affiche dans une seule requête au lieu de deux.


Exemple : Avec deux modules et deux requêtes
Requête Calcul :
N_Article : Calcul
1 15
1 17
1 15.5
1 14
2 16
2 15.75
2 15.25

Requête Meilleur Calcul

N_Article Meilleur Calcul
1 14
2 15.25

Avec la question ci-dessus, il n' y aura juste qu' une seule requête

Requête Meilleur Calcul
N_Article Meilleur Calcul
1 14
2 15.25

Est ce Possible ?
Merci d'avance
Bisous Sonia!!!!


Avatar
Sonia
Je l ai fait ca. Mais cela n'élimine pas tous les calcul perdant. Ceci provoque qu'un classement. A moins que je me soit trompé.

Résultat
N_Article Meilleur Cal
1 14 Les calculs éliminées 15 , 17, 15.5 ne s'affiche pas dans le résultat
Avatar
Sonia
Je l ai fait ca. Mais cela n'élimine pas tous les calculs perdant.
Ceci provoque qu'un classement. A moins que je me soit trompé.

Résultat
N_Article Meilleur Cal
1 14
Les calculs éliminées 15 , 17, 15.5 ne doivent pas s'afficher dans le résultat

Ceci fonctionnent avec deux modules et deux requêtes. Voir ci dessous

Module 1 Calcul

Function fnCal(N_Article As Long) As Double
'MaN_Article = Nz(MaN_Article)
'MaN_Article = Val(MaN_Article)
fnCal = Nz(DSum("[Cote1]", "[T1]", "N_Article =" & MAN_Article)) + Nz(DSum("[Cote2]", "[T1]", "N_Article =" & MAN_Article)) + Nz(DSum("[Cote3]", "[T1]", "N_Article =" & MAN_Article))
End Function

Requête : A
N_Article : Cal:fnCal([N_Article])
1 15
1 15.5
1 17
1 14
2 16
2 15.75
2 15.25
Module 2 Meilleur Cal

Function fnM_Cal(N_Article As Long) As Double
'MaN_Article = Nz(MaN_Article)
'MaN_Article = Val(MaN_Article)
fnM_Cal = Nz(DMin("[Cal]", "[A]", "N_Article =" & MAN_Article))
End Function

Requête : B
N_Article : Meilleur Cal:fnM_Cal([N_Article])
1 14
2 15.25
Voila

Maintenant
Comment regrouper le code de ces deux modules en un seul code pour un module unique,
donnant le même Résultat que la requête B ?

Pouvez-vous me donner le code?

Merci d'avance
Avatar
Jessy Sempere [MVP]
Re,

En fait, garde ta requête A et ton module 1
Ensuite il te suffit de faire une requête B basée sur la A, genre :

SELECT N_Article, Min([Cal]) AS MeilleurCal
FROM RequêteA
GROUP BY N_Article;

Du coup, nul besoin de fusionner tes 2 codes...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Sonia" a écrit dans le message news:

Je l ai fait ca. Mais cela n'élimine pas tous les calculs perdant.
Ceci provoque qu'un classement. A moins que je me soit trompé.


Avatar
Sonia
Je crois que l'on a un problème de compréhension. Ce que tu me dis je l'ai déjà fait. Mais ce que je voudrais c'est : Avoir le résultat du b dans le A , C'est à dire à la place du A. Ce qui élimine une requête la : La b

Au lieu d'avoir un listing de calcul par N_Article dans la requête A. Je voudrais avoir juste les meilleurs Calcul dans la requête A Par N_Article, et pas de requête b. Je pensais qu en fusionnant les deux codes. Je pourrais n'avoir qu'une requête

Sinon puis je t'envoyer une Bd en zip inférieure à 100 ko. Afin que tu vois.

Merci d'avance