Bonjour,
Je developpe actuellement un petit projet sous Access pour gérer et calculer des primes de déplacement.
Le calcul de la prime n'est pas très compliqué et se fait sous certaines conditions (cas différent si c'est un dimanche et différencier si le déplacement à lieu à l'étranger ou non).
De plus, la prime se calcul par jour et selon les conditions rencontrés par l'employé en déplacement.
J'ai créer mes tables, les relations et les requètes sans problèmes. J'ai entamé la création d'un formulaire qui me permettrait de saisir les informations concernant un déplacement et un sous formulaire affichant les données relatives aux jours du déplacement.
Formulaire en "Mode Formulaire"
Formulaire en "Mode Création"
Comme on peut le voir en mode Création. L'ajout de Jour se fait de manière dynamique dans la partie "Détail" (étant donné que les déplacements ont rarement lâ même durée.) Et donc pour faire le calcul de la Prime sans que celles ci ne soit mélangé entre les différents enregistrement, j'utilise un RecordSet dans une fonction VBA.
Seulement, ce recordset reprend la requête de mon sous formulaire et en modifie les données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Function PrimeC() As Double Dim Base, Calcul As Double Dim D As DAO.Recordset Dim myDB As Database Dim Nya As Integer Nya = IdJour Set myDB = CurrentDb Set D = myDB.OpenRecordset("Req_Jour3", DB_OPEN_DYNASET) Base = 70 D.MoveFirst Do Until (D.EOF) If (D!IdJour = Nya) Then If (Dimanche = 0) Then Calcul = Base + TauxZone + TauxCond + TauxDiffVie D.Edit D!Prime = Calcul D.Update PrimeC = D!Prime End If If (Dimanche = -1) Then Calcul = D![TauxH] * NbHeure D.Edit D!Prime = Calcul D.Update PrimeC = D!Prime End If End If D.MoveNext Loop D.Close If (IsNull(PrimeC)) Then PrimeC = 0 End If End Function
J'ai donc le droit à un message d'avertissement qui me previent qu'il y a conflit d'utilisateur.
Je sais que l'erreur vient du fait que je modifie mes données à l'aide du RecordSet. Mon problème, c'est que je n'ai pas trouvé d'alternative aussi performante que le recordset. En effet, quand je passe par les champs de mon sous formulaire, étant donné que ceci se dupplique, il y a des gros caffouillages de données et je me retrouve avec des primes érronées et en plus aux mauvais endroits.
Voilà, j'ai essayé d'être aussi claire, concice et précise que possible.
Maintenant, comment pallier ce problème ?
Partager