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 :

Récupérer la valeur d'une requête dans un formulaire


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut Récupérer la valeur d'une requête dans un formulaire
    Bonjour

    J'ai besoin de récupérer la valeur d'une requête dans un formulaire suivant le choix d'une liste déroulante (N°_client)
    La requête fonctionne car lorsque je l'ouvre seule, on me demande le numéro de client et si j'entre un numéro, ça fonctionne !

    Mais lorsque je crée un champ dans mon formulaire ou j'ai la liste déroulantes des clients, le champ indique #Nom?. Voici ce que j'ai mis comme source:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[R_Calcul_somme_payé_par clients_-365]![SommeDeSommepayé]
    D'avance merci

    Paselo

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    si cette requête n'est pas la source du formulaire, cela ne peut pas fonctionner comme cela, il faut utiliser une fonction de domaine.
    Mais le plus simple je pense, c'est d'ajouter cette requête dans celle utilisée dans la liste déroulante et de faire une jointure par le N° de client. En ajoutant le champ [SommeDeSommepayé] dans ta liste déroulante, tu peux récupérer la valeur via le n° de colonne correspondant, comme l'index des colonnes commence par 0, si ton champ [SommeDeSommepayé] est le 3ème, la syntaxe est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CMonnaie([TalisteDeroulante].Column(2))
    [EDIT:]Cmonnaie sert à convertir le montant texte en valeur numérique
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    #Nom? c'est normal car tu ne peux pas écrire l'expression telle que tu l'as écrit
    C'est plus tôt du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    = RechDom("SommeDeSommepayé";"R_Calcul_somme_payé_par clients_-365"; "N°client =" & Me!Nomcombobox ) 'si N°client est numérique
    = RechDom("SommeDeSommepayé";"R_Calcul_somme_payé_par clients_-365"; "N°client ='" & Me!Nomcombobox &"'") 'si N°client est texte
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Merci pour vos réponses mais mon formulaire de base est basé sur une table et non pas une requête....

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RechDom("SommeDeSommepayé";"R_Calcul_somme_payé_par clients_-365";"N°client =" & [Me]![Chiffre_affaire])
    Voilà ce que j'ai tenté mais sans succès...

    Il est clair que je pourrais baser mon formulaire sur une requête mais j'ai peur que d'autres choses ne suivent pas...

  6. #6
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Capture d'écran de votre form
    Syntaxe de votre req R_Calcul_somme_payé_par clients_-365
    Quel rapport entre la tbl qui alimente votre form et la req ?
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Citation Envoyé par paselo Voir le message
    Merci pour vos réponses mais mon formulaire de base est basé sur une table et non pas une requête....
    ce n'est pas un problème pour la solution que je t'ai proposé avec la liste déroulante ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    La liste déroulante ainsi que les chmaps nom, prénom, etc est basé sur la T_Client

    Nom : Capture.PNG
Affichages : 519
Taille : 120,2 KoNom : 2.PNG
Affichages : 515
Taille : 79,2 Ko

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    la requête que tu montres est-elle celle de la liste déroulante client ?
    si oui, il ne faut pas filtrer avec un contrôle du formulaire
    est-ce que la requête renvoie plus d'un enregistrement par N° de Client ( c-à-d peut-il y avoir plusieurs montants par client) ?

    [EDIT:] ne s'agit-il pas d'un champ d'un sous-formulaire ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    non c'est la requête qui me donne la somme payé par clients !

    La liste déroulante est basée sur la table client !

    non il y a qu'un seul montant car j'ai fait un regroupement dans une autre requête

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    donc si tu utilises la requête en question à la place de ta liste déroulante pour sélectionner un client, tu peux récupérer le montant par la méthode que je t'ai donné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CMonnaie([TalisteDeroulanteClient].Column(2))
    si la colonne 3 contient le montant
    Mais il faut enlever le critère sur le N° client dans la requête en question
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Merci pour l'info mais est-ce possible de garder ma T_Client pour la liste déroulante?Car j'ai peur de devoir changer pas mal de choses dans les procédures événementielles...
    Je vais voir....

    J'ai essayé avec une requête mais il y a un premier problème... lors du chargement du formulaire, ça bloque sur DoCmd.GoToRecord , , acNewRec

    Merci

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Ok ça fonctionne !!! enfin presque... il y a le problème du "DoCmd.GoToRecord , , acNewRec" mais je pense pouvoir le contourner en bidouillant ou alors je l'oubli car je pense pouvoir m'en passer...

    Mais le problème est que le champ "sommepayé" est un calcul pour savoir ce que les clients ont payé au cours des 365 derniers jours! donc ça marche mais je ne vois que les clients qui ont une valeur dans la somme payée. Donc les clients qui n'ont pas dépensé d'argent ne sont plus là alors que j'en ai aussi besoin... et dans la valeur, que le chifffe soit à zéro !
    Le problème vient de ma première requête je pense...

    Nom : 1.PNG
Affichages : 541
Taille : 33,6 Ko
    Merci

    J'avance... tout fonctionne sauf le DoCmd.GoToRecord , , acNewRec sur le chargement. Car avait j'étais basé sur une table et maintenant, un requête

  14. #14
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Je pense qu'il serait bon d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Payé le : Entre Date() Et DateSérie(Année(Date())-1;Mois(Date()),Jour(Date()))
    ! Et les années bissextiles ?

    Concernant votre méthode acNewRec, je pense que c'est plus tôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "NomDuform", , , , acFormAdd
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Ma commande servait à ouvrir le formulaire en se mettant sur nouvel enregistrement de la table qui était dans la liste déroulante ... mais maintent, je ne suis plus avec une table mais une requête donc comme lui dire de se mettre sur un nouvel enregistrement de la T_client ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord acDataTable, "T_client", acNewRec
    Voilà ce que j'ai essayé mais il me dit que la table n'est pas ouverte...

    Merci

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Finalement le fait d'utiliser une requête, me pose des problèmes par rapport à la table !
    Car dans mon formulaire, j'affiche les adresses des clients comme on peut le voir dans les images précédentes... Mais avec le bouton nouveau, je crée aussi des clients et je n'arrive plus à la faire si je me base sur ma requête !!!!

  17. #17
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Merci pour l'info mais est-ce possible de garder ma T_Client pour la liste déroulante?Car j'ai peur de devoir changer pas mal de choses dans les procédures événementielles...
    Je vais voir....
    cela ne devrait rien changer à l'existant, si c'est la table et non pas une requête que tu utilises dans ta liste déroulante, il te suffit juste de créer une requête avec tous les champs de ta table (avec T_Client.*) ensuite d'ajouter la requête contenant les montants et faire une jointure gauche (ou Left Join, ç-à-d tous les enregistrements de T_Client et seulement ceux de la requête [R_Calcul_somme_payé_par clients_-365] pour lesquels les champs joints sont égaux), puis de sélectionner le champ contenant le montant à afficher.
    Ensuite tu devras juste modifier les propriétés Nbre colonnes et Largeur colonnes de ta liste déroulante.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  18. #18
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Bon, il serait peut-être grand temps de "mettre les pendules à l'heure".

    On vient demander de l'aide à propos d'une liste déroulante, alimentée par une tblClient pour extraire le résultat d'une req dans une textbox, si j'ai bien tout capté.

    Si j'en crois la capture du post#8, le form principal dans la zone Détail contient les éléments Client provenant de la tblClient.
    La combobox située au-dessus de la zone Détail, à droite du btn Nouveau client, semble être la combobox pour choisir un N°client. Donc si tel est bien le cas, cette combobox sera alimenté dans le style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT idClient, nomClient FROM tblClient;
    et sur le AfterUpdate() de cette combobox, on aura
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Combobox_AfterUpdate()
        Dim rs As Object
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[idClient] = " & Str(Nz(Me![ComboBox], 0)) '<--si valeur numérique
        ' ou rs.FindFirst "[idClient] ='" & Me![ComboBox] & "'" '<-- si valeur string
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub
    et la textbox indépendante qui permettra d'afficher les sommes déjà payées par le client sera alimentée par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    = RechDom("SommeDeSommepayé";"R_Calcul_somme_payé_par clients_-365"; "idClient =" & Me.idClient ) 'si N°client est numérique
    = RechDom("SommeDeSommepayé";"R_Calcul_somme_payé_par clients_-365"; "idClient ='" & Me.idClient &"'") 'si N°client est texte
    Post#8 dans la req R_Calcul_somme_payé_par clients_-365 que vient faire la tblClient puisque qu'il y a déjà idClient dans la req source R_Calcul_somme_payée_-365 ?
    Post#15 pour ouvrir un form sur un nouvel enregistrement la syntaxe est bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.OpenForm "NomDuform", , , , acFormAdd
    ou Me.Recordset.AddNew
    Alors à quoi servirait le btn Nouveau client ?
    fin du ban pour ma part.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Bonjour et merci à vous deux pour toutes ces explications, je vais faire des tests...

    tee_grandbois, j'avais fait quelques choses dans le genre et ça marchait jusqu'à ce que je crée un nouveau client avec le bouton en haut à droite... Lorsque je clic sur ce bouton, je peux remplir les champs nom, prénom, adresse, etc qui sont juste en dessous du bouton ! ça marche lorsque je travaille avec une table mais lorsque je travaille avec la requête, access n'accepte pas de créer un nouveau client ...

    hyperion13, le bouton nouveau ne sert pas à créer un nouveau formulaire mais à créer un nouveau client dans la T_Client

    Désolé si mes explications ne sont pas très claires...

    J'ai essayé la méthode avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim rs As Object
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[N°_client] = " & Str(Nz(Me![Recherche_Client], 0)) '<--si valeur numérique
        ' ou rs.FindFirst "[idClient] ='" & Me![ComboBox] & "'" '<-- si valeur string
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RechDom("[SommeDeSommepayé]";"R_Calcul_somme_payé_par clients_-365";"N°_Client =" & [Me].[N°_Client])
    Et voilà ce que j'ai sur le contenu de la liste déroulante [Recherche_client] :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT T_Client.N°_Client, T_Client.Nom_client, T_Client.Prénom, T_Client.Localité, T_Client.Adresse FROM T_Client ORDER BY T_Client.Nom_client, T_Client.Prénom;

    Mais sans succès ... réponse : #nom? ... peut-être qu'il y a une erreur dans les champs ou dans la syntaxe

    J'ai bricolé quelques choses de pas très académique et pas très propre mais comme je m'y connais très peu en access, j'ai ajouté un sous-formulaire en prenant R_Calcul_somme_payé_par clients_-365 et grâce aux champs père-fils, ben ça marche mais j'aimerais bien faire quelques choses de propre...

    Merci


    Paselo

  20. #20
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    J'ai bricolé quelques choses de pas très académique et pas très propre mais comme je m'y connais très peu en access, j'ai ajouté un sous-formulaire en prenant R_Calcul_somme_payé_par clients_-365 et grâce aux champs père-fils, ben ça marche mais j'aimerais bien faire quelques choses de propre...
    c'est propre si cela fonctionne.
    Mais sans succès ... réponse : #nom? ... peut-être qu'il y a une erreur dans les champs ou dans la syntaxe
    cela concerne quel problème ?
    si cela concerne le montant avec la fonction de domaine,il n'est pas conseillé de nommer les objets avec des caractères réservés (comme les signes arithmétiques + et -), met le nom de la requête entre crochets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[R_Calcul_somme_payé_par clients_-365]"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

Discussions similaires

  1. [AC-2010] Récupérer une valeur d'une requête dans une variable
    Par Braiice dans le forum VBA Access
    Réponses: 9
    Dernier message: 30/08/2018, 14h16
  2. Récupérer les valeurs d'une feuille dans un formulaire
    Par abdelkarim_1987 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/08/2013, 20h14
  3. Réponses: 4
    Dernier message: 02/08/2013, 12h53
  4. Récupérer les valeurs d'une requête SQL dans un champs html SELECT
    Par tamiii dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/11/2007, 13h27
  5. Valeur d'une requête dans 1 formulaire
    Par liop49 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 07/07/2006, 10h02

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