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

VBA Access Discussion :

Vérification de doublon en cours de saisie [AC-2010]


Sujet :

VBA Access

  1. #21
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Difficile de t'indiquer un piste avec si peu d'indices.

    Poste le zip de ta base (en version 2000) pour qu'on puisse ausculter.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  2. #22
    Membre régulier
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 190
    Points : 88
    Points
    88
    Par défaut
    Bonjour, merci à vous de me répondre, mais impossible de sauver ma base sous le format ACCESS 2000, apparemment des éléments ne seraient pas compatible , snif..

    Je vais essayer de noter les messages d'erreur et de placer mon code, cela pourrait peut-être vous aider.

    "Un index ou une clé principale ne peut contenir une valeur nulle" si on appuie sur Ok : "Impossible d'enregistrer cet enregistrement pour l'instant" si on appuye pour ok pour fermer, cela ne pourra enregistrer.

    En finalité, qu'il n'enregistre pas ne me dérange pas puisque le numéro encodé est connu, et je veux juste sortir de la procédure. Pour un utilisateur, avoir ces messages inquiète, lol.

    Je pense qu'il y à une procédure afin que les message d'erreurs pour ce coup n'apparaissent pas, mais....

    Je trouve dommage de ne pas savoir envoyer ma base, cela m'aurait fais grand plaisir que mes codes soit vérifiés par un spécialiste, à mon sens je dois faire des truc compliqué ou je devrais aller au plus simple, lol.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Matricule_Pers_BeforeUpdate(Cancel As Integer)
    If IsNull(Me.Matricule_Pers) Then Exit Sub
    If DCount("*", "Personnel", "Matricule_Pers = '" & Me.Matricule_Pers & "'") <> 0 Then
      MsgBox "Ce Matricule existe Déjà !", vbCritical
      Cancel = True
    End If
    End Sub
    Matricule_Pers étant la clé primaire de ma base Personnel

    Encore merci de ton attention et joyeuses fêtes.

  3. #23
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNull(Me.Matricule_Pers) Then Exit Sub
    Matricule_Pers étant la clé primaire de ma base Personnel
    dans ce cas il ne faudrait pas faire un Exit Sub si la clé primaire est nulle car c'est cela qui provoque cette erreur : "Un index ou une clé principale ne peut contenir une valeur nulle".


    PS: tu peux poster ta base au format autre que 2000 car les autres forumeurs peuvent lire d'autres formats que mdb
    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 ?

  4. #24
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bien vu Guy !

    Meilleurs vœux pour 2019...
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #25
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    salut Claude,
    Meilleurs vœux pour 2019...
    à toi pareillement, accompagné d'une bonne santé !
    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 ?

  6. #26
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Je me permets de poursuivre la discussion.
    Je veux moi aussi tester des doublons lors d'une saisie mais sur deux variables numériques.
    Lorsque je teste sur une seule valeur, la fonction DCount me renvoie bien le résultat attendu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*", "TJ_Elève_Responsable_V2", "ID_Elève = " & Me.Id_Elève_Formulaire)
    De même avec l'autre valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*", "TJ_Elève_Responsable_V2", "ID_Responsable = " & lstResults.Column(0))
    Par contre, je n'arrive pas à faire le test sur les deux valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*", "TJ_Elève_Responsable_V2", "ID_Elève = " & Me.Id_Elève_Formulaire And "ID_Responsable = " & lstResults.Column(0))
    J'ai comme message d'erreur "incompatibilité de type".

    Est-ce que vous auriez une idée ?

    Merci d'avance.

    Ed

  7. #27
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Plutôt ceci comme syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*", "TJ_Elève_Responsable_V2", "ID_Elève = " & Me.Id_Elève_Formulaire & " And ID_Responsable = " & lstResults.Column(0))
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #28
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Ca marche.
    Merci beaucoup !

    Ed

  9. #29
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Points : 35
    Points
    35
    Par défaut Unbe allerte doubon en cours de saisie, adossée à champs calculé qui fonctionne parafaitement
    Voici la solution que j'ai testé sur ma table Access et qui fonctionne parfaitement à vous d'adapter les noms table requête et champs :

    Détecter Doublon sur champ Calculé de ma table Dépenses Charges Syndic

    Dans cette table, créer un champs calculé "DetectDoublon" qui concatène certains champs dans leur ordre de saisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Année([Date dépenses]) & "-" & [Libellé] & "-" & [Réf A-P Syndic]
    Ensuite créer une requête "Doublons pour Dépenses Charges SyndicReq" qui Recherche les doubons sur le champs "DetectDoublon" de cette table :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [Dépenses Charges Syndic].DetectDoublon, [Dépenses Charges Syndic].Libellé, [Dépenses Charges Syndic].[Réf A-P Syndic], [Dépenses Charges Syndic].[Date dépenses]
    FROM [Dépenses Charges Syndic]
    WHERE ((([Dépenses Charges Syndic].DetectDoublon) In (SELECT [DetectDoublon] FROM [Dépenses Charges Syndic] As Tmp GROUP BY [DetectDoublon] HAVING Count(*)>1 )))
    ORDER BY [Dépenses Charges Syndic].DetectDoublon;

    Ensuite dans le formulaire adossé à la saisie des datas de cette table ;
    dans l'évènement Après mise à jour du dernier champs saisi en l'occurrence le champ "Réf A-P Syndic"
    je rentre ce code VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Réf_A_P_Syndic_AfterUpdate()
    If DCount("*", "Doublons pour Dépenses Charges SyndicReq", Me.DetectDoublon) > 0 Then
        MsgBox "Cet ajout ferait un doublon !", vbCritical
        Cancel = True
    End If
    End Sub

  10. #30
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    bonsoir traderpierre,
    Voici la solution que j'ai testé sur ma table Access et qui fonctionne parfaitement à vous d'adapter les noms table requête et champs :
    sauf que dans ton code tu utilises l'évènement After_Update qui est déclenché après la mise à jour (comme son nom l'indique). Donc en cas d'erreur le Cancel = True n'aura aucun effet, la saisie est déjà validée.
    Il faudrait mettre le code dans l'évènement Before_Update du formulaire: c'est l'évènement qui se déclenche avant de passer à l'enregistrement suivant en formulaire unique.

    D'autre part je ne comprend pas à quoi sert Me.DetectDoublon ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*", "Doublons pour Dépenses Charges SyndicReq", Me.DetectDoublon) > 0
    normalement le paramètre Critères doit contenir un critère de sélection "Champ1= " & UneVariable ou "Champ2 <> 0" etc...
    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 ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [AC-2000] Vérification si doublon a la saisie
    Par bibi28 dans le forum Access
    Réponses: 12
    Dernier message: 23/07/2015, 08h17
  2. Réponses: 6
    Dernier message: 15/06/2006, 16h15
  3. [MySQL] Vérification de doublons avant insertion
    Par Nicos77 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 09/12/2005, 14h37
  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, 11h52
  5. Réponses: 2
    Dernier message: 21/03/2005, 10h03

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