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 :

Contrôle de doublon en cours de saisie


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut Contrôle de doublon en cours de saisie
    Bonjour

    Je cherche à créer une procédure me permettant de contrôler, lors de la saisie d'une adresse, si elle n'existe pas déjà dans ma table T_immeubles.
    J'ai écrit le bout de code ci-dessous, mais je pense que j'oublie des guillemets ou des '

    Est-ce qu'un spécialiste pourrait me donner son avis ?

    Merci.

    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
     
    Private Sub immeuble_voie_numero_BeforeUpdate(Cancel As Integer)
     
     
        Dim chaine_test_numero As String, chaine_test_compl As String, chaine_test_voie As String, chaine_test_commune As String
     
        chaine_test_numero = "[T_immeubles]![immeuble_voie_numero] =" & Me.immeuble_voie_numero.Value
        chaine_test_compl = "[T_immeubles]![immeuble_voie_numero_compl] =" & Me.immeuble_voie_numero_compl.Value
        chaine_test_voie = "[T_immeubles]![immeuble_voie] =" & Me.immeuble_voie.Value
        chaine_test_commune = "[T_immeubles]![immeuble_commune] =" & Me.immeuble_commune.Value
     
        If IsNull(Me.immeuble_voie_numero) Then Exit Sub
        If DCount("*", "T_immeubles", "chaine_test_numero" & " AND " & "chaine_test_compl" & " AND " & "chaine_test_voie" & " AND " & "chaine_test_commune") <> 0 Then
        MsgBox "Cet ajout ferait doublon !", vbCritical
        Cancel = True
        End If
     
    End Sub

  2. #2
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Bonjour,

    pourquoi ne crées-tu pas un index sans doublon sur ces 4 champs ?

    Sinon, oui il te manque des ' pour encadrer tes champs de type texte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine_test_numero = "[T_immeubles]![immeuble_voie_numero] = ' " & Me.immeuble_voie_numero.Value & " ' "
    et ainsi de suite...

    J'imagine qu'il faudra également que tu gères les valeurs nulles (par exemple le complément d'adresse n'est pas toujours renseigné).

    A+

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    J'ai essayé de créer un index comme tu me l'as suggéré, combinaison de mes 4 champs :

    Nom : Capture d’écran 2021-02-04 135227.jpg
Affichages : 78
Taille : 96,7 Ko

    Par contre, quand j'essaie de créer un nouvel enregistrement, en reprenant une adresse déjà existante, je n'ai pas de message d'erreur.

    Est-ce que j'ai oublié quelque chose ?
    Ou bien est-ce que c'est la valeur nulle (dans la plupart des cas) dans le champ [immeuble_voie_numero_compl] qui met le bazar ?

    Merci.

  4. #4
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Bonjour,

    oui je pense que la valeur null n'est pas "comptabilisée" (pas de valeur).
    Tu peux contourner en mettant une valeur par défaut ("" par exemple) à ce champ...

    A+

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    Super, ça marche. Du coup, il a fallu que je rajoute un contrôle également sur le champ "numéro d'immeuble" parce que j'avais des bâtiments A et B, avec la même adresse postale.

    2 questions :

    * comment remplacer de grandes quantités de valeurs nulles par les caractères "" (là, ça va, j'en avais 300, je me suis amusé en quelques minutes, mais si j'en avais eu plusieurs milliers...) ?

    * est-ce que l'on peut créer un évènement avec une MsgBox en cas d'erreur liée à la présence d'un doublon ?

    Merci encore ! J'apprends plein de choses.

  6. #6
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Re,

    oui tu aurais pu faire une requête de mise à jour :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE T_immeubles SET immeuble_voie_numero_compl=""
    WHERE immeuble_voie_numero_compl is null

    J'imagine que tu saisis via un formulaire, donc pour avoir un msgbox si erreur de doublon, tu mets ce code sur l'évènement error() de ton formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Form_Error(DataErr As Integer, Response As Integer)
     
    Select Case DataErr
       Case 3022 'erreur liée à un doublon
             MsgBox "Cette adresse déjà.", vbExclamation, "Attention"
            'Demande à Access de continuer l'exécution sans afficher le message standard
            Response = acDataErrContinue
       End Select
    End Sub
    A+

Discussions similaires

  1. [AC-2010] Vérification de doublon en cours de saisie
    Par nlbmoi dans le forum VBA Access
    Réponses: 29
    Dernier message: 18/04/2020, 20h13
  2. Contrôles de numériques en cours de saisies.
    Par unparia dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/04/2019, 21h58
  3. [MySQL] Contrôle des doublons
    Par samjung dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 16/11/2005, 19h54
  4. le déclencheur d'un évenement en cours de saisie
    Par oracliste dans le forum Oracle
    Réponses: 8
    Dernier message: 10/11/2005, 10h52
  5. Réponses: 2
    Dernier message: 21/03/2005, 09h03

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