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 :

Recherche de nom avant saisie


Sujet :

Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut Recherche de nom avant saisie
    Bonjour à tous,

    Je suis débutant et j'ai besoin d'aide

    J'ai une base de donnée comportant une table avec comme clef primaire un numéro automatique, cette table est en relation avec deux autres tables.

    Je saisie mes mes informations dans un formulaire.
    NOM, Prénom ont des champs séparés.

    La base comporte 3500 noms environ.
    Je voudrais savoir si il existe un moyen quand je dois saisir de nouveaux noms, de savoir si ils ont déjà présents dans la base en créant par exemple une fenêtre qui s'ouvre du style :"attention la base comporte ce nom".

    Merci si quelqu'un peut m'aider

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Ce que je ferais à ta place c'est d'ajouter dans l'évenement AfterUpdate de ton champs de saisie une requete SQL qui teste si le nom existe déja puis une inputBox qui propose à l'utilisateur d'annuler sa saisie.
    Un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim chaine as string, record as recordSet
    dim res as integer
    chaine = "SELECT nom FROM maTable WHERE nom=" & monChamps.value
    Set record=CurrentDb.openRecordSet(chaine) 'execution de la requete
    if not (record.EOF) then 'si il y a au moins un résultat
       res=InputBox ("Ce nom existe déja êtes vous sur de vouloir continuer",vbYesNo) 'affichage d'une boite de dialogue
       if (res=vbNo)then 's'il a dit Non
            ce qu'il faut faire s'il ne veut pas continuer
       end if
    end if
    En espérant t'aider

  3. #3
    Expert confirmé
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Par défaut
    Salut,

    guigui5931 Je ne comprend pas pourquoi tu utilise une InputBox, je pense qu'un MsgBox est suffisant.

    autre Méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If IsNull(DLookup("[ffgg]", "[Table2]", "[ffgg]='" & Me.Texte1 & "'")) Then
        
        MsgBox "ce Nom n'existe pas"
            
    Else
        
        MsgBox "ce Nom existe déjà"
            
    End If
    recherche DLoockup dans l'aide Access

    Dolphy

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Merci je vais essayer...

    J'espère arriver à inclure la base sql dans la base...


    Merci encore

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Au secours je n'y arrive pas...

    J'ai du mal

    J'ai insérer le code dans la partie saisie de texte du formulaire en faisant clique droit créer un code... Est ce bien la procédure ??

    Je suis désolé de vous embêter avec cela

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Un autre moyen, c'est davoir une liste déroulante avec comme propriété limitée à liste et il y a un évènement NotInList avec lequel ont peut agir si le nom n'est pas dans la liste.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    tu la bien mis dans la partie AfterUpdate de ton champs texte. TU fait propriété de ton champs onglet évenement champs Après MAJ tu choisi Procédure évenementielle et tu clique sur les ...
    Et tu met le code à cet endroit.

    @Dolphy35 : j'avais mis ne inputbox dans un ancien code pour pouvoir effacer la valeur du champs texte et jlé repris tel kel

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    oui j'ai bien mis afterupdate dans l'evennement puis le code dans visual basic....
    quand je rentre un nom il me lance le débogueur sur la ligne suivante :
    Set record=CurrentDb.openRecordSet(chaine) 'execution de la requete

    Faut-il que je crée une requête ?? Ou prend t-il ses informations dans la base ?

    Encore désolé pour le dérangement.

    Si je n'y arrive pas je laisserais tomber... Ou j'acheterais des livres

  9. #9
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    dans le code que je t'ai donné tu a bien remplacé les maTable et monChamps par tes valeurs.
    Montre nous le code que tu as mis toi

  10. #10
    Expert confirmé
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Par défaut
    Citation Envoyé par guigui5931
    @Dolphy35 : j'avais mis ne inputbox dans un ancien code pour pouvoir effacer la valeur du champs texte et jlé repris tel kel
    Ok, je ne comprenais pas pourquoi tu le mettais.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Merci Guigui5931 encore pour ton aide.

    Voici le code de l'erreur d'exécution : 3078

    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
     Private Sub Nom_AfterUpdate()
    Dim chaine As String, record As Recordset
    Dim res As Integer
    chaine = "SELECT nom FROM spectacteurs WHERE nom=" & Nom.Value
    Set record = CurrentDb.OpenRecordset(chaine) 'execution de la requete
    If Not (record.EOF) Then 'si il y a au moins un résultat
    res = InputBox("Ce nom existe déja êtes vous sur de vouloir continuer", vbYesNo) 'affichage d'une boite de dialogue
    If (res = vbNo) Then 's'il a dit Non
    'ce qu 'il faut faire s'il ne veut pas continuer'
    End If
    End If
    End Sub
    Spectateurs c'est le nom de ma table, et le champs nom fe famille s'appelle nom.

    Merci d'avance

  12. #12
    Membre chevronné
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Par défaut
    Bonjour,

    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = "SELECT nom FROM spectacteurs WHERE nom='" & Nom.Value & "'"
    A+

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Merci Soltani1

    Avec l'aide de Soltani1, j'ai réussi à faire apparaitre la boite de dialogue : ce non existe déjà...
    par contre je ne sais pas quoi mettre dans la zone texte qui apparait et si je clique sur Ok, il me mets erreur d'éxécution 13 incompatilité de type.

    Voilà on va peut être bientot y arriver

  14. #14
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Après la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Not (record.EOF) Then 'si il y a au moins un résultat
    remplace ce que je t'avais dit par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MsgBox("attention ce nom existe déja");
    End If
    End Sub
    le reste ne servait à rien

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Merci beaucoup GUIGUI5931

    Tu m'as été d'une grande aide

    J'ai deux autres questions :
    Aurais tu un livre à me conseiller pour apprendre à me servir d'ACCESS ?

    Avant de taper le nom je créer une nouvelle fiche, et si le nom est déjà dans la base, il m'a déjà enregistré la fiche elle est vide... Sais tu comment je pourrais éviter cela ?

    Si tu as une réponse sans trop d'effort c'est bien sinon laisse tomber je supprimerais les fiches vierge...

    Encore Merci

  16. #16
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    pour des bouquins tu peux aller voir moi j'en est jamais lu donc je sé pas trop ce qu'ils vallent.

    Sinon pour supprimer les fiches tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    res=MsgBox("attention ce nom existe déja voulez vous quand meme créer la fiche?",vbYesNo);
    if (res=vbYes) then
         requete de suppression en fonction de la clé de ta fiche
    end if
    à la place de la MsgBox que t'avais mis

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Merci encore Guigui5931

    Mes fiches sont crées avec un numéro automatique (clef primaire), et pour les supprimer, j'ai un bouton de la corbeille.

    Voilà...

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

Discussions similaires

  1. [VBA-E] Recherche le NOM d'un fichier ...
    Par le_sonic dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2006, 11h34
  2. Rechercher un nom de colonne
    Par Oberown dans le forum Access
    Réponses: 4
    Dernier message: 15/04/2006, 13h22
  3. [VB.Net]recherche par nom
    Par souaddemaroc dans le forum Windows Forms
    Réponses: 7
    Dernier message: 30/03/2006, 10h40
  4. Réponses: 14
    Dernier message: 14/03/2006, 15h20
  5. Requête sélection : recherche par nom
    Par leeloo77 dans le forum Access
    Réponses: 7
    Dernier message: 17/02/2006, 15h39

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