Mise à jour de la table avec le calcul de champ d'un formulaire dans Access
Je suis très nouveau à l'Accès et je suis en train de calculer le salaire Gagné de l'employé, fondé sur le pas de jours de travail.
Pour cela, j'ai créé un Formulaire de saisie de la pas de jours de présence et de calculer le salaire gagné à la lumière des commentaires.Maintenant je veux passer ce salaire gagné en valeur de la zone de table.
Pouvez-vous s'il vous plaît aider moi
- Prendre le résultat de ce calcul est puis en VBA exécuter une requête mise à jour pour affecter la valeur correspondante dans le tableau.
DoCmd.RunSQL
peut être utilisé en VBA pour exécuter une instruction SQL. Si vous voulez plus d'aide au-delà de ce que nous aurons besoin de plus d'informations. - J'ai essayé de l'écrire dans l'Après Événement de mise à Jour du champ calculé de la Forme, mais n'est pas mise à jour dans ma table.Pouvez-vous pleaase corrigez-moi si je me trompe trouver de l'aide moi comment l'écrire
Vous devez vous connecter pour publier un commentaire.
Tout d'abord de la maison; de même Avec vos noms de champ, il est préférable de ne pas avoir d'espace entre eux, il est beaucoup plus facile de code (à partir de votre chaîne SQL il semble que vous pouvez avoir fait cela, mais juste de la vérification). Aussi, évitez d'utiliser des mots réservés en tant que noms de domaine par exemple de ne pas utiliser le Nom comme un nom de champ, il y a une liste de Visual Basic mots réservés ici qui couvrira tout le VBA et un peu plus.
Deuxièmement, il semble que vous êtes le stockage d'un champ calculé - EarnedSalary est un calcul de BasicPay, TotalWorkingDaysInMonth et ActualWorkedDays. Généralement le stockage des champs calculés est considéré comme un non-non, réf Allen Browne page sur les champs calculés. Sur cette page, Allen donne quelques conseils sur les champs calculés qui peut aider, surtout si vous décidez que vous ne voulez l'enregistrer et l'utiliser Access 2010 (je ne suis sur de 2007...).
Quant à votre question, vous n'avez toujours pas me dire où est votre erreur a été de sorte qu'il est difficile de cerner le problème. Ma conjecture est que vous appelez la mise à jour Sous au mauvais endroit - vous souhaitez mettre à jour EarnedSalary mais vous appelez le processus dans le Aprèsmaj de ce contrôle, donc le code ne sera pas le feu jusqu'à ce que vous mettez à jour le champ le code est destiné à la mise à jour. Le code doit être dans le Aprèsmaj de ActualWorkedDays.
De plus, il semble que vous utilisez un formulaire lié qui voudrait dire que vous n'avez pas besoin d'utiliser le SQL de mise à jour, une solution semblable à Allen exemple suffit:
Sur le formulaire si vous avez un contrôle pour chacun des domaines impliqués dans le calcul:
Assez génériques que vous n'avez pas donné beaucoup de détails mais quelque chose comme cela dans la AfterUpdate devrait fonctionner:
Assumer les contrôles sur le formulaire sont les suivants:
txtEmpID pour l'ID de l'employé,
txtHourlyRate pour ce que de multiplier le nombre ou la heures par,
txtHoursWorked que ce que vous entrez comme des heures de travail
Je serais probablement chercher à enregistrer le nombre d'heures travaillées et le taux horaire et calculer le salaire à la volée plutôt que de stocker un nombre calculé. Ou stocker les heures et les de total et calc le taux horaire si nécessaire.