Bonjour
J'ai la table suivante :
FILM(IDFilm, TitreFilm, TitreVOFilm, DureeFilm, AnneeFilm, ResumeFilm)
Afin d'éviter les doublons j'ai crée un index UNIQUE composé des champs TitreFilm et AnneeFilm.
J'ai créé une requête paramétrée et une fonction qui vérifie l'existence de ce film !!!!
Voici le code :
Puis sur l'évènement "AvantMAJ" du champ année :
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 Public Function FilmExiste(strTitreFilm As String, strAnneeFilm As String) As Boolean On Error GoTo Err_FilmExiste Dim rst As DAO.Recordset Dim oQdf As DAO.QueryDef 'Vérifie l'existance d'un film dont le titre est passé en paramètre 'Renvoie True si le film existe Set oQdf = CurrentDb.QueryDefs("qryFilmExiste") oQdf.Parameters("parmTitre").Value = strTitreFilm oQdf.Parameters("parmAnnee").Value = strAnneeFilm Set rst = oQdf.OpenRecordset() FilmExiste = rst.RecordCount > 0 rst.Close Set rst = Nothing Exit Function Err_FilmExiste: MsgBox Err.Description Exit Function End Function
J'aimerais sur le formulaire de saisie, afficher un message d'erreur lors de la saisie sur un doublon !!
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 Private Sub AnneeFilm_BeforeUpdate(Cancel As Integer) On Error GoTo Err_AnneeFilm_BeforeUpdate 'On vérifie que l'année saisie est bien numérique et sur 4 chiffres If Not IsNull([AnneeFilm]) And Not IsNumeric([AnneeFilm]) Then Cancel = True AfficherErreur "L'Année de Production du Film doit être Numérique.", "Erreur de Saisie" [AnneeFilm].SelStart = 0 [AnneeFilm].SelLength = Len([AnneeFilm]) ElseIf Len([AnneeFilm]) < 4 Then Cancel = True AfficherErreur "L'Année de Production du Film doit être saisie sur 4 chiffres.", "Erreur de Saisie" [AnneeFilm].SelStart = 0 [AnneeFilm].SelLength = Len([AnneeFilm]) End If 'On vérifie l'existence du film Dim strTemp As String Dim strTemp2 As String strTemp = Nz([TitreFilm], vbNullString) If Len(strTemp) > 0 Then If FilmExiste(strTemp, [AnneeFilm]) Then AfficherErreur "Ce film existe déjà dans la base de données.", "Erreur de Saisie" Cancel = True End If End If Exit Sub Err_AnneeFilm_BeforeUpdate: MsgBox Err.Description Exit Sub End Sub
Quelle est la mailleure méthode ?
Partager