Bonjour,
Je souhaite archiver les modifications effectuées sur les champs (date, texte) d'un formulaire entre le moment où il a été ouvert et sa fermeture.
Pour cela j'utilise deux recordsets l'un avec les données de départ et l'autre avec les données à la femreture (qui ont donc pu être modifiées). Je compare champ par champ. Cela marche lorsque je modifie un champ non vide mais lorsque je vide un champ de son contenu ou que j'écris dans un champ initialment vide, je n'arrive pas à sauvegarder les modifications dans ma table archive : T_Histo.
Je ne sais donc pas comment faire pour effectuer un archivage de la modification dans ces deux cas.
J'ai essayé d'ajouter deux conditions "If .... then" avec comme critère empty et not empty mais rien à faire. J'ai aussi essayé avec "" et Null mais pas mieux.
Pourriez-vous m'aider à résoudre ce problème. Voici le code que j'utilise :
Merci beaucoup par avance.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 'Recordset avec les données à la fermeture (qui ont pu etre modifiées) Set rs = db.OpenRecordset("T_Temp_projects", dbOpenDynaset) 'Recordset avec les données initiales à l'ouverture de mon form Set rs2 = db.OpenRecordset("T_Projects", dbOpenDynaset) rs2.FindFirst ("project_ID = " & Me.project_ID.Value) For i = 1 To 18 If (rs.Fields(i).Value = Empty) And (rs2.Fields(i).Value <> Empty) Then ' recordset qui me permet d'archiver la modif dans ma table T_Histo Set rs3 = db.OpenRecordset("T_Histo", dbOpenDynaset) rs3.AddNew rs3.Fields("project_histo_Id") = Me.project_ID.Value rs3.Fields("modif_date") = Now() rs3.Fields("resource_histo_Id") = Id rs3.Fields("modified_field") = rs2.Fields(i).name rs3.Fields("old_value") = CStr(rs2.Fields(i).Value) rs3.Update rs3.Close rs2.Edit rs2.Fields(i).Value = Null rs2.Update End If If (rs.Fields(i).Value <> Empty) And (rs2.Fields(i).Value = Empty) Then Set rs3 = db.OpenRecordset("T_Histo", dbOpenDynaset) rs3.AddNew rs3.Fields("project_histo_Id") = Me.project_ID.Value rs3.Fields("modif_date") = Now() rs3.Fields("resource_histo_Id") = Id rs3.Fields("modified_field") = rs2.Fields(i).name rs3.Fields("new_value") = CStr(rs.Fields(i).Value) rs3.Update rs3.Close rs2.Edit rs2.Fields(i).Value = rs.Fields(i).Value rs2.Update End If If rs.Fields(i).Value <> rs2.Fields(i).Value Then Set rs3 = db.OpenRecordset("T_Histo", dbOpenDynaset) rs3.AddNew rs3.Fields("project_histo_Id") = Me.project_ID.Value rs3.Fields("modif_date") = Now() rs3.Fields("resource_histo_Id") = Id rs3.Fields("modified_field") = rs2.Fields(i).name rs3.Fields("old_value") = CStr(rs2.Fields(i).Value) rs3.Fields("new_value") = CStr(rs.Fields(i).Value) rs3.Update rs3.Close rs2.Edit rs2.Fields(i).Value = rs.Fields(i).Value rs2.Update End If Next i rs.Close rs2.Close Set rs = Nothing Set rs2 = Nothing Set rs3 = Nothing
Partager