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 :

Transfert de valeur dans une sous-requête


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    ingénieur civil
    Inscrit en
    Octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : ingénieur civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Transfert de valeur dans une sous-requête
    Bonjour,

    Après des heures de recherche sans trouver, j'ai décidé de demander de l'aide. Peut-être que ce que je veux faire ne peux tous simplement pas se faire.

    Je veux transmettre la valeur d'un champs d'une requête dans une autre requête à l'intrérieur d'une fonction (dsom ou somdom en l'occurrence)

    premier essai qui fonctionne mais qui ne permet pas de transmettre une valeur d'une requête à une autre :

    • 1 : j'ai une première requête R1 qui tri une partie d'une de mes tables;
    • 2 : j'ai une deuxième requête R2 qui fait un autre tri sur la même table;
    • 3 : dans ma première requête, j'ai un champs de calcul (somdom) qui calcul la somme des valeurs d'un champ de ma deuxième requête : Expr1: SomDom("[champ]";"[R2]").


    deuxième essai (ce qui change est en gras) qui ne fonctionne pas et qui renvoie le message d'erreur : "Access ne parvient pas à trouver le nom 'param' " :

    • 1 : j'ai une première requête R1 qui tri une partie d'une de mes tables;
    • 2: j'ai une deuxième requête R2 qui fait un autre tri sur la même table, mais avec un critère supplémentaire qui n'est pas définit. Ce qui fait que quand j'ouvre ma requête, il me demande d'entrer la valeur dans une boîte de dialogue puis la requête s'ouvre. le critère est : < [param]
    • 3 : dans ma première requête, j'ai un champs de calcul (somdom) qui calcul la somme des valeurs d'un champ de ma deuxième requête : Expr1: SomDom("[champ]";"[R2]").


    Ce que je n'arrive pas à faire, c'est d'envoyer un valeur d'un enregistrement comme critère pour la deuxième requête. Ainsi la deuxième requête s'effectue à chaque ligne et la fonction dsom renvoie une valeur à mettre dans le champs de la première.

  2. #2
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut
    Bonjour Guillaume418,

    C'est un peu confus.
    Ce qui me paraîtrait plus logique serait de faire dans ta première requête, appelons-la R1, une jointure entre ta table et ta deuxième requête.

    Car tu peux difficilement dans une requête sommer des éléments qui n'y sont pas !

    On peut utiliser les résultats d'une autre requête au niveau des critères (sous-requêtes), mais les champs du SELECT doivent venir des tables ou requêtes de la clause FROM, ou bien d'une fonction.

    C'est un pourcentage que tu veux calculer ?

    Cordialement.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    ingénieur civil
    Inscrit en
    Octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : ingénieur civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Ce que je veux faire est du contrôle statistique et oui je sais que ce serait plus simple en VBA, mais j'essayais de trouver une solution en utilisant que les fonctions incluses dans access sans utiliser de macro.

    Ce que je veux faire est du contrôle statistique de production d'usine. J'ai une base de données avec des résultats d'analyses de plusieurs usines et plusieurs paramètres. Ma première requête R1 extrait les résultats d'une usine pour un paramètre, ainsi que la valeur attendue de la formule et tri en ordre de production. Ma production doit respecter une formule et donc je compare le résultat avec la valeur attendue. Je dois valider un test statistique qui consiste à vérifier que sur 9 points consécutifs, on a pas plus de 7 point qui sont supérieurs ou plus de 7 points qui sont inférieurs à la valeur attendue, sinon ça pourrait indiquer qu'on ne vise plus le produit attendu. Ma première requête vérifie donc si le résultat est inférieur ou supérieur et j'ai une valeur +1 ou -1 selon le résultat :
    # Résultat formule test
    1 4 5 -1
    2 3 5 -1
    3 6 5 1
    4 3 5 -1
    5 7 5 1
    6 5 5 0
    7 4 5 -1
    8 6 5 1
    9 7 5 1
    10 5 5 0
    11 4 5 -1
    12 7 5 1

    Ensuite, ma deuxième requête vient extraire les 9 derniers résultats à chaque ligne et calculer la somme pour renvoyer dans la première requête. Je suis capable de faire cette deuxième en la faisant commencer à l'échantillon que je veux et faire le calcul, mais il faudrait que ça se répète à chaque ligne, puisque idéalement, je devrais avoir une 5e colonne dans ma requête R1 qui indique la somme des 9 derniers -1 ou +1.

    je cherche donc une solution qui me fait un calcul sur les 9 dernières lignes selon un tri et qui me renvoi le résultat à chaque ligne.

  4. #4
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut C'est beaucoup plus clair, merci
    Le # représente un n° de "paramètre usine" ?
    Sont-ils toujours consécutifs?
    Je suppose qu'il faut aussi une colonne usine dans ta requête R1, et la date de la mesure.

    Je vois plutôt la difficulté dans la manière de déterminer ton "groupe" de paramètres usines, surtout si ces paramètres sont hétérogènes d'une usine à l'autre.
    Il faut savoir déterminer le n° du dernier paramètre en fonction du 1er (ou l'inverse).

    Ou alors faire une 3e requête R3 qui calcule le n° de paramètre usine tel qu'il y a exactement 9 lignes entre lui et un n° de paramètre usine - pour une usine et date données.

    Cela donnerait: jointure R2, R3 sur (usine, date, n° paramètre début)
    R2 cumule la colonne "test" par usine, date, n° paramètre usine début, n° paramètre usine fin
    R3 fournit n° paramètre usine fin en fonction de n° paramètre usine début

Discussions similaires

  1. [MySQL-5.7] LIMIT dans une sous requête LEFT JOIN : la valeur n'est pas rendue
    Par ddaweb dans le forum Requêtes
    Réponses: 3
    Dernier message: 07/11/2017, 09h54
  2. Utiliser une liste de valeurs dans une sous-requête
    Par sagopa dans le forum Requêtes
    Réponses: 12
    Dernier message: 30/04/2012, 11h08
  3. Passer un paramètre dans une sous-requête
    Par Lucier dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/10/2007, 10h07
  4. Contourner le non-support de limit dans une sous-requête
    Par Christophe Charron dans le forum Requêtes
    Réponses: 7
    Dernier message: 04/09/2007, 10h45
  5. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 07h54

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