Hello
J'ai un problème avec la gestion des doublons dans un formulaire !!
La détection des doublons fonctionne bien mais j'ai quand meme un soucis : lorsque l'utilisateur efface par mégarde le titre j'affiche un message d'erreur et cela fonctionne bien.
La saisie du titre de mon film étant obligatoire, un message d'erreur s'affiche s'il est vide : de ce coté la pas de probleme non plus
Par contre si l'utilisateur retape le titre qu'il a effacé par mégarde alors access me détecte un doublon alors que la table n'en contient pas !!
Enfin si je fais echap pour annuler la suppression du titre il ne détecte pas de doublon, ce qui est normal !!
Ma table film est paramétrée comme indiqué ci dessous
film(Nro Film, Titre Film, Titre VO....)
Nro film est la clé primaire
Titre film est en null interdit et indexé sans doublons
Le formulaire est basé sur la table film !!
Voici le 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 Public Function FilmExiste(strTitreFilm) As Boolean On Error GoTo Err_FilmExiste 'On vérifie si le film passé en paramètre existe FilmExiste = False If Not IsNull(DLookup("[Titre Film]", "FILM", "[Titre Film] = " & "'" & strTitreFilm & "'")) Then FilmExiste = True Else FilmExiste = False End If Exit Function Err_FilmExiste: MsgBox Err.Description Exit Function End Function
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 Private Sub Form_Error(DataErr As Integer, Response As Integer) On Error GoTo Err_Form_Error 'On vérifie que le titre du film est bien saisi If DataErr = 3314 Then AfficheErreur "Vous devez saisir le Titre du film.", "Saisie obligatoire" Response = acDataErrContinue End If Exit Sub Err_Form_Error: MsgBox Err.Description Exit Sub End Sub
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 Private Sub Titre_Film_BeforeUpdate(Cancel As Integer) On Error GoTo Err_Titre_Film_BeforeUpdate 'On vérifie que le film n'existe pas déjà If Not IsNull([Titre Film]) Then If FilmExiste([Titre Film]) = True Then AfficheErreur "Ce film existe déjà dans la base de données.", "Film déjà existant" [Titre Film].SelStart = 0 [Titre Film].SelLength = Len([Titre Film]) Cancel = True End If End If Exit Sub Err_Titre_Film_BeforeUpdate: MsgBox Err.Description Exit Sub End Sub
Merci d'avance pour toute réponse !!
@++
Bestall666
Partager