2010-10-06 4 views
1

J'ai un formulaire d'achat qui a un sous-formulaire continu qui montre les éléments de ligne pour cet achat. Chaque élément de campagne doit inclure une zone de texte qui affiche la somme d'un certain nombre d'enregistrements associés dans une table pour cet élément de campagne.MS Access somme des enregistrements liés

(Chaque élément de campagne est affecté à un ou plusieurs buts spécifiques, par exemple, un élément de campagne indique que 100 widgets sont commandés, la table d'allocation indique que 20 widgets sont prévus à cet effet et 40 sont à cet effet. boîte de texte doit indiquer que 60/100 sont alloués.)

J'ai écrit cela dans VBA pour l'événement OnCurrent du formulaire, mais cela se produit uniquement lorsque la première "copie" de la forme continue reçoit le focus. Ensuite, toutes les autres "copies" du formulaire affichent les mêmes valeurs dans la zone de texte. J'ai alors réalisé que je pourrais peut-être le faire dans le cadre de la requête pour le formulaire. Chaque fois que j'ajouter ... Somme (Quantité) AS TotalAllocations à la requête SQL, je reçois l'erreur suivante:

"You tried to execute a query that does not include the specified expression 'VendorPartNumber' as part of an aggregate function."

(. VendorPartNumber est un champ pour les dossiers qui apparaissent sur la forme continue)

Quelqu'un peut-il expliquer comment le faire avec succès dans une vue de concepteur de requêtes/SQL ou avec VBA?

Mis à part: Idéalement, il serait bien d'avoir ceci comme une sous-forme continue sur un sous-formulaire continu. Cependant, Access n'autorise pas les sous-formulaires continus sur les sous-formulaires continus.

Répondre

1

Si vous allez dans SQL SUM, vous devez inclure une clause GROUP BY pour les colonnes non agrégées, telles que:

SELECT VendorPartNumber, Sum(Quantity) as TotalAllocations 
    FROM YourTable 
    GROUP BY VendorPartNumber 
+0

Excellent! Cela a fonctionné à merveille. Merci pour la réponse rapide! – Tim