Je souhaiterai réaliser un ensemble d'opération spécifique (Calcul, Sélection et suppression de lignes enregistées dans des tables) au moyen d'un module Unique afin d'insèrer les résultats dans une requête Requête Résultat
Type d'opération à réaliser dans le module unique
Je sais faire les calculs et la sélection automatique grace au code de PIERRE (merci à lui)
Par contre, je n'arrive pas introduire des critères Spécifique ( If ... Then ... Else ... et la supresion de lign
dans un table )
Presentation du SBG
Pour cette opération, j'utilise trois Tables et deux Requêtes et notre module UNIQU
1) Table : Prix de Base: (Cette Table sert de base aux calculs du prix variant (Voir plus loin) et Pourcentage baisse
Elle contient deux Champs Exempl
Champ 1 : N°article : Numérique : 1
Champ 2 : Prix Unitaire de Base : Monétaire : 100
Pour l'insertion, dans une table, tu dois passer par une requête "Insertion" préenregistrée, ou bien par l'instruction
DoCmd.RunSQL "INSERT INTO TaTable ..."
Et pour finir, je te conseille vivement de ré-écrire tes fonctions. Ecrites ainsi, c'est assez difficile à suivre, avec tous ces Nz(DSum(..)) imbriqués. Personnellement, je ferais plutôt ainsi: Dim PrixUnitaire As Long Dim PrixVariantBase As Long Dim PrixVariantE As Long ... PrixUnitaire = Nz(dsum("[Prix Unitaire de Base]", "[Prix de Base]", "N_Article =" & MaN_Article)) PrixVariantBase = Nz(dsum("[Prix Variant Base]", "[Prix Variant E]", "N_Article =" & MaN_Article)) ... fnPrixVariant = PrixUnitaire + PrixVariantBase / ...
Beaucoup plus lisible à mou goût. Pense à la maintenance. Que ce soit toi, ou une autre personne, le code doit pouvoir se lire le plus facilement possible.
Cordialement.
Bonjour Sonia,
Pour t'aiguiller, car je n'ai pas décortiquer tes
procédures.
Lorsque tu écrit:
MaVariable = DSum(...)
C'est comme si tu écrivait en SQL
SELECT SUM(...) ...
Regarde dans l'aide d'Access, les différentes façon
d'interroger un domaine (DFirst, DSum, DCount, DLookup)
Donc dans ta fonction FnMeilleurPrix, tu devrais pratiquer
comme dans tes premières fonctions, par exemple:
Pour l'insertion, dans une table, tu dois passer par une
requête "Insertion" préenregistrée, ou bien par
l'instruction
DoCmd.RunSQL "INSERT INTO TaTable ..."
Et pour finir, je te conseille vivement de ré-écrire tes
fonctions. Ecrites ainsi, c'est assez difficile à suivre,
avec tous ces Nz(DSum(..)) imbriqués.
Personnellement, je ferais plutôt ainsi:
Dim PrixUnitaire As Long
Dim PrixVariantBase As Long
Dim PrixVariantE As Long
...
PrixUnitaire = Nz(dsum("[Prix Unitaire de Base]", "[Prix
de Base]", "N_Article =" & MaN_Article))
PrixVariantBase = Nz(dsum("[Prix Variant Base]", "[Prix
Variant E]", "N_Article =" & MaN_Article))
...
fnPrixVariant = PrixUnitaire + PrixVariantBase / ...
Beaucoup plus lisible à mou goût.
Pense à la maintenance.
Que ce soit toi, ou une autre personne, le code doit
pouvoir se lire le plus facilement possible.
Pour l'insertion, dans une table, tu dois passer par une requête "Insertion" préenregistrée, ou bien par l'instruction
DoCmd.RunSQL "INSERT INTO TaTable ..."
Et pour finir, je te conseille vivement de ré-écrire tes fonctions. Ecrites ainsi, c'est assez difficile à suivre, avec tous ces Nz(DSum(..)) imbriqués. Personnellement, je ferais plutôt ainsi: Dim PrixUnitaire As Long Dim PrixVariantBase As Long Dim PrixVariantE As Long ... PrixUnitaire = Nz(dsum("[Prix Unitaire de Base]", "[Prix de Base]", "N_Article =" & MaN_Article)) PrixVariantBase = Nz(dsum("[Prix Variant Base]", "[Prix Variant E]", "N_Article =" & MaN_Article)) ... fnPrixVariant = PrixUnitaire + PrixVariantBase / ...
Beaucoup plus lisible à mou goût. Pense à la maintenance. Que ce soit toi, ou une autre personne, le code doit pouvoir se lire le plus facilement possible.