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

IHM Discussion :

Afficher un client après un dbl_click dans une zone de liste


Sujet :

IHM

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut Afficher un client après un dbl_click dans une zone de liste
    Bonjour à tous et à toutes,

    j'ai formulaire principal frmPrincipal contenant 2 sous-form frmRechercheClient et frmClientInfos

    Dans frmRechercheClient y a dans une zone de liste des clients.
    J'aimerais afficher les infos du client dans frmClient (à droite) après avoir double-cliqué sur lstClient du frmRechercheClient (à gauche)

    Pour le moment j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub lstClient_DblClick(Cancel As Integer)
        Dim SQL As String
     
        SQL = "SELECT * FROM t_client WHERE id='" & Me.lstClient & "';"
     
        ' affichage des infos du client
        Forms!frmPrincipal!frmClientInfos.RowSourceType = "Table/Query"
        Forms!frmPrincipal!frmClientInfos.RowSource = SQL
        Forms!frmPrincipal!frmClientInfos.Requery
     
    End Sub
    Mais malheureusement ça marche pas....
    Pourriez-vous m'aider s'il vous plait ?

    Merci d'avance
    @+

  2. #2
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Regarde dans l'aide comment utiliser: DoLookUp
    ça pourrait t'aider

  3. #3
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    je vois:
    un problème dans l'identification du client, car je suppose que dans ta zone de liste tu mets un nom et un prénom pour les clients en non pas un n° donc si dans la liste tu sélectionne un client x tu dois mettre la colonne liée par exemple
    un autre très général n'utilise pas de nom de variable avec des noms réservé comme sql mais prend strSql par exemple

    donc ton code devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub lstClient_DblClick(Cancel As Integer) 
        Dim strSql As String 
     
        Strsql = "SELECT * FROM t_client WHERE id='" & Me.lstClient.column(n° de la colonne liée) & "';" 
     
        ' affichage des infos du client 
     
        Forms!frmPrincipal!frmClientInfos.RowSource = strsql
        Forms!frmPrincipal!frmClientInfos.Requery 
     
    End Sub
    normalement çà devrait fonctionner

  4. #4
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    après quelques recherches... à DoLookUp j'ai enfin trouvé DLookUp...

    Je pense avoir a peu près compris le principe mais y a un truc que je pige pas. DLookUp est cencé afficher une valeur en fonction d'une requête...
    Alors comment afficher toutes les infos du client selectionné :

    Car avec ceci je n'arrive pas à cibler le formulaire frmClientInfos :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub lstClient_DblClick(Cancel As Integer)
        Dim id As Integer
        Dim var As Variant
     
        id = Me.lstClient.Value
     
        ' affichage des infos du client dans frmClientInfos
        var = DLookup(Forms!frmPrincipal!frmClientInfos, "t_client", "id =" & id)
     
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    je m'excuse mais je ne pense pas que Dlookup soit la bonne méthode.
    ton idée d'utiliser le rowsource est bien la bonne.
    A+

  6. #6
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    posts croisés.... merci Alexandre Sahli ! Je regarde ça tout de suite...

  7. #7
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Tchupacabra,
    J'avoue que j'avais pas bien compris ton pb;sinon t'as pas besoin de tout ça;pour ton pb c'est plutot du coté de Champs Fils et Champs Pére que tu devrais regarder.Cherchons ça ensemble dans la FAQ.
    @+
    Voila j'ai trouvé une piste:
    http://access.developpez.com/faq/?pa...rm#PosPereFils

  8. #8
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Alexandre Sahli :

    avec :
    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
    Private Sub lstClient_DblClick(Cancel As Integer)
        Dim id As Integer
        Dim strSQL As String
        Dim var As Variant
     
        id = Me.lstClient.Value
        strSQL = "SELECT * FROM t_client WHERE id='" & id & "'"
    	'strSQL = SELECT * FROM t_client WHERE id='2'"
     
        ' affichage des infos du client
        Forms!frmPrincipal!frmClientInfos.RowSourceType = "Table/Query"
        Forms!frmPrincipal!frmClientInfos.RowSource = strSQL
        Forms!frmPrincipal!frmClientInfos.Requery
     
    End Sub
    J'ai une erreur 438 : Propriété ou méthode non gérée par cet objet à la ligne RowSourceType;

    keita : je regarde ça !!!! Merci beaucoup.

    @bientôt

  9. #9
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Tchupacabra

    regarde bien le code que je t'ai donné il ne faut pas mettre cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Forms!frmPrincipal!frmClientInfos.RowSourceType = "Table/Query"
    je vois que tu as essayé avec un n° de client, ce qui veux dire que dans ta liste tu affiches les n° des clients? oui/non

    Peut être se serait plus sympa d'afficher les noms?

    A+

  10. #10
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Alexandre Sahli :

    idem sans RowSourceType ... erreur sur RowSource ( j'avais aussi essayé )
    ceci est la requête qui alimente lstClient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQL = "SELECT id, nom+', '+prenom FROM t_client WHERE nom LIKE '*" & critere & "*'"
    Il en ressort 2 champs avec le premier (l'ID) caché avec une largeur de colonne à 0cm


    keita :

    Alors j'ai essayé de mettre ceci :

    Objet Source : frmClientInfos
    Champs fils : Forms!frmPrincipal!frmClientInfos!txtID
    Champs père : Forms!frmPrincipal!frmRechercheClient!lstClient

    dans les données du sous formulaire frmClientInfos

    Mais cela n'a pas l'air de fonctionner...

  11. #11
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    on vas encore essayer

    garde ton 1er code de select

    et essaye de changer le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Forms!frmPrincipal!frmClientInfos.form.RowSource = strSQL 
        Forms!frmPrincipal!frmClientInfos.form.Requery
    c'est un problème d'atteindre un formulaire indépendant par un autre formulaire.

  12. #12
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    toujours pas Alexandre Sahli....
    mais ceci marche : Forms!frmPrincipal!frmClientInfos.Visible = False

    Apparemment RowSource ne s'applique pas aux formulaires !!!

  13. #13
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    si si rowsource c'est bien pour les formulaires je vais faire un essais demain soir et je te tiendrais au courant à moins que quelqun soit plus rapide

  14. #14
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Tchupacabra a ecrit:
    Champs fils : Forms!frmPrincipal!frmClientInfos!txtID
    Champs père : Forms!frmPrincipal!frmRechercheClient!lstClient

    dans les données du sous formulaire frmClientInfos
    Essai ça:
    1/crée une zone de liste sur frmPrincipal;par ex ZL
    2/dans la source de ZL tu ecris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =frmRechercheClient.Formulaire!lstClient
    3/quand tu passes d'un enreg à un autre dans frmRechercheClient tu devrais voir les lstClient defiler dans ZL
    4/pour frmClientInfos:
    dans Champs peres tu mets [ZL]
    dans Champs fils tu mets [txtID]
    5/navigue dans frmRechercheClient
    6/tu caches ZL
    j'espere que ça marchera.

  15. #15
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Hello,

    j'ai finalemant modifié la structure de frmPrincipal en incorporant lstClient directement sans passer par frmRechercheClient
    Ensuite, j'ai mis :
    Champs fils : id
    Champs père : lstClient
    et là ça marche

    SAUF QUE ! la mise est automatique.... alors que j'aimerais utiliser l'événement dbl_click()....

  16. #16
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Bonjour
    citation:
    SAUF QUE ! la mise est automatique.... alors que j'aimerais utiliser l'événement dbl_click
    Je peux savoir pourquoi tu tiens au double click?c'est surement pour executer quelque chose?et si tu allais au bout de ton idee?ton pb,il me semble n'était pas d'afficher simplement les infos;sinon tu l'as.
    :cdrom:
    @+

  17. #17
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Mon idée est simple...
    J'ai un ensemble de controle à gauche de frmClientInfos qui me permettent de faire une recherche rapide d'un client.
    Mon ensemble formant ma recherche :
    - 1 champ de saisie txtRechercheClient
    - 1 groupe d'option
    - 1 zone de liste (lstClient)

    A chaque changement de txtRechercheClient et du groupe d'option, il y a un rafraîchissement de lstClient, ainsi pas besoin de bouton "Lancer la recherche"

    Le problème est donc que ce rafraîchissement de lstClient modifie automatiquement frmClientInfos... et c'est pas très propre ...

    Vous voyez ce que je veux dire :

  18. #18
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Content que tu soies revenu à la solution père/fils, nettement plus efficace. Ceci dit, la solution d'Alexandre marche impec et peut être plus souple.

    Bon, disons que tu veux différer la mise à jour du sous-formulaire.
    Pourquoi ne pas :
    - ajouter un contrôle caché, boîte de texte indépendant. On va l'appeler "txtPèreCaché",
    - c'est ce contrôle que tu déclares comme "champ père" du sous formulaire,
    - lorsque tu double clic sur ta liste, tu mets simplement la valeur de la liste dans ce champ caché (txtPèreCaché = lstClients) -> mise à jour du sous-formulaire.

    Je pense que, pour être nickel, tu devrais aussi, dès que le contenu du sous-formulaire n'est plus valide, c'est à dire,
    - dès que tu changes txtRechercheClient et/ou le groupe d'options (dès que tu rafraîchis lstClients),
    - tu devrais masquer le sous-formulaire (.Visible = False)
    - pour le réafficher lors du clic (simple clic, ça te suffit pas ? ou double si tu insistes) sur la liste.

    Ceci dit, en termes d'ergonomie, j'aime bien que
    - lorsque la liste change,
    - le 1er client apparaisse immédiatement,
    - quitte à en choisir un autre si on veut...

    À tes utilisateurs de décider ce qu'ils préfèrent, comme d'hab.
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  19. #19
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    pas bête J'aime bien toutes ses astuces...

    Merci à vous tous, mon problème est réglé mais j'aimerais par contre comprendre pourquoi le RowSource ne marche pas... (la méthode Alexandre Sahli)

    @+

  20. #20
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    La methode d'Alexandre marche;mais peut etre que tu n'as pas pensé qu'il fallait passer par du code pour raffraichir tes ssForms;soit l'evenement click d'un bouton, soit l'event exit d'un autre controle.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/06/2007, 14h07
  2. Réponses: 2
    Dernier message: 05/12/2006, 15h29
  3. Réponses: 2
    Dernier message: 04/09/2006, 16h58
  4. Afficher 2 colones d'un tableau dans une zone de liste
    Par Floch dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 09h37
  5. Afficher un champ de la BD dans une zone de texte
    Par uloaccess dans le forum Access
    Réponses: 3
    Dernier message: 25/11/2005, 23h38

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