Bonjour,
J'ai un problème sur Access 97 qui m'énerve.
J'ai fait une petite appli avec pas mal de formulaires, tout fonctionnait bien jusqu'aux tests finaux: dans certains cas, la fenêtre access ne se ferme pas une fois la base fermée.
Je joue dans la base, je clique sur la croix tout en haut à droite (quitter access quoi), la base se ferme, mais pas la fenetre qui doit être tuée par le gestionnaire de taches windows...
Après 3 heures de tests, le code mis en cause est celui-ci:
Si il y a appel à genereNote, le problème survient.
Le code est loin d'être difficile mais c'est lui qui cause le problème, sans bien sûr générer d'erreur.
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 Dans le formulaire Private Sub genereNote() noteIncident Me.Form End Sub Dans un module Public Sub noteIncident(ByRef formulaire As Form) Dim Note As Variant Dim Priorite As Variant Note = calculNoteIncident(formulaire) If IsNull(Note) Then Exit Sub Priorite = calculPriorisationIncident(formulaire, CInt(Note)) If IsNull(Priorite) Then Exit Sub formulaire!Text_Note = Note formulaire!List_Priorite = Priorite End Sub Public Function calculNoteIncident(ByRef entree As Object) As Variant Dim Note As Integer Note = 0 'si prodoc, ne pas calculer de note If entree!Cellule = "PRODOC" Then calculNoteIncident = Null Exit Function End If If entree!Abo_PP = "Abo" Then If entree!Obligation Then Note = Note + 2 If entree!Satisfaction Then Note = Note + 2 If entree!Rattrapable Then Note = Note + 2 If entree!SensibiliteCciale Then Note = Note + 2 ElseIf entree!Abo_PP = "PP" Then If entree!Obligation Then Note = Note + 2 If entree!Satisfaction Then Note = Note + 2 If entree!Rattrapable Then Note = Note + 2 If entree!CompteIN Then Note = Note + 9 End If calculNoteIncident = Note End Function Public Function calculPriorisationIncident(ByRef entree As Object, ByVal Note As Integer) As String If Note > 7 Then calculPriorisationIncident = "MAJEUR" ElseIf Note > 3 Then calculPriorisationIncident = "GENANT" Else calculPriorisationIncident = "MINEUR" End If End Function
Le problème ne survient pas avec access 2003 mais les utilisateurs veulent 97
Si vous demandez pourquoi j'ai "ByRef entree As Object" c'est parce que la fonction peut être utilisée avec un formulaire ou un recordset.
Quelqu'un a-t-il une idée?
Partager