ACC2000 : exemple de fonction pour créer une somme en cours d'exécution sur un formulaire

Traductions disponibles Traductions disponibles
Numéro d'article: 210338 - Voir les produits auxquels s'applique cet article
Modéré : nécessite macro base, codage et compétences de l'interopérabilité.

Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique comment créer une fonction définie par l'utilisateur exemple pour calculer un cumul dans un formulaire.

Plus d'informations

Une pour calculer un cumul dans un formulaire consiste à utiliser la fonction DSum() . Pour plus d'informations sur l'utilisation de la fonction DSum() pour calculer un cumul dans un formulaire, consultez l'article suivant dans la Base de connaissances :
210495 ACC2000 : comment utiliser DSum pour créer une somme en cours d'exécution sur un formulaire
L'utilisation de la méthode démontrée dans cet article présente les avantages suivants sur l'aide de la fonction DSum() :
  • La méthode présentée dans cet article ne nécessite pas un champ séquentiel. Un champ de code séquentiel obligatoire vous limite à calculant une somme en cours d'exécution utilisant un seul classement de vos enregistrements.
  • L'utilisation de la méthode démontrée dans cet article est beaucoup plus rapide qu'utilisant la fonction DSum() pour calculer un cumul.

Création et utilisation de la fonction RunSum()

Microsoft fournit des exemples de programmation pour illustration uniquement, sans garantie explicite ou implicite. Cela inclut, mais n'est pas limité aux garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et les outils qui sont utilisés pour créer et déboguer des procédures. Les techniciens du support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne sont pas modifier les exemples en vue de fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques. Remarque : le code d'exemple dans cet article utilise des objets Microsoft Data Access. Pour ce code s'exécute correctement, vous devez référencer la bibliothèque d'objets Microsoft DAO 3.6. Pour ce faire, cliquez sur Références dans le menu Outils dans Visual Basic Editor et assurez-vous que la case à cocher Bibliothèque d'objets Microsoft DAO 3.6 est activée.

  1. Ouvrez la base de données exemple Comptoir.mdb sera modifiée. Créez un nouveau module et tapez la ligne suivante dans la section Déclarations si elle n'est pas déjà présente :
    Option Explicit
  2. Tapez le code suivant dans le module :
    Function RunSum (F As Form, KeyName As String, KeyValue, _
      FieldToSum As String)
    '***********************************************************
    ' FUNCTION: RunSum()
    ' PURPOSE:  Compute a running sum on a form.
    ' PARAMETERS:
    '    F        - The form containing the previous value to
    '               retrieve.
    '    KeyName  - The name of the form's unique key field.
    '    KeyValue - The current record's key value.
    '    FieldToSum - The name of the field in the previous
    '                 record containing the value to retrieve.
    ' RETURNS:  A running sum of the field FieldToSum.
    ' EXAMPLE:  =RunSum(Form,"ID",[ID],"Amount")
    '***********************************************************
       Dim RS As DAO.Recordset
       Dim Result
    
       On Error GoTo Err_RunSum
    
       ' Get the form Recordset.
       Set RS = F.RecordsetClone
    
       ' Find the current record.
       Select Case RS.Fields(KeyName).Type
          ' Find using numeric data type key value?
          Case DB_INTEGER, DB_LONG, DB_CURRENCY, _
             DB_SINGLE, DB_DOUBLE, DB_BYTE
             RS.FindFirst "[" & KeyName & "] = " & KeyValue
          ' Find using date data type key value?
          Case DB_DATE
             RS.FindFirst "[" & KeyName & "] = #" & KeyValue & "#"
          ' Find using text data type key value?
          Case DB_TEXT
             RS.FindFirst "[" & KeyName & "] = '" & KeyValue & "'"
          Case Else
             MsgBox "ERROR: Invalid key field data type!"
             GoTo Bye_RunSum
       End Select
    
       ' Compute the running sum.
       Do Until RS.BOF
          Result = Result + RS(FieldToSum)
    
          ' Move to the previous record.
          RS.MovePrevious
       Loop
    
    Bye_RunSum:
       RunSum = Result
       Exit Function
    
    Err_RunSum:
       Resume Bye_RunSum
    
    End Function
  3. Créez la requête suivante en fonction de la table Commandes et la requête Sous-totaux commande. Enregistrer la requête en tant que qryOrders :
       Query: qryOrders
       ------------------------------------------------------
       Type: select query
       Join: Orders.[OrderID] <->; [Order Subtotals].[OrderID]
    
       Field: OrderID
          Table: Orders
          Sort: Ascending
       Field: Subtotal
          Table: Order Subtotals
  4. Utiliser l'Assistant Formulaire pour créer un nouveau formulaire basé sur la requête qryOrders. Inclure les champs du formulaire. Dans l'écran suivant cliquez sur tabulaire .
  5. Ajouter une zone de texte avec les propriétés suivantes au nouveau formulaire :
       Name: RunningSum
       ControlSource: =RunSum([Form],"OrderID",[OrderID],"Subtotal")
       Format: Currency
  6. Enregistrez le formulaire et puis affichez-la en mode formulaire.
  7. Sélectionnez les enregistrements différents utilisant le sélecteur d'enregistrement. Notez que le champ Cumul affiche un total cumulé en fonction du champ sous-total.

Propriétés

Numéro d'article: 210338 - Dernière mise à jour: mercredi 11 octobre 2006 - Version: 2.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Access 2000 Standard Edition
Mots-clés : 
kbmt kbhowto kbprogramming kbusage KB210338 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 210338
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com