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

IHM Discussion :

Comment vérifier si une entrée existe déja


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Travail administratif
    Inscrit en
    Septembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Canada

    Informations professionnelles :
    Activité : Travail administratif

    Informations forums :
    Inscription : Septembre 2019
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Comment vérifier si une entrée existe déja
    Bonjour à tous,

    Je travaille présentement à modifier un fichier ACCESS pour le bureau.

    Le fichier ACCESS comprend les Objets suivants :

    - 1 table portant le nom de «Contrôle»

    - des Requêtes

    - et plusieurs formulaires.

    Les gens inscrivent dans le formulaire «Contrôle» le numéro du client avec quelques informations à son sujet qui s'ajoute ensuite (de ce que j'en comprend) à la table «Contrôle».

    Ce que j'aimerais faire c'est une validation du numéro du client. Si le numéro de client existe déjà, j'aimerais qu'un message s'affiche pour indiquer que la donnée existe déjà, afin d'éviter qu'elle s'inscrit une 2e fois. Si elle n'existe pas, alors je souhaite qu'elle s'ajoute comme c'est le cas présentement.

    J'ai trouvé deux façons possibles de le faire, mais je ne suis pas certain quelle méthode est la bonne et comment mettre en place cette vérification.

    La première façon que j'ai trouvée c'est en ouvrant la Feuille de propriétés de la zone de texte où le numéro du client est entré, puis d'aller dans la section «Données» et d'aller inscrire une expression dans la section VALIDE SI.

    La deuxième façon est encore dans la feuille de propriétés, mais cette fois-ci dans la section ÉVÉNEMENT > SUR ENTRÉE > [code VBA]

    J'apprécierai de l'aide sur ce problème avec le plus de détails possibles, car je ne suis nullement un expert en ACCESS ou en VBA. Je suis légèrement confortable en VBA pour la lecture du code, car j'ai une très petite base en programmation. Pour ceux qui se demande pourquoi je suis en charge de faire les modifications à notre fichier ACCESS sans en avoir de connaissance et bien c'est tout simplement une nouvelle tâche que je dois à présent faire.

    Je ne suis pas certain si ma question est posé au bon endroit. Si ce n'est pas le cas, sentez vous bien à l'aise de la déplacer.

    Merci d'avance!

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Les 2 méthodes sont tout aussi valides.
    Personnellement je préfères le faire par code car je trouve cela plus souple mais pas parce que c'est "mieux".

    Sinon si tu veux t'assurer que tu n'auras pas de double, tu peux créer un index unique sur le champ identifiant client.
    Attention cela ne réagit qu'au moment où tu fais réellement l'ajout. Donc l'utilisateur saisit tout et au moment où il valide là il a l'alerte.
    De plus et si tu ne veux pas le message standard de Access il faut ajouter du code.
    Ceci dit comme tu fais une prévalidation, tu pourrais mettre ce mécanisme comme une sécurité au cas où ton contrôle ne marche pas.
    Donc si tu veux des détails, demande.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Travail administratif
    Inscrit en
    Septembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Canada

    Informations professionnelles :
    Activité : Travail administratif

    Informations forums :
    Inscription : Septembre 2019
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Merci pour la réponse rapide. Les deux solutions apportés m'intéresse beaucoup. Pourriez vous m'en dire plus s.v.p.?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Pour l'index unique, c'est assez simple.
    1. Il faut aller dans la table en mode conception.
    2. Ouvrir la fenêtre des indexes (le bouton avec l'éclair).
    3. Se mettre sur une ligne vierge.
    4. Donner un nom à l'index (ex : UniciteIdClient).
    5. Dans la 2ième colonne choisir le champ voulu.
    6. En bas sous les lignes cocher "Unique".
    7. Sauvegarder.


    Pour la gestion des erreurs, il faut dans le formulaire choisir l'événement "Sur Erreur".

    Ici un bon article sur ce sujet.

    http://www.databasedev.co.uk/custom-error-message.html

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Travail administratif
    Inscrit en
    Septembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Canada

    Informations professionnelles :
    Activité : Travail administratif

    Informations forums :
    Inscription : Septembre 2019
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Lorsque je tente de changer la propriété pour UNIQUE, le message suivant apparait :

    […] n'arrive pas à enregistrer les modifications apportées aux propriétés de la table attachée.

    Voulez-vous toujours continuer?

    Selon mes recherches et de ce que j'en comprends, la CLÉ PRIMAIRE du fichier s'appelle ID dans le tableau Contrôle. La propriété de celle-ci est indiqué comme étant UNIQUE et un numéro automatique se génère lorsqu'il y a une nouvelle entrée de donnée. Je semble comprendre que à cause de cette clé primaire, je ne peux pas modifier la propriété du Numéro du Client pour UNIQUE.

    Je ne sais toutefois pas comment régler le problème, car si je retire la clé primaire, il n'y aura plus de communication entre la Table et le formulaire (je crois).

    Des idées?

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    le message:
    […] n'arrive pas à enregistrer les modifications apportées aux propriétés de la table attachée.

    Voulez-vous toujours continuer?
    indique qu'il s'agit d'une table attachée (qui se trouve donc dans une autre base), il faut donc faire la modification dans la base d'origine et non dans la base ouverte, en général appelée frontale, c'est à dire celle qui contient l'applicatif (formulaires, requêtes, états, modules ...).
    D'autre part, dans une table, il est possible d'avoir plusieurs index avec clé unique, mais un seul index peut être primaire:

    Nom : tbl_CléUnique.JPG
Affichages : 1541
Taille : 31,0 Ko
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Travail administratif
    Inscrit en
    Septembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Canada

    Informations professionnelles :
    Activité : Travail administratif

    Informations forums :
    Inscription : Septembre 2019
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Je me suis rendu à la table d'origine (je l'ai trouvé en allant voir dans le gestionnaire de tables liées où elle se trouvait. J'imagine que c'est la façon de faire) et le message d'erreur suivant m'est apparu :


    Modifications non effectuées : risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données de champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez.

    Le message apparait-t-il parce qu'il y aurai déjà des doublons présent dans ma table Contrôle? C'est ce que j'en comprend.

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Le message apparait-t-il parce qu'il y aurai déjà des doublons présent dans ma table Contrôle? C'est ce que j'en comprend.
    C'est tout à fait cela. Reste à savoir si rendre unique un champ après coup, est vraiment le modèle de données que tu souhaites.
    Dans l'affirmative, il va falloir trouver les doublons à partir d'une requête de sélection:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM Contrôle
    WHERE [NumeroClient] In (SELECT NumeroClient
    FROM Contrôle
    GROUP BY NumeroClient
    HAVING Count([NumeroClient)>1);
    Ensuite il faudra attribuer un nouveau numéro pour chaque cas trouvé (après validation des utilisateurs qui ont créé les enregistrements)
    C'est seulement après les corrections (ou suppression) de ces doublons que tu pourras envisager de modifier la table en mettant cet index.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Travail administratif
    Inscrit en
    Septembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Canada

    Informations professionnelles :
    Activité : Travail administratif

    Informations forums :
    Inscription : Septembre 2019
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM Contrôle
    WHERE [NumeroClient] In (SELECT NumeroClient
    FROM Contrôle
    GROUP BY NumeroClient
    HAVING Count([NumeroClient)>1);
    Je ne suis pas certain où ce code doit être inséré. Ensuite, ce code peut-il être laissé dans le fichier ou doit-il être retiré une fois que les NumeroClient vont avoir été trié?

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Ce code, adapté à ta réalité, doit être mis dans une requête.
    Tu crées une nouvelle requête.
    Tu changes l'affichage pour SQL (en haut à gauche) et tu y copies le code.

    Une fois le ménage fait, il n'est pas nécessaire de garder la requête puisque l'index unique empéchera la création de doublons.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Travail administratif
    Inscrit en
    Septembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Canada

    Informations professionnelles :
    Activité : Travail administratif

    Informations forums :
    Inscription : Septembre 2019
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Désolé pour le long silence radio, je viens de revenir de vacance.

    J'ai crée une requête qui trouve les doublons.

    J'aimerais à présent être en mesure de prendre cette information et de l'afficher dans le formulaire qui s'appelle «Contrôle». Je ne trouve pas comment faire cela.

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Sans plus de précisions sur ce que tu entends par "prendre cette information et de l'afficher dans le formulaire qui s'appelle «Contrôle»".

    Tu sélectionnes ta requête.
    Tu vas dans l'onglet de création et tu crées un formulaire basé sur ta requête.

    Si tu veux plus donne quelques détails.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [MySQL] vérifier si une entrée existe dans une table
    Par dafchap dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/11/2016, 16h51
  2. Réponses: 0
    Dernier message: 07/04/2014, 16h44
  3. [AC-97] Comment vérifier si une table existe? (fn OpenSchema)
    Par BornToBe dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/04/2012, 09h57
  4. Réponses: 2
    Dernier message: 04/06/2010, 21h53
  5. Réponses: 2
    Dernier message: 21/05/2007, 18h55

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