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 et affichage.


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 388
    Points : 72
    Points
    72
    Par défaut recherche et affichage.
    Bonjour...
    la petite appli que je développe est un annuaire à usage professionnel..
    Dans le formulaire principal qui affiche la totalité des infos...(Nom..prenom..tel..etc..)
    j'ai inclu une zone de liste qui n'affiche que le champ nom.
    mon but est de pouvoir dans ce formulaire faire une recherche par la première lettre du nom, que le ou les résultats trouvés s'affichent dans la zone de liste et que dans cette zone on puisse sélectionner par double click le nom choisi ce qui affichera ainsi la totalite des renseignements dans le formulaire...
    je sais pas si je suis tres clair...
    Pour ce faire, j'ai donc crée 26 petits boutons de commande (pour les 26 lettres de l'alphabet).....
    Quelqu'un pourrait-il m'aiguiller sur la marche à suivre pour developper le code à affecter aux 26 commandes..?
    Merci par avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 59
    Points
    59
    Par défaut recherche et affichage
    Bonjour Paul,

    Voici un code a adapté. Je l'ai obtenu en formation, et un peu adapté. Il n'est pas complet et est a testé, cependant il te met sur une bonne piste je crois!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    On Error GoTo Text_erreur
    Dim Vble_message As String, Vble_FirstLetter As String, Strcritere As String, Vble_messageinfo As String
     
    Dim Db As Database
    Dim RecordsetRepertoirePro As Recordset
     
    'Traitement de saisie de controle de Vble_FirstLetter
    Vble_FirstLetter = A
    Msg (Vous lancer la recherche pour dans le nom commencant par A)
        Set Db = CurrentDb
        Set RstCli = Db.OpenRecordset("TaBleRepertoirePro", dbOpenSnapshot)
        RecordsetRepertoirePro.MoveLast
        Strcritere = "Nom like '" + Vble_FirstLetter + "*'"
        RecordsetRepertoirePro.FindFirst Strcritere
     
        If RecordsetRepertoirePro.NoMatch Then
            Vble_messageinfo = "Aucun client ne commence par " + Vble_FirstLetter
            MsgBox Vble_messageinfo
     
        Else
            Do While True
    ' insérer la ligne dans une table temporaire
                RecordsetRepertoirePro.FindNext Strcritere
     
                If RecordsetRepertoirePro.NoMatch Then
                    RecordsetRepertoirePro.Close
    'Faire pointer  un champ zone de liste modifiable et indépendant  (recherche nominative) sur le contenu de la table Temp' créé par le While au dessus. 
    'le parametre sera SELECT DISTINCT [Nom] FROM TableTemp ORDER BY [Name]; 
    'Paramètrer ton champ avec 1 colonne liée, non limiter à la liste, données auto étendue
     
    'Ici il faut ajouter le code associé a un evenement pour visualiser le numéro de tel associé au nom double sélectionné
     
                    Exit Sub
                End If
            Loop
       End If
    Exit Sub
    Text_erreur:
    Vble_message = "Erreur dans " + Form.Name + " sur le contrôle " + ActiveControl.Name _
      + " avec l'erreur " + CStr(Err) + " dont le texte est " + Err.Description
     MsgBox Vble_message
    Exit Sub
     
    End Sub
    @+Zeste
    cherche activement un emploi en IDF
    CarpeDiem,CarpeNoctem,
    May The Force Be With Us

  3. #3
    Expert éminent sénior
    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
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    tu trouveras des cours entiers sur la recherche ici Développement d'interfaces graphiques

    Dolphy

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 388
    Points : 72
    Points
    72
    Par défaut
    Bonsoir et merci pour vos réponses....
    Malgré les tutoriels sur les interfaces graphiques...j'ai quelques difficultes !!
    J'ai bien réussi à faire fonctionner la selection des "NOM" dans la zone de liste pour affichage dans les champs du formulaire..mais j'ai un problème pour la selection des "NOM" correspondant au critère: 1ere lettre du nom....
    Bien sur en faisant une requete ..."Comme "a*" ça fonctionne...
    j'ai mis en piece jointe le bébut de mon travail...si quelqu'un pouvait me conseiller...
    merci par avance
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent sénior
    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
    Points : 11 218
    Points
    11 218
    Par défaut
    Bonjour Paul,

    J'ai regardé ta base et j'y ai apporté quelques modifs
    • L'appel de ton form sur le double clic de ta liste n'était pas bon, tu appelais le form déjà ouvert.
    ton form affiche par défaut tous tes contacts, le mieux est d'appliquer un filtre sur le valeur de ta liste.
    • Pour afficher les noms commencant par la lettre sélectionnée :
    Modifié la source SQL de la liste par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Liste59.Recorsource = "SELECT ..."
    Liste59.Requery
    • Concernant la sélection des lettres je te conseillerais de mettre des boutons à bascule dans un groupe d'options ce qui te permetterais de gérer la source de ta liste par un SELECT CASE et le groupe d'options te permetterais également sur désélection de la bascule d'afficher tous tes contats.
    Dolphy

    Pièce jointe 4322

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 388
    Points : 72
    Points
    72
    Par défaut
    Bonjour et merci à tous ...
    Ci joint une adaptation d' un fichier tres gentiment expedié par un membre du foru.
    cela conviendrait tres parfaitement a mes besoin...après mise en forme......seulement..
    Je n'arrive toulours pas à effectuer une sélection dans la zone de liste...afin d'afficher dans le formulaire tous les champs relatifs au nom choisi.
    Pourtant j'utilise ce code dans d'autre appli avec succes..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Annuaire", acNormal, , "NOM = '" & Me.lstName & "'"
    Mais comme le dit tres justement Dolphy35, cela appele un form qui est déja ouvert....Là je plante...si quelqu'un pouvait me tuyauter sur le code...?
    De plus...à l'ouverture du form, il y a un enregistrement qui s'affiche dans les champs ,alors que je le souhaiterai vierge....
    Encore merci pour vos aide...!!
    Fichiers attachés Fichiers attachés

  7. #7
    Invité
    Invité(e)
    Par défaut Peut-être...


    Pour ton 1er problème, essaye ce code dans ta sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub lstName_Click()
    ' A supprimer
    'DoCmd.OpenForm "Annuaire", acNormal, , "NOM = '" & Me.lstName & "'"
    ' Mettre à la place
    Dim VStr, VNom, VPrenom, CritS
    VStr = Me.lstName.Column(1)
    VNom = Left(VStr, InStr(1, VStr, " ") - 1)
    VPrenom = Right(VStr, Len(VStr) - Len(VNom) - 1)
    Dim Rst As Object
    Set Rst = Me.Form.RecordsetClone
    CritS = "[NOM]= '" & VNom & "'"
    If Len(VPrenom) > 0 Then
     CritS = CritS & " AND [PRENOM]= '" & VPrenom & "'"
    End If
    With Rst
      .FindFirst (CritS)
      If Not .EOF() And .NoMatch = False Then
        Me.Form.Bookmark = .Bookmark
      End If
      .Close
    End With
    Set Rst = Nothing
    End Sub
    Est-ce que cela peut te convenir ?

    Et sinon pour l'enregistrement vide, tu peux mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
      Me.Form.Recordset.AddNew
    End Sub
    Comme ça à l'ouverture tu te trouve sur un nouvel enregistrement, qui est donc vide !

    Voilà

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 388
    Points : 72
    Points
    72
    Par défaut
    Génial !!!! pour la zone de liste et sélection....Merci !!!
    Par contre j'ai un message d'erreur "erreur d'exécutuio 2465 : erreur définie par l'application ou par l'objet)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
      Me.Form.Recordset.AddNew
    End Sub
    Why...?

  9. #9
    Invité
    Invité(e)
    Par défaut Peut-être...
    Trouver sur le net http://support.microsoft.com/default...%3Bfr%3B466159

    Changer Private en Public !?

    A+

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 388
    Points : 72
    Points
    72
    Par défaut
    Ben ...avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub Form_Open(Cancel As Integer)
    Me.Form.Recordset.AddNew
    End Sub
    Meme résultat, meme message d'erreur...
    strange

  11. #11
    Invité
    Invité(e)
    Par défaut Tu peux essayer...
    Tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord , , acNewRec
    Qu'elle version d'Access ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 388
    Points : 72
    Points
    72
    Par défaut
    Je bosse avec access97...je ne suis pas trop en avance sur mon temps....!!
    Mes vu mon niveau et les applis sur lesquelles je travaille....c'est bien suffisant...!!!!
    Maintenant, c'est parfait, génial....Merci bcp
    Si je pouvais me permettre une toute derniere question
    mais là pour moi c'est hors niveau !!!
    comment faire pour que lorsque j'effectue un nouvelle recherche sur les lettres alphabetiques, cela efface la precedente selection dans les champs?
    parcque dans l'état actuel, on trie dans la zone de liste les noms commencant par "B", mais restent affiché les renseignements de la sélection précédente exemple "T"

  13. #13
    Invité
    Invité(e)
    Par défaut Il faut ....
    Dans ta sub CallProgOne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub CallProgOne(intCurrButton As String)
    Dim tmp1, tmp2
    intCurrButton = UCase(intCurrButton)
    Me.Caption = " - " & intCurrButton & " -"
     
    DoCmd.GoToRecord , , acNewRec
     
    Etc ......

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 388
    Points : 72
    Points
    72
    Par défaut
    C'est OK...
    Merci, vraiment un grand merci pour ta patience...et compétence!!!

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

Discussions similaires

  1. [MySQL] Moteur de recherche et affichage d'une description
    Par kstou2001 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/11/2007, 14h37
  2. Réponses: 13
    Dernier message: 22/05/2007, 09h44
  3. Réponses: 6
    Dernier message: 09/02/2007, 17h24
  4. [Dojo] Recherche et affichage en liste
    Par eowene dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 21/11/2006, 15h00
  5. [SQL] Moteur de recherche problème affichage donnée dans select
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 07/04/2006, 20h27

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