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 :

Creation de requete pour conversion de Devise


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Process Improvment
    Inscrit en
    Mai 2015
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Process Improvment
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 89
    Points : 53
    Points
    53
    Par défaut Creation de requete pour conversion de Devise
    Bonjour a tous,
    Soyez indulgent je suis un nouveau sur le forum et sur Access, et excusez moi si je n'ai pas posté au bon endroit.

    Je vous explique ma problématique:
    J'ai deux tables:
    - TBLCurrency: comprenant les champs:
    - IDCurrency
    - Currency
    - CurrencyToDollar
    - CurrencyRateDate


    - Opportunity : Comprenant plusieurs champs mais voici ceux interessant:
    - Opportunity (Clé Primaire)
    - MarketCap
    - Currency
    - USDMarketCap

    Du coup ce que je veux faire c'est créer un requete (car il me semble que c'est la meilleur facon de faire) pour que quand une MarketCap de la table Opportunity n'as pas USD dans son champs Currency que la requete aille chercher le taux de change dans la TBLCurrency le multiplie par la Market Cap et que la valeur qui en résulte soit renvoyée dans le champs USDMarketCap de la table Opportunity.
    ATTENTION: petit probleme --> les Valeurs (Numerique) dans le champs MarketCap sont suivit par un "M" (pour million) ou un "B" (pour Billion) du coup il faudrait qu'il soit pris en compte dans le calcul.

    Sauriez-vous comment je dois m'y prendre?

    Merci d'avance pour votre aide

    Cordialement

    TH

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 744
    Points : 57 559
    Points
    57 559
    Billets dans le blog
    42
    Par défaut
    Bonsoir,

    Le taux de change dépend aussi de la date (currencyRateDate). On doit prendre le taux pour la date la pus récente ?

  3. #3
    Membre du Club
    Homme Profil pro
    Process Improvment
    Inscrit en
    Mai 2015
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Process Improvment
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 89
    Points : 53
    Points
    53
    Par défaut Re
    Bonjour f-leb,
    Non effectivement tu fais bien de le mentionner; la date du taux de change ne rentre pas en compte ( J'ai créer un bouton de mise a jour des taux de change qui renseigne sur la date a laquelle le VBA s'execute et pareil pour les marketCap du reste) du coup cela simplifie le code requete non ?

    Merci de ta réponse

    Cordialement

    TH

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 744
    Points : 57 559
    Points
    57 559
    Billets dans le blog
    42
    Par défaut
    Hello,

    Pas tout compris, mais bon ok, je ne m'occupe pas de la date...

    J'y vais par étape avec cette requête, voir si j'ai bien compris :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT op.IDOpportunity, op.MarketCap, op.Currency, 1 as CurrencyToDollar
    FROM Opportunity op
    WHERE op.Currency='USD'
     
    UNION ALL 
     
    SELECT op.IDOpportunity, op.MarketCap, op.Currency, nz(cu.CurrencyToDollar,'inconnu')
    FROM Opportunity op LEFT JOIN TBLCurrency cu
    ON op.Currency=cu.Currency
    WHERE op.Currency<>'USD'
     
    ORDER BY op.IDOpportunity;

    Elle devrait donc retourner le taux de change pour chaque Opportunity. Cette première requête est ok pour toi ?

    ATTENTION: petit probleme --> les Valeurs (Numerique) dans le champs MarketCap sont suivit par un "M" (pour million) ou un "B" (pour Billion) du coup il faudrait qu'il soit pris en compte dans le calcul.
    C'est un champ Texte, donc. C'est toujours suivi d'un M ou un B, jamais autre chose ?

  5. #5
    Membre du Club
    Homme Profil pro
    Process Improvment
    Inscrit en
    Mai 2015
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Process Improvment
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 89
    Points : 53
    Points
    53
    Par défaut Re:
    Salut f-leb,
    Tout d'abord merci pour ton aide et du temps que tu investis dans la réponse a ma question

    C'est un champ Texte, donc. C'est toujours suivi d'un M ou un B, jamais autre chose ?
    Alors pour ca il se peut egalement que cela ne soit suivi par rien du tout. Apres je penses pas qu'il y aura autre chose que qu'un M ou un B mais si tu as une solution qui pourrait par exemple ne relever que les caractéres numériques de ce champs ca peut etre interessant et prévenir les erreurs futures.

    Merci encore! dis moi si tu d'autres questions

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 744
    Points : 57 559
    Points
    57 559
    Billets dans le blog
    42
    Par défaut
    Bonsoir,

    Tu ne m'as pas dit si j'étais sur la bonne voie avec la requête de mon message précédent

    Concernant tes règles d'écriture, est-ce que tu suis ces règles ?
    Million/milliard et décimales

    En ce qui concerne les données budgétaires, pour des raisons de comparabilité des chiffres, il est recommandé d’utiliser les formes suivantes:

    jusqu’à trois décimales après la virgule, rester au niveau de l’unité appropriée:

    1,326 milliard (et non 1 326 millions)


    au-delà de trois décimales, descendre à l’unité inférieure:

    1 326,1 millions (et non 1,3261 milliard)

    Ainsi, la lisibilité des chiffres est meilleure et rend les comparaisons plus aisées.

  7. #7
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Bonjour,

    Cela m'intéresserait de participer à cette discussion mais, j'ai besoin d'éclaircissements:
    1. Le fait que tu possèdes une table Opportunity suppose que tu enregistres diverses conversion dans celle-ci ?
    2. Si tu as un champ "CurrencyRateDate", cela suppose que tu gardes en mémoire les différents taux de change à des dates différentes ?
      Ou est-ce simplement une donnée ponctuelle ? Si c'est le cas, à quoi sert-elle puisque elle n'a pas sont équivalent dans la table Opportunity (qui indiquerait le taux de conversion à un moment précis) ?
    3. Peux-tu nous donner les types respectifs des champs dans les deux tables (Numérique, Texte, Date, etc)
    4. Je suppose que tu disposes d'un formulaire pour appliquer le taux de change (CurrencyToDollar ?) à un montant donné ?
    5. Le plus simple serait que tu nous donnes un exemple car:
      Si tu veux créer une requête, quel serait son but ? Mettre à jour un champ dans ton formulaire ou mettre à jour toute la table Opportunity ?
      Si tu veux simplement appliquer un taux de change à une somme dans un formulaire, l'emploi d'un ComboBox dans ce formulaire appelant un DlookUp dans la table tblCurrency serait suffisant.
    6. Tu dis: "ATTENTION: petit probleme --> les Valeurs (Numerique) dans le champs MarketCap sont suivit par un "M". Cela t'oblige à définir le champ MarketCap comme du "Texte".
      Pour en extraire la valeur, il te suffit d'appliquer: Val(MarketCap)


    Bref, le plus simple serait, comme je le dis plus haut: Un exemple, voire mettre un extrait de ta bdd en pièce jointe.

    A+

  8. #8
    Membre du Club
    Homme Profil pro
    Process Improvment
    Inscrit en
    Mai 2015
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Process Improvment
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 89
    Points : 53
    Points
    53
    Par défaut RE
    Salut f-leb,

    Million/milliard et décimales

    En ce qui concerne les données budgétaires, pour des raisons de comparabilité des chiffres, il est recommandé d’utiliser les formes suivantes:

    jusqu’à trois décimales après la virgule, rester au niveau de l’unité appropriée:

    1,326 milliard (et non 1 326 millions)


    au-delà de trois décimales, descendre à l’unité inférieure:

    1 326,1 millions (et non 1,3261 milliard)

    Ainsi, la lisibilité des chiffres est meilleure et rend les comparaisons plus aisées.
    Alors pour ces regles je ne penses pas avoir plus de trois decimale mais si cela devait arriver je penses plutot que cela sera affiché comme suis: 1,089.21B (par example).


    Tu ne m'as pas dit si j'étais sur la bonne voie avec la requête de mon message précédent
    Du coup je penses qu'effectivement la requete est comme il faut (A part que tu appel ta table op au lieu de Opportunity mais c'est pas bien grave) mais ensuite pour bien faire il faudrait que le taux soit ensuite réutilisé sans etre stocké pour multiplier uniquement la valeur numérique de la market cap (sans B ou M qui sera remit a la fin du calcul) pour que le résultat soit renvoyé dans un champs USMarketCap de la table Opportunity

    Voila en tout cas merci beaucoup pour ton aide !

    Bien Cordialement
    TH

  9. #9
    Membre du Club
    Homme Profil pro
    Process Improvment
    Inscrit en
    Mai 2015
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Process Improvment
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 89
    Points : 53
    Points
    53
    Par défaut Re
    Salut f-leb,
    Je n'avais pas encore pu tester la requetes car je n'étais pas au bureau, ce qui est chose faite maintenant; du coup la requetes devrait en fait prendre les [Opportunity] ou la [Currency] n'est PAS "USD" pour ensuite la convertir en USD et pour enfin reinjecter ce résultats dans la table [Opportunities] et plus précisement dans le champs [USDMarketCap] !

    Voila tiens moi au courant et merci pour ton aide!

    Cordialement
    TH

  10. #10
    Membre du Club
    Homme Profil pro
    Process Improvment
    Inscrit en
    Mai 2015
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Process Improvment
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 89
    Points : 53
    Points
    53
    Par défaut On y est presque !!
    Re-bonjour,
    Du coup j'ai essayé d'avancer un peu; j'ai créer une nouvelles requete ( je suis pas sur que cela soit utile mais je l'ai fait) ou j'ai remis les champs de la requete precedent plus 1 autre appelé USDMarketCap qui sera renvoyé apres operation dans le champs correspondant de la table Opportunities ou j'ai mis dans les criteres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     [Currency conversion Query].[Currency]*[Currency conversion Query].[CurrencyToDollar]
    Cependant, et c'est normal, cela ne fonctionne pas car les champs impliqués sont numerique pour l'un et de type texte pour l'autre..
    Du coup f-leb comment ferait tu pour que j'arrive a réaliser mon souhait ?

    Merci pour ton aide!
    PS: Et voici le code SQL de la nouvelle requetes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Currency conversion Query].Opportunity, [Currency conversion Query].MarketCap, [Currency conversion Query].Currency, [Currency conversion Query].CurrencyToDollar, Opportunities.USDMarketCap
    FROM [Currency conversion Query] INNER JOIN Opportunities ON [Currency conversion Query].Opportunity = Opportunities.Opportunity
    WHERE (((Opportunities.USDMarketCap)=[Currency conversion Query].[Currency]*[Currency conversion Query].[CurrencyToDollar]));
    Citation Envoyé par f-leb Voir le message
    Bonsoir,

    Tu ne m'as pas dit si j'étais sur la bonne voie avec la requête de mon message précédent

    Concernant tes règles d'écriture, est-ce que tu suis ces règles ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/04/2015, 09h10
  2. [AC-2003] Creation table(s) pour requetes
    Par rastaspilo dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/05/2010, 13h46
  3. Creation d'index pour une requete
    Par firejocker dans le forum Requêtes
    Réponses: 5
    Dernier message: 21/07/2009, 15h17
  4. [MySQL] Recherche de requête pour creation d'un agenda
    Par lelectronique.com dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/10/2006, 10h12
  5. requete pour avoir CONTENU procedures stockees
    Par bmayer dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 11/02/2004, 13h20

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