Question

J'ai une table dans MS Access 2007 avec 4 champs.

  • Coût de la main-d'œuvre
  • Heures de travail
  • TVA
  • total

Comment multiplier les "heures de travail" par "le coût de la main-d'œuvre", ajouter le "TVA" et afficher la réponse sous "Total"

Où placerais-je des formules?, dans un formulaire, une requête ou un tableau?

Merci beaucoup pour toute aide

Scott

Était-ce utile?

La solution

Il existe également le moyen de le faire pour les nuls (c'est-à-dire pas SQL): Commencez par supprimer de votre tableau le total de votre colonne. Pour cet exercice, supposez que le nom de votre tableau est "Travail". .

Créez maintenant une nouvelle requête et affichez-la en mode Création, ajoutez tous les champs de votre table Travail (pour vérifier que tout fonctionne bien), sélectionnez un champ vide, cliquez avec le bouton droit de la souris et sélectionnez "Construire". de la liste déroulante. Vous devriez maintenant avoir une fenêtre Générateur d’expression.

Saisissez le nom de votre champ calculé, par exemple. travailTotal, suivez-le avec un deux-points ":" Sélectionnez ensuite les noms de champs que vous souhaitez ajouter dans le menu Tables situé dans le coin inférieur gauche de la fenêtre Générateur de formules, puis double-cliquez sur chacun. Chaque champ apparaîtra dans le générateur d’expression après le "Total:". Remplacez maintenant chaque " & # 171; Expr & # 187; " avec un "+". Vous devriez voir ceci dans le constructeur d'expression: "travailTotal: [main-d'œuvre]! [Coût de la main-d'œuvre] + [main-d'oeuvre]! [Heures de main-d'œuvre] + [main-d'oeuvre]! [Vat]". Cliquez sur OK et lancez la requête. Si tout va bien, le total de la colonne affichera les résultats.

Autres conseils

Vous n'avez pas besoin du " Total " colonne selon toute probabilité.

Vos requêtes ou vos rapports ressembleront probablement à ceci:

SELECT [Total] = [Labour Cost] * [Labour Hours] + [VAT]

Vous pouvez utiliser le même type de formule dans les contrôles de vos formulaires ou rapports.

Si vous devez réellement mettre à jour les données de la colonne Total:

UPDATE YourTableName SET [Total] = [Labour Hours] * [Labour Cost] + [VAT]


Une BEAUCOUP mieux serait de supprimer complètement la colonne Total de votre tableau et de créer une requête:

SELECT [Labour Cost], 
       [Labour Hours], 
       [VAT], 
       [Labour Hours] * [Labour Cost] + [VAT] AS [Total]
FROM YourTableName

Cette approche est préférée car elle vous évite de placer accidentellement de mauvaises informations dans la colonne Total. En général, les données peuvent très facilement être corrompues si vous ne faites pas attention et peuvent être une vraie douleur (voire impossible) à réparer. Je vous suggérerais google "Normalisation de la base de données". et lisez un peu dessus - cela vous aidera énormément.

  1. concernant votre% de TVA, j'espère que je ne déclare pas l'évidence, mais vous devriez entrer une décimale, par exemple. .175 soit 17,5%

  2. Vous ne pouvez pas simplement ajouter un pourcentage, il doit être multiplié par quelque chose. Et vous devez inclure 100% du montant initial. Donc, si vous voulez ajouter 17,5%, vous devez multiplier par 1,175. Donc, en supposant que: i) vous voulez que le 100% soit automatiquement inclus (c’est-à-dire que vous n’aurez qu’à taper 0,175) et que ii) la TVA devrait être ajoutée au montant total, et que iii) en sélectionnant " vous voulez dire que vous souhaitez que la TVA soit demandée chaque fois que la requête est exécutée; Ensuite, votre formule devrait être:

Total: ([Frais généraux]! [Coût de la main-d'œuvre] * [Frais généraux]! [Heures de la main-d'œuvre] + [Coût du matériel]) * (1+ [entrer la TVA en tant que montant décimal?])

Créer une nouvelle requête.

ajoutez votre table

ajoutez vos trois champs non-totaux à la requête

dans un nouveau champ, tapez:

total: [VAT] + [Labour Hours] * [Labour Cost]

exécuter la requête

Scott a dit:

  

fondamentalement, je veux juste faire la   calculs afin que je puisse afficher la   total à l'écran et dans un rapport.

Comme certains l'ont suggéré, vous pouvez effectuer le calcul dans une requête enregistrée et l'utiliser comme source d'enregistrement pour votre rapport et votre formulaire.

Mais je vous suggérerais de ne pas le faire. Je suggérerais que vous fassiez les calculs le plus tard possible. Pour un rapport, cela signifierait que vous auriez un contrôle sur votre rapport ayant pour source de contrôle le calcul que vous souhaitez effectuer. De cette façon, elle est effectuée uniquement pour les lignes imprimées au moment où la page est formatée.

Je suggérerais la même chose pour un formulaire sauf si vous souhaitez trier ou filtrer le champ total. Les champs calculés sur les formulaires ne peuvent pas être utilisés pour le tri / filtrage et peuvent gêner leur affichage dans certaines situations. Dans ce cas, vous ne tiendriez pas compte de mon conseil d’éviter de les mettre dans la requête / source d’enregistrements, car vous avez une bonne raison de la calculer pour toutes les lignes avant l’affichage réel des données.

Mais en général, ne placez pas de calculs dans une source d’enregistrement sur laquelle vous n’allez pas opérer en tant que groupe (filtrage, tri, regroupement).

Vous pouvez le placer sous forme de champ calculé, dans la requête ou sur le formulaire. Chaque fois que cela a du sens, est simple et a le bon niveau de réutilisation. Si le calcul est spécifique à un formulaire ou à une vue des données, faites-le là ou dans la requête.

Dans ce cas, vous pouvez prévoir que le total sera une valeur souvent utilisée et appliquée logiquement à la ligne. Il est donc approprié d’en faire un champ calculé. Les champs calculés ont l’avantage de pouvoir (dans la plupart des systèmes, ne pas être sûr de MSAccess) qu’ils peuvent être redéfinis uniquement lorsque les données sont modifiées.

Si vous vous entraîniez, dites le rapport quantité / délai de livraison, ce serait plutôt quelque chose que je mettrais dans la requête pour le formulaire / rapport spécifique, car il ne sera jamais réutilisé et pourrait calcul lourd.

Je choisirais généralement de faire un calcul dans la requête, à moins que cela ne repose sur le résultat d'un autre calcul. Dans ce cas, le faire dans la requête risquerait d'être un peu compliqué, faites-le sous la forme / le code.

Donc, en résumé, chaque fois que cela est approprié pour ce calcul.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top