Salut
J'ai un sous-formulaire "subform_comment" dans lequel j'ai un champ "Comment" et un champ "Date_day"
Mon sous-formulaire a comme source la requête rqt_comment :
La table tbl_comment contient les champs suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT tbl_comment.N°, tbl_comment.ID_pro, tbl_comment.Date_day, tbl_comment.Comment FROM tbl_promoters RIGHT JOIN tbl_comment ON tbl_promoters.ID_pro = tbl_comment.ID_pro;
N° : Clé primaire - NuméroAuto - indexé sans doublons
ID_pro : Numérique - indexé avec doublons
Comment : Texte long : non indexé
Date_day : Date/heure : non indexé
La table tbl_promoters contient entre autres le champ suivant :
ID_pro : Clé primaire - NuméroAuto - indexé sans doublons
Une relation a été créée entre ces 2 tables avec comme champ père/fils "ID_pro".
J'ai un code qui permet de ne pas créer plus d'un commentaire le même jour. Le champ date indiquant automatiquement la date du jour.
Le problème est que je reçois le message d'erreur suivant lorsque je créé un nouveau commentaire dans un enregistrement du formulaire principal. frm_promoters
Voici le code de mon sous-formulaire :
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 Private Sub Form_BeforeInsert(Cancel As Integer) Me.Date_day = Date Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("SELECT N° FROM rqt_comment WHERE N°=" & Me!N°, dbOpenSnapshot) If rs.EOF Then Me!N° = 1 Else rs.MoveLast Me!N° = rs!N° + 1 End If rs.close Set rs = Nothing End Sub Private Sub Form_BeforeUpdate(Cancel As Integer) Dim strSQL As String Dim rst As DAO.Recordset Dim currentDate As Date Dim currentID_pro As Long currentDate = Date currentID_pro = Me.Parent.ID_pro strSQL = "SELECT * FROM rqt_comment WHERE ID_pro = " & currentID_pro & " AND date_day = #" & Format(currentDate, "yyyy-mm-dd") & "#" Set rst = CurrentDb.OpenRecordset(strSQL) If Not rst.EOF Then MsgBox "You can't post more than one comment per day !", vbExclamation, "Database Prospect" Cancel = True Me.Undo End If rst.close Set rst = Nothing End Sub Private Sub Form_Current() Me.txtTotalComments.Value = CountComments(Me.ID_pro) & " comment(s)" End Sub Private Function CountComments(ID_pro As Variant) As String Dim count As Long count = DCount("*", "rqt_comment", "ID_pro = " & Nz(ID_pro, 0)) CountComments = CStr(count) End Function
Je ne comprends pas quel peut être le problème.
Partager