Bonjour,
J'ai créé un état avec lequel je veux afficher l'historique de carrière et l'ancienneté pour les 3 critères suivants : Corps, Grade, Echelon pour chaque personne.
Rmq : Cet Etat a pour source de données une requête dynamique trié par ordre décroissant rqtDynamique
Dont voici une image
Dans le rectangle Ancienneté j'appelle la fonction ObtenirValeur dont le code est ci-dessous.
Le résultat est complétement erroné, le résultat attendu devrait être :
Corps : 16 ans 0 mois 3j
Grade : 12 ans 6 mois 3j
Echelon : 0 an 11 mois 29j
J'espère être clair dans mes explications, sinon n'hésitez pas à me poser des questions.
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 ObtenirValeur(ByVal ValeurEntree As String) Dim strValeurRetour As String Dim strValeurSuivante As String Dim Rst As DAO.Recordset Dim Db As DAO.Database Dim Sql As String strValeurRetour = "" 'Instancie la base de données Set Db = CurrentDb 'Ouvre curseur retournant le résultat de la requête: rqtDynamique Set Rst = Db.OpenRecordset("rqtDynamique") With Rst If Not .EOF Then ' Recherche comparative paramètre ValeurEntree avec les valeurs suivantes du même champ Do While Not .EOF ' Récupérer la valeur courante des champs ChampRetour et ChampCritere strValeurRetour = .Fields("ChampRetour") strValeurSuivante = .Fields("ChampCritere") ' Si cette valeur courante est différente de la suivante alors ' revenir à la valeur précédente et récupérer la valeur de retour If strValeurSuivante <> ValeurGradeEntree Then .MovePrevious strValeurRetour = .Fields("ChampRetour") ' Quitter la boucle DO Exit Do End If .MoveNext Loop End If End With 'Libération des objets Rst.Close Db.Close Set Rst = Nothing Set Db = Nothing AnciennetéGrade = strValeurRetour End Function
J'espère que vous pourrez m'aider.
Merci
Partager