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 :

Annuler ajout si record existe deja


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 219
    Par défaut Annuler ajout si record existe deja
    Bonjour tout le monde et merci de m'aider

    Apres avoir cherché dans la FAQ, je n'ai trouvé de réponse à ma question, qui pourtant je pense, doit etre simple...Mais je n'y arrive pas.


    J'ai un formulaire d'ajout d'institution: "Add_Institution" ,basé sur la table "institutions" sur lequel se trouve différents champs texte dont un qui est appellé "Institution_Acronym".

    Je voudrais qu'à la sortie de ce champ, si l'utilisateur lui a attribué un acronyme existant deja dans la table "Institutions", un message d'avertissement aparaisse et que ce champ redevienne null.

    bref, je voudrais m'assurer que l'utilisateur ne rentre pas un acronyme existant deja.


    Voila ce que j'ai pour le moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Institution_Acronym_BeforeUpdate(Cancel As Integer)
    ' Si l'acronyme de l'institution existe deja
        If (Not IsNull(DLookup("[Institution_Acronym]", "Institutions", "[Institution_Acronym] = '" & Me.Institution_Acronym.Text & "'"))) Then
     
     
            Me!Institution_Acronym.Undo
     
     
        End If
    End Sub

    Cela fonctionne mais ne remet pas le textbox à blanc.

    Et si j'ajoute ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Institution_Acronym = ""
    apres le undo, une erreur apparait me signifiant que le champ ne peut valoir une chaine vide ( ce qui est logique vu que c est précisé dans les propriétés de la table)


    Quelqu'un aurait une solution simple pour avertir l'utilisateur lorsqu'il rentre un acronyme deja existant et qu'ensuite ce champ redevienne sans valeur (comme avant la modification) ?

    (en fait une sorte de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
    mais juste pour un champ)


    Merci à tous!

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Le plus simple et le plus sécure pour être sur d'éviter des doublons c'est de mettre un index unique sur le champ concerné directement dans la table.

    Access va générer une erreur que tu peux attraper et traiter pour offrir un message plus gracieux à ton utilisateur.

    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 confirmé
    Inscrit en
    Février 2006
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 219
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Le plus simple et le plus sécure pour être sur d'éviter des doublons c'est de mettre un index unique sur le champ concerné directement dans la table.

    Access va générer une erreur que tu peux attraper et traiter pour offrir un message plus gracieux à ton utilisateur.

    A+
    J'ai fait cela. Mais l'erreur access n'apparait que lors de l'ajout de tous les champs du formulaire. Bref, l'utilisateur n'est prévenu qu'a la fin de l'encodage de la fiche "institution".

    Alors que moi je voudrais qu'il soit prévenu juste apres avoir encodé l'acronym.

    J'espere que je me fais bien comprendre?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Si ton champ admet une valeure nulle alors essaye Starec

  5. #5
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 219
    Par défaut
    Citation Envoyé par Starec Voir le message
    Bonjour

    Si ton champ admet une valeure nulle alors essaye Starec
    je fais donc ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Institution_Acronym_BeforeUpdate(Cancel As Integer)
    ' Si l'acronyme de l'institution existe deja
        If (Not IsNull(DLookup("[Institution_Acronym]", "Institutions", "[Institution_Acronym] = '" & Me.Institution_Acronym.Text & "'"))) Then
            'MsgBox (Me.Institution_Acronym.Text)
    Me!Institution_Acronym = Null
            Me!Institution_Acronym.Undo
     
     
        End If
    End Sub
    ou ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Institution_Acronym_BeforeUpdate(Cancel As Integer)
    ' Si l'acronyme de l'institution existe deja
        If (Not IsNull(DLookup("[Institution_Acronym]", "Institutions", "[Institution_Acronym] = '" & Me.Institution_Acronym.Text & "'"))) Then
            'MsgBox (Me.Institution_Acronym.Text)
           Me!Institution_Acronym.Undo
    Me!Institution_Acronym = Null
     
     
     
        End If
    End Sub
    J'obtiens alors le message derreur 2215 suivant: "la fonction attribuée à la propriété "avant maj" pour ce champ empeche MS office access d'enregistrer les données dans le champ

    ???


    apparement, le "undo" fonctionne mais c'est la remise à zero du champ sur le formulaire (donc en gros l effacement de ce qu'il contient sur le formulaire) qui pose probleme

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/06/2006, 11h19
  2. Réponses: 8
    Dernier message: 03/05/2006, 20h10
  3. Réponses: 3
    Dernier message: 22/04/2006, 06h05
  4. [XSLT]verifier si un noeud existe deja
    Par davelo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/03/2006, 16h47
  5. Tester si une données existe deja
    Par mael94420 dans le forum ASP
    Réponses: 1
    Dernier message: 18/10/2005, 17h09

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