Vous pouvez utiliser la fonction DSum pour calculer la somme d’un jeu de valeurs dans un jeu d’enregistrements spécifié (un domaine ). Utilisez la fonction DSum dans un module Visual Basic pour Applications (VBA), un macro, une expression de requête ou un contrôle calculé.
Par exemple, vous pouvez utiliser la fonction DSum dans une expression de champ calculé dans une requête pour calculer le total des ventes effectuées par un employé particulier sur une période donnée. Vous pouvez également utiliser la fonction DSum dans un contrôle calculé pour afficher une somme en cours d’exécution des ventes pour un produit particulier.
Syntaxe
DSum ( expr , domain [, criteria] )
La syntaxe de la fonction DSum contient les arguments suivants :
Argument |
Description |
expr |
Obligatoire. Expression qui identifie le champ numérique dont vous souhaitez totaliser les valeurs. Il peut s’agir d’un expression de chaîne identifiant un champ dans une table ou une requête, ou d’une expression qui effectue un calcul sur les données de ce champ. Dans expr, vous pouvez inclure le nom d’un champ dans une table, un contrôle sur un formulaire, une constante ou une fonction. Si expr inclut une fonction, elle peut être intégrée ou définie par l’utilisateur, mais pas une autre fonction d’agrégation de domaine ou SQL. |
domaine |
Obligatoire. Expression de chaîne identifiant le jeu d’enregistrements qui constitue le domaine. Il peut s’agir d’un nom de table ou d’un nom de requête pour une requête qui ne nécessite pas de paramètre. |
critères |
Facultatif. Expression de chaîne utilisée pour restreindre la plage de données sur laquelle la fonction DSum est exécutée. Par exemple, les critères sont souvent équivalents à la clause WHERE dans une expression SQL, sans le mot WHERE. Si critères est omis , la fonction DSum évalue expr par rapport à l’ensemble du domaine. Tout champ inclus dans les critères doit également être un champ dans le domaine ; sinon, la fonction DSum retourne une valeur Null. |
Remarques
Si aucun enregistrement ne satisfait à l’argument critère ou si le domaine ne contient aucun enregistrement, la fonction DSum renvoie une valeur Null.
Que vous utilisiez la fonction DSum dans une macro, un module, une expression de requête ou un contrôle calculé, vous devez construire l’argument critère avec soin pour vous assurer qu’il sera évalué correctement.
Vous pouvez utiliser la fonction DSum pour spécifier des critères dans la ligne Critères d’une requête, dans un champ calculé dans une expression de requête ou dans la ligne Mettre à jour vers d’un requête Mise à jour.
Remarque : Vous pouvez utiliser la fonction DSum ou Sum dans une expression de champ calculé dans un requête Opérations. Si vous utilisez la fonction DSum , les valeurs sont calculées avant que les données ne soient regroupées. Si vous utilisez la fonction Somme , les données sont regroupées avant que les valeurs de l’expression de champ soient évaluées.
Vous pouvez utiliser la fonction DSum lorsque vous devez afficher la somme d’un ensemble de valeurs à partir d’un champ qui ne figure pas dans la source d’enregistrement de votre formulaire ou état. Par exemple, supposons que vous ayez un formulaire qui affiche des informations sur un produit particulier. Vous pouvez utiliser la fonction DSum pour conserver un total en cours d’exécution des ventes de ce produit dans un contrôle calculé.
Conseil
Si vous devez conserver un total en cours d’exécution dans un contrôle sur un rapport, vous pouvez utiliser la propriété RunningSum de ce contrôle, si le champ sur lequel il est basé est inclus dans la source d’enregistrement du rapport. Utilisez la fonction DSum pour conserver une somme en cours d’exécution sur un formulaire.
Remarque : Les modifications non enregistrées apportées aux enregistrements dans le domaine ne sont pas incluses lorsque vous utilisez cette fonction. Si vous souhaitez que la fonction DSum soit basée sur les valeurs modifiées, vous devez d’abord enregistrer les modifications en cliquant sur Enregistrer l’enregistrement dans le groupe Enregistrements de l’onglet Accueil , en déplaçant le focus vers un autre enregistrement ou en utilisant la méthode Update .
Exemples
Utiliser la fonction DSum dans une expression Vous pouvez utiliser une fonction de domaine (telle que DSum) dans la ligne Mettre à jour vers d’une requête de mise à jour. Par exemple, supposons que vous souhaitiez suivre les ventes actuelles par produit dans une table Products. Vous pouvez ajouter un nouveau champ appelé SalesSoFar à la table Products et exécuter une requête de mise à jour pour calculer les valeurs correctes et mettre à jour les enregistrements. Pour ce faire, créez une requête basée sur la table Products et, sous l’onglet Création , dans le groupe Type de requête , cliquez sur Mettre à jour. Ajoutez le champ SalesSoFar à la grille de requête et tapez ce qui suit dans la ligne Mettre à jour vers :
DSum("[Quantity]*[UnitPrice]", "Order Details", _
"[ProductID] = "& [ProductID])
Lorsque vous exécutez la requête, Access calcule le montant total des ventes pour chaque produit, en fonction des informations d’une table Détails de commande. La somme des ventes de chaque produit est ajoutée à la table Products.
Utiliser DSum dans le code VBA
Remarque : Les exemples suivants illustrent l’utilisation de cette fonction dans un module Visual Basic pour Applications (VBA). Pour plus d’informations sur l’utilisation de VBA, sélectionnez Référence du développeur dans la liste déroulante en regard de Rechercher et entrez un ou plusieurs termes dans la zone de recherche.
L’exemple suivant totalise les valeurs du champ Fret pour les commandes expédiées au Royaume-Uni. Le domaine est une table Orders. L’argument critère limite le jeu d’enregistrements résultant à ceux pour lesquels ShipCountryRegion est égal à UK.
Dim curX As Currency
curX = DSum("[Freight]", "Orders", _ "[ShipCountryRegion] = 'UK'")
L’exemple suivant calcule un total à l’aide de deux critères distincts. Notez que les guillemets simples (') et les signes numériques (#) sont inclus dans l’expression de chaîne, de sorte que lorsque les chaînes sont concaténées, le littéral de chaîne est placé entre guillemets simples et la date est entourée de signes dièse.
Dim curX As Currency
curX = DSum("[Freight]", "Orders", _ "[ShipCountryRegion] = 'UK' AND _ [ShippedDate] > #1-1-95#")