Bonjour,
J'essaie de cloner le recordset d'un sous-formulaire (au départ du formulaire principal) et sur l’événement Unload du formulaire principal.
Le but étant de vérifier avant le Close, si 3 champs sont bien remplis (on peut les laisser vides tous les trois mais pas 1 ou 2 sur 3).
Mon code:
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 Private Sub Form_Unload(Cancel As Integer) Dim Db As DAO.Database Dim rst As DAO.Recordset Dim nbr As Long Set Db = CurrentDb() Set rst = Me.sf_AjoutEvaluation.Form.RecordsetClone 'on duplique le jeu d'enregistrements du sous-formulaire afin de manipuler les données sans que ces modifications ne soient répercutées sur le formulaire et sans qu'aucun évènement ne soit déclenché. If Not rst.EOF Then rst.MoveLast rst.MoveFirst nbr = rst.RecordCount End If Debug.Print nbr & " --- " ' On verifie que les lignes restantes ont bien des données dans les 3 champs importants du sous-formulaire: NumDossierJustificatif, EvaluateurID, ResultatEvaluation ' on teste chacun des enregistrements, ceux qui ont les trois champs importants vides, on les laisse ainsi, ce n'est pas un soucis, il seront éliminer lors du Close ' Pour ceux qui ont au moins un des trois champs importants non nul, et un ou les deux autres null, on affiche alors un message ET on annule la fermeture du formulaire Do While rst.EOF = False If IsNull(rst.txt_EvalNumDossierJustif) And IsNull(rst.ResultatEvaluation) And IsNull(rst.txt_EvaluateurID) Then 'si les 3 champs sont null on ne fait rien, on passe à l'enregistrement suivant rst.MoveNext Else 'au moins un des trois champs n'est pas null ' on affiche un message comme quoi les trois champs doivent être remplis 'et on annule la fermeture du formulaire MsgBox "Pour les enregistrements que vous venez d'encoder," & Chr(13) & Chr(10) & _ "veuillez remplir obligatoirement TOUS les champs suivants: " & Chr(13) & Chr(10) & _ "NumDossierJustificatif, EvaluateurID, ResultatEvaluation" ' rst.MoveNext Cancel = True Exit Sub End If Loop End Sub
Toutefois, j'ai un message d'erreur, comme quoi il ne trouve pas le membre de méthode ou de données rst.txt_EvalNumDossierJustif.
Or txt_EvalNumDossierJustif est bien le nom du champ à vérifier et il est bien dans le sous-formulaire....
Avez-vous des idées et suggestions pour m'aider à résoudre cela?
Merci d'avance
Partager