IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Gestion des doublons et dlookup


Sujet :

Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 500
    Points
    500
    Par défaut Gestion des doublons et dlookup
    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

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    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 !!
    Sur l'événement Befor Update les modifications ne sont pas encore enregistrées dans la table. Les actions effacement et re-saisie sont considérés comme des mise à jour donc le doublon est bel et bien detecté.

    Tu peux très bien faire un test (en utilisant peut être .oldValues et Values) si le champ correspondant n'est pas vide.
    Amicalement

  3. #3
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Conserver le Form_Error

    Dans la table film, le champ film avec les propriétés
    Null interdit = Oui
    Chaine vide autorisé = non
    Indexé = Oui - sans doublons
    Message si erreur = "Titre de film invalide"

    devraient être suffisants et ne provoquer aucune erreur
    Je l'ai testé sans erreur

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 500
    Points
    500
    Par défaut
    Merci à vous deux !!

    Je teste dès que possible et je vous tiens au courant !!

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 500
    Points
    500
    Par défaut
    Citation Envoyé par helas
    Conserver le Form_Error

    Dans la table film, le champ film avec les propriétés
    Null interdit = Oui
    Chaine vide autorisé = non
    Indexé = Oui - sans doublons
    Message si erreur = "Titre de film invalide"

    devraient être suffisants et ne provoquer aucune erreur
    Je l'ai testé sans erreur
    Ok mais ton "message si erreur" ne permet pas de personnalisé selon l'erreur : soit titre non saisi soit doublon !!

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Points : 500
    Points
    500
    Par défaut
    Je ne vois pas ou placer mon test avec et /ou Merci d'avance pour l'aide apportée !!

    @++

    Bestall666

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des doublons
    Par moilou2 dans le forum IHM
    Réponses: 21
    Dernier message: 28/02/2008, 12h39
  2. Gestion des doublons
    Par Arsene12 dans le forum WinDev
    Réponses: 2
    Dernier message: 04/12/2007, 18h21
  3. Requete SQL sous Access : gestion des doublons
    Par mcroz dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 27/02/2007, 16h37
  4. Gestion des doublons
    Par bestall666 dans le forum Access
    Réponses: 9
    Dernier message: 19/02/2007, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo