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

Requêtes et SQL. Discussion :

Créer un formulaire de recherche


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2012
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 141
    Points : 44
    Points
    44
    Par défaut Créer un formulaire de recherche
    Bonjour,

    Je suis un bleu sous Access et je ne connais rien en VB ... :-(

    J'ai créé une table "T_Clients" avec ses différents champs et un formulaire "F_Client" qui reprend les champs de "T_Clients".

    Quand j'ouvre F_Client, je vois mon premier client et la flêche me permet de naviguer sur les prochains ou les précédents.

    Alors j'aimerai créer un formulaire qui me demande la personne à rechercher par son nom et qui m'ouvre le formulaire "F_Client" sur la personne recherchée afin de modifier sa fiche.

    Merci d'avance pour votre aide

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    Une solution simple consiste a utiliser une liste déroulante qui présente la liste des noms.

    • Cette liste (ListeNom) comporte 2 colonnes : la clef de ton client (ClefClient) et le nom du client (NomClient).
    • La 1ère colonne a une largeur de 0 ce qui fait que la liste n'affiche que le nom mais que la clef est quand même disponible.
    • Puis sur l'événement AprèsMAJ créer la procédure événementielle et mettre :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      docmd.OpenForm "NomTonFormClient",,,"[ClefClient]=" & Me.ListeNom


    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 du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2012
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 141
    Points : 44
    Points
    44
    Par défaut
    Bonjour et merci,

    Mais ou et comment puis-je utiliser ce code ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    1. Tu crées ta liste déroulante telle que décrit précédement
    2. Tu vas sur les propriétés de la liste
    3. Tu choisi l'événement Après MAJ
    4. Tu choisi 'procédure événementielle'
    5. Tu clique sur le bouton [...]
    6. Access te crée un squelette de procédure
    7. Tu mets le code dans le squelette. Évidement il faut remplacer NomTonFormClient et ClefClient par ce que tu as utilisé dans ton application.

    Note j'ai supposé que ta clefClient était un nombre, si c'est un texte il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "NomTonFormClient",,,"[ClefClient]=""" & Me.ListeNom & """"
    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 du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2012
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 141
    Points : 44
    Points
    44
    Par défaut
    Je ne m'en sors pas trop mais j'avais prévenu que je n'étais qu'un starter.

    Je souhaite donc que lorsque j'encode le nom dans le champs de recherche, il m'ouvre le formulaire "F_ModifierClient" sur la bonne personne.

    J'ai suivi à la lettre le code mais j'ai un message d'erreur et m'ouvre le deboger :

    Erreur de compilation

    Membre de méthode ou de données introuvable

    Private Sub Modifiable4_AfterUpdate() est lui surligné en jaune.


    En fait le nom a rechercher est dans T_Clients et la fenêtre à ouvrir est F_ModifierClient

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    Peux-tu poster le code associé à l'événement after update ?

    Aussi il serait bon de donner à ta liste un nom significatif, modifiable4 ce n'est pas très parlant.

    Normalement cela devrait ressembler à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub NomTaListe_AfterUpdate()
       docmd.OpenForm "F_ModifierClient",,,"[ClefClient]=""" & Me.NomTaListe & """" 'Si clef client est un texte
    end sub
    La table T_Client est très probablement la source de F_ModifierClient, et le 4ième paramètre de OpenForm met un filtre sur la source de données donc il ne va ouvrir le formulaire qui n'affichera que le client choisi.

    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.

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    Autre question, as-tu bien une liste qui affiche la clef et le nom de tes clients ?

    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.

  8. #8
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2012
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 141
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Autre question, as-tu bien une liste qui affiche la clef et le nom de tes clients ?

    A+
    Dans T_Clients j'ai bien un champs T_Client en NuméroAuto et un autre NomClient en Texte pui tous les autres : adresse, numéro, CP, ville, etc...

    C'est vrai que ce qui me bloque c'est [ClefClient], je ne sais que mettre ...

    Maintenant, plusieurs formulaires sont issus de T_Client donc lequel va-t'il prendre ? (F_ChercherClient, F_ModifierClient, F_listerClients, etc...)

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    Le formulaire sera : F_ModifierClient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "F_ModifierClient",,,"[T_Client]=""" & Me.NomTaListe & """" 'Si clef client est un texte
    Il est recommandé de ne pas nommer un champ du même nom que la table, cela rend le code moins lisible car il n'est pas toujours évident de déterminer si l'oppération s'effectuer sur la table ou sur le champ. Ne change pas forcément tout si tu as beaucoup de chose qui en dépende mais penses-y pour la prochaine BD.

    Pour les clefs primaires une convention classique est de mettre ID_NomTable (ex ID_Client) personnellement je préfère ClefClient mais c'est juste ma préférence, pas une norme.

    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.

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    Au fait lis-tu l'anglais ?

    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 du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2012
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 141
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Le formulaire sera : F_ModifierClient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "F_ModifierClient",,,"[T_Client]=""" & Me.NomTaListe & """" 'Si clef client est un texte
    Il est recommandé de ne pas nommer un champ du même nom que la table, cela rend le code moins lisible car il n'est pas toujours évident de déterminer si l'oppération s'effectuer sur la table ou sur le champ. Ne change pas forcément tout si tu as beaucoup de chose qui en dépende mais penses-y pour la prochaine BD.

    Pour les clefs primaires une convention classique est de mettre ID_NomTable (ex ID_Client) personnellement je préfère ClefClient mais c'est juste ma préférence, pas une norme.

    A+
    C'est exactement ce que j'ai fait, mais je n'ai aucun résultat ...
    La liste s'affiche mais qd j'encode un nom, rien ... même pas un code d'erreur.

    Oui je lis l'anglais dans la limite de mes moyens

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    S' il ne se passe rien, la macro ne s'exécute pas.... si le nom du contrôle (liste déroulante) à été changé il faut aussi changer le nom de la macro faisant référence au contrôle...
    A vérifier

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    On va essayer d'y voir un peu plus clair.

    Peux-ajouter l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msbox "[T_Client]=""" & Me.NomTaListe & """"
    juste avant ton DoCmd.OpenForm.

    À l'exécution, cela va t'afficher ce que Access voit maintenant et devrait nous donner une piste de solution.

    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. [PHP 5.3] Créer un formulaire de recherche avec des menus déroulants
    Par lololasticot dans le forum Langage
    Réponses: 3
    Dernier message: 01/04/2012, 15h35
  2. créer un formulaire de recherche multi critères
    Par kilia dans le forum Access
    Réponses: 1
    Dernier message: 04/08/2009, 06h03
  3. Comment créer un formulaire de recherche?
    Par Bird dans le forum ASP
    Réponses: 35
    Dernier message: 26/04/2009, 22h41
  4. Réponses: 0
    Dernier message: 23/01/2009, 09h12
  5. Réponses: 3
    Dernier message: 18/08/2006, 19h05

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