Bonjour.
Non merci pour la BD, je ne suis pas equipe pour chez moi.
Bien revenons a tes moutons :-).
Idealement il ne faut pas stocker le resultat d'un caclul dans une table.
Il est recommande de faire le calcul a partir des etapes et d'afficher le solde.
Donc on devrait avoir quelque part quelque chose comme :
tblGestionPoint
ClefGestionPoint
ClefPersonne
DateGestionPoint
QtePoint (+/-)
Et faire la somme de tous les QtePoint de tblGetsionPoint pour une personne jusqu'a la date donnees.
Cela ne change pas grand chose a la maniere de le calculer mais cela permet d'avoir des donnees qui sont sures.
Car si tu changes une des valeurs d'ajout ou de retrait SANS passer par tes formulaires, tu peux te retrouver avec un solde faux.
Pour ton second probleme : il faut avoir quelque part dans la BD l'info sur le changement de profil.
Apres le calcul est assez simple :
- Initialiser la date de debut de profil annuel (si j'ai bien compris, par defaut le 1 janvier de l'annee)
- Trouver la date de changement de profil de cette personne pour cette annee si elle existe, superieure a la date de debut de profil courant.
- Si on trouve cette date, calculer le nombre de mois depuis la date de debut de statut a la date de changement.
- Recuperer le nombre de point de l'annee en function du profil.
- Calculer le nombre de point obtenu au prorata : NbMois / 12 * NbPointAnnee.
- Si tu as une table des mouvements detailles, ecrire cette dotation.
- Sinon additionner en memoire.
- Changer la date de debut de profil pour la nouvelle date.
- Boucler pour trouver la prochaine date de changement de profil ou la fin de l'annee.
Avant d'aller plus loin, il serait plus facile de faire le calcul si on avait le debut et la fin dans le meme enregistrement.
Donc pour les profils ca ressemblerai a cela :
tblChangementProfil
ClefChangementProfil
DateDebutProfil
DateFinProfil (pour le profil actif tu peux mettre 9999/12/31 comme cela c'est toujours valide).
CodeProfil
Avec ces infos le calcul du nombre de mois et de la proportion est instantane.
Est-ce une modification envisageable pour toi ?
Sinon, ma solution sera plus facile a implanter en VBA qu'en SQL.
A+
Partager