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 :

Recherche valeur approximative


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 137
    Points : 62
    Points
    62
    Par défaut Recherche valeur approximative
    Bonjour tout le monde,

    Je cherche une fonction me permettant de trouver la valeur la plus proche de celle que j'ai écris sur une page.
    Je m'explique: Des données sont écrites dans une table ou j'ai rentré une masse linéique et un temps.
    J'ai besoin de récupérer la valeur temps sur une autre table. Cependant je veut pouvoir la trouver en rentrant une masse linéique. J'arrive à faire apparaitre le temps si je tape exactement la bonne masse linéique. Si la valeur 9 existe je trouve le temps si 9,1 existe pas je n'ai pas de temps qui s'affiche. Je voudrai donc que si je tape 9,1 le temps le plus proche soit afficher, soit dans ce cas là la valeur du temps pour une masse linéique à 9.

    Mon code actuelle est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT [Siliconne].[gm], [Siliconne].[temps] 
    FROM [Siliconne] 
    where [siliconne].[gm] =[G/M]
    Je n'arrive pas a trouver un système pour trouver la valeur la plus proche.


    Merci d'avance pour votre futur aide.
    ps: c'est du sql effectué pour un sous formulaire sous access.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 062
    Points
    34 062
    Billets dans le blog
    14
    Par défaut
    Quelle est l'écart mini entre le paramètre [G/M] et tous les gm de la table ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MIN(ABS(gm - [G/M])) AS ecart_mini
    FROM siliconne
    Quel est le gm correspondant à cet écart mini ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT gm, temps
    FROM siliconne
    WHERE ABS(gm - [G/M]) = (
      SELECT MIN(ABS(gm - [G/M])) AS ecart_mini
      FROM siliconne
    )
    Attention, il peut y avoir plusieurs réponses puisqu'on travaille en valeur absolue.

    [mode humour on]
    Siliconne, c'est du silicone pour prothèses mammaires ?
    [mode humour off]

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 103
    Points : 28 396
    Points
    28 396
    Par défaut
    Quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT  s1.[gm]
        ,   s1.[temps] 
    FROM    [Siliconne] AS s1 
    WHERE   s1.[gm] = [G/M]
        AND EXISTS
            (   SELECT  1
                FROM    [Siliconne] AS s2
                HAVING   ABS(s1.[gm] - [G/M]) = MIN(ABS(s2.[gm] - [G/M]))
            )
    [Edit] Grilled

  4. #4
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    @CinePhil
    J'ai regarder la table (vu que en fait ce n'est pas moi le créateur à la base de cette base Access) et il n'y a aucun écart valable... ce sont des données qui peuvent changer suivant les produits donc ca n'est pas vraiment fixe, car si c'étais le cas j'aurais mis toutes les valeurs possibles.

    C'est du silicone pour faire des câble chauffant souple et non pour rembourrer les Mme qui ont de l'argent car autrement il y aurait pas de masse linéique mais de la masse tout cours


    @al1_24

    Je début en sql mais je connais les bases cependant ton code j'ai du mal à le comprendre. Y a t-il moyen de m'expliquer ce qu'il doit faire? Car je l'ai tester mais ca ne fonctionne pas.

    Merci en tout cas pour ces réponses rapides.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 062
    Points
    34 062
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par louzz Voir le message
    J'ai regarder la table (vu que en fait ce n'est pas moi le créateur à la base de cette base Access) et il n'y a aucun écart valable... ce sont des données qui peuvent changer suivant les produits donc ca n'est pas vraiment fixe, car si c'étais le cas j'aurais mis toutes les valeurs possibles.
    Et alors ?
    G/M est bien la valeur que tu cherches à approcher ? 9,1 dans ton exemple ?
    Tu as essayé ma requête ?


    C'est du silicone pour faire des câble chauffant souple et non pour rembourrer les Mme qui ont de l'argent car autrement il y aurait pas de masse linéique mais de la masse tout cours
    Alors silicone avec un seul n !
    Pas sili... conne !

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Autant pour moi j'avais zapé ton 2e code et tester que le premier en le modifiant et ca ne fonctionnez pas. La ca marche niquel.
    Merci à toi
    Après je sais pas si je peut poser la question ici vu que c'est plus du sql mais comment je fait pour prendre la valeur de mon champs temps qui est présente dans mon sous formulaire? j'arrive pas a trouver la syntaxe pour.
    Je fait actuellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ME]![Siliconne SF]![temps]
    Donc normalement [ME] pour formulaire actif
    [Siliconne SF] pour mon sous formulaire
    [temps] pour mon champs

    En tout cas vraiment merci à toi je galère depuis 1/2 journée la dessus à vouloir faire des truc bizarre tu m'avance grandement dans mon projet là

    Merci
    regarde la télé tu verra mes ventes de siliconne ^^

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Bonjours et bonne année a tout le monde.
    Je me permet de re up mon problème après ces fêtes de fin d'année.

    Mon soucis est toujours le même. Je n'arrive pas à utiliser une donnée présente dans un mon sous-formulaire dans le formulaire principale.
    Quelqu'un peut-il m'indiquer la syntaxe s'il vous plait?
    Mon formulaire s'appelle A mon sous formulaire B la case que je désire récupérer C.
    J'ai essayé plusieurs type de syntaxe mais aucun ne fonctionne donc si quelqu'un connais la syntaxe exacte je prend .

    Merci d'avance

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour et bonne année

    La syntaxe pour attaquer un champ du sous formulaire est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me![MonSousFormulaire].Form![MonChamp]

  9. #9
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    En suivant ta syntaxe ma fonction au total me donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux([typeext]="Silicone";(([qteàbobiner]/[Me]![Siliconne SF].[Formulaire]![temps])+10+(6*[nblongueur]))*1,2;0)
    typeext: champs de mon formulaire
    qteàbobiner : champs de mon formulaire
    siliconne SF: nom de mon sous formulaire
    Formulaire : est automatiquement mis à la place de Form
    temps: champs de mon sous formulaire
    nblongueur: champs de mon formulaire

    Cependant quand je passe en mode affichage j'ai le message #Nom? qui s'affiche.
    Ou est ce que je fait une erreur dans mon code?

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re

    Dans le cas d'erreur, j'essaye de construire la formule petit à petit.
    Commence par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Me]![Siliconne SF].[Formulaire]![temps]
    et vois ce que cela donne.
    (Si je me souvient bien, il faut se positionner sur l'enregistrement concerné du sous formulaire)

    Par contre, je ne comprends pas bien le but.
    Le principe du sous formulaire c'est d'avoir plusieurs données liées au formulaire principal. Dans ce cas là, il faut prendre quelle valeur Temps ??

  11. #11
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Si je prend juste la parti du code ca me met toujours le même message d'erreur.

    Mon but est de récupérer la valeur temps de mon sous formulaire. Celle ci es présente dans une table mais le temps est calculé par rapport à une donnée rentré par l'utilisateur.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re

    Essaye d'écrire simplement ça (le Me s'utilise uniquement en VBA)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Siliconne SF].[Formulaire]![temps]
    Vérifie aussi que Siliconne SF est bien le nom du controle dans lequel apparait le sous formulaire (il peut être différent de l'objet formulaire)

  13. #13
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Ok merci ca marche impec le problème venais donc du [Me] merci à toi.
    J'espère que je vais arriver à continuer sans trops de soucis mon projet ^^

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

Discussions similaires

  1. Excel fonction si+recherche valeur
    Par zoukah dans le forum Excel
    Réponses: 11
    Dernier message: 16/06/2008, 08h58
  2. [FORMULE]Recherche valeur approximative entre bornes
    Par philname dans le forum Excel
    Réponses: 2
    Dernier message: 25/05/2007, 15h49
  3. Recherche valeur dans table Access
    Par Stefloulou dans le forum Access
    Réponses: 1
    Dernier message: 05/11/2005, 08h45
  4. [Tableaux] Recherche valeur dans tableaux
    Par Kaimann dans le forum Langage
    Réponses: 10
    Dernier message: 21/10/2005, 11h57
  5. recherche valeur maximale entre deux champs
    Par maysa dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/05/2005, 09h40

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