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 :

Lancer une requête exiqtante et récupérer un champ


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Lancer une requête exiqtante et récupérer un champ
    Bonjour,

    Alors cette fois j'essaie de tout faire nickel !!!

    Déjà je présente mon problème. J'ai une grosse table avec des champs
    NOMPRENOM ANNEE SEMAINE AFF HT

    J'ai créé une requête qui, lorsque les champs NOMPRENOM, ANNEE et SEMAINE sont identiques, fait la somme du champs HT et calcule 2 nouveaux champs HP et COEFFP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT BILANPERS.NOMPRENOM, BILANPERS.ANNEE, BILANPERS.SEMAINE, Sum(BILANPERS.HT) AS SommeDeHT, IIf(Sum(BILANPERS.HT)<=39,Sum(BILANPERS.HT),IIf(Sum(BILANPERS.HT)>47,(Sum(BILANPERS.HT)-47)*1.5+49,(Sum(BILANPERS.HT)-39)*1.25+39)) AS HP, HP/Sum(BILANPERS.HT) AS COEFFP
    FROM BILANPERS
    GROUP BY BILANPERS.NOMPRENOM, BILANPERS.ANNEE, BILANPERS.SEMAINE;
    J'aimerais lancer cette requête depuis un bouton auquel est associée une macro et récupérer pour chaque trio (NOMPRENOM,ANNEE,SEMAINE) identique la valeur de COEFFP correspondante.

    Comment faire ?

    J'ai tenté la commande mais ça ne m'avance pas pour récupérer la valeur du champ COEFFP.

    Merci d'avance !

    P.S. : j'ai crû comprendre qu'il y avait une histoire d'ADO (j'utilise access 2003) mais je n'ai rien compris !!!

  2. #2
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Bonjour,

    En VBA access, la commande docmd.OpenQuery ne peut être utilisée que pour des requêtes d'action ( Update, Insert, Delete...)
    Si tu veux effectuer une requete de sélection tu peux utiliser les recordset

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dim rs as recordset
    dim requete as string
     
    requete = "SELECT * FROM CLIENT")
    set rs = curentDB.openrecordset(requete)
     
    msgbox rs.field("Nom") & "  " & rs.field("Prenom")
     
    rs.close
    voilà un petit exemple. j'espère qu'il pourra t'être utile.


    PS: si ta requete renvoie plusieurs résultats tu peux les traiter dans une boucle foreach.
    rePS: j'ai tapé le code un peu rapidement, il pourrai y avoir des fautes de frappe

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,
    Citation Envoyé par dontdriveatruck Voir le message
    Alors cette fois j'essaie de tout faire nickel !!!
    Merci, nous apprécions vraiment quand un problème est bien exposé.

    Citation Envoyé par dontdriveatruck Voir le message
    J'aimerais lancer cette requête depuis un bouton auquel est associée une macro et récupérer pour chaque trio (NOMPRENOM,ANNEE,SEMAINE) identique la valeur de COEFFP correspondante.

    Comment faire ?
    Tu devrais nous expliquer ce que tu entends par "récupérer".
    En effet, cela va forcément orienter notre réponse.

    Alors "récupérer" comment ?
    En les ajoutant dans une table, par exemple ?
    _

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Alors en fait j'entends par "récupérer" le champ COEFFP, pouvoir utiliser la valeur COEFFP pour chaque triplet (NOMPRENOM,ANNEE,SEMAINE) pour multiplier un champ dans une autre table.

    En gros pour t'expliquer le principe :

    Pour chaque personne (NOMPRENOM) et pour chaque semaine de l'année (SEMAINE,ANNEE) j'ai un nombre d'heures effectuées. Je veux obtenir le nombre d'heures pondérées en fonction des heures sup payées à 25% ou 50% de plus. Donc en fonction du nombre d'heures je calcule COEFFP et en suite je multiplie le nombre d'heures effectuées par COEFFP pour obtenir le nombre d'heures pondérées.

    Je suis clair ?!

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par dontdriveatruck Voir le message
    Alors en fait j'entends par "récupérer" [...]

    Je suis clair ?!
    Ce que j'ai compris:

    Tu as créé une requête de regroupement de données qui donne une liste d'enregistrements (avec NOMPRENOM, ANNEE, ADRESSE... et le fameux COEFFP).

    Tu souhaites utiliser la valeur de ce champ COEFFP pour multiplier la valeur d'un champ d'une table (peut-être est-ce encore la table BILANPERS ?), étant entendu que le rapprochement des enregistrements Requête-Table se fait sur les champs NOMPRENOM, ANNEE, SEMAINE.

    Si j'ai bien compris, alors il me semble que tu dois créer une nouvelle requête sélection qui réalise une jointure entre:
    - la première requête-COEFFP et
    - la table où se trouve la valeur "cible" (la table BILANPERS ?).
    Dans cette nouvelle requête sélection, il faut créer un champ "nombre d'heures pondérée" qui effectue l'opération à partir du champ COEFFP de ta requête et le champ "cible" de la table (peut-être est-ce le champ BILANPERS.HT ?)

    Le bouton sera alors utilisé pour exécuter la nouvelle requête et afficher le résultat, dans une feuille de données, par exemple.
    _

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Je suis désolé de ne pas avoir répondu plus tôt. J'ai une grosse affaire en cours alors je ne me suis plus penché sur ça. Mais dès que je me remets le nez dedans je te tiens informé.

    Merci pour l'aide.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/10/2013, 13h30
  2. Réponses: 10
    Dernier message: 04/09/2008, 09h11
  3. [WINDEV10] Bouton pour lancer une requête
    Par Milanber9999 dans le forum WinDev
    Réponses: 2
    Dernier message: 10/01/2007, 11h46
  4. Réponses: 1
    Dernier message: 13/12/2006, 03h16
  5. [info] [réseau] Lancer une appli distante et récupérer i/o
    Par legzo dans le forum Entrée/Sortie
    Réponses: 16
    Dernier message: 29/06/2005, 13h48

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