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

WinDev Discussion :

Un petit coup de main sur une requête


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Un petit coup de main sur une requête
    Bonjour à tous,

    J'aborde un aspect du SQL qui me donne mal à la tête quand je tente de le résoudre avec l'éditeur de requête de WD.
    Je souhaite en une seule requête sur mon fichier FACTURES
    - obtenir CA_MOIS , total de MONT_HT compris entre pDATE1 et pDATE2
    - obtenir CA_M_ANT, total de MONT_HT compris entre pDATE3 et pDATE4
    - obtenir CA_EXER, total de MONT_HT compris entre pDATE5 et pDATE6

    Est-ce possible ? Et si oui , comment puis-je coder ça ?

    Merci d'avance à tous nos experts

    Alain

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,


    Avec l'éditeur de requête, je ne sais pas parce que je ne l'ai jamais utilisé.

    Mais, sans autres renseignements, je ne vois pas comment quelqu'un pourrait vous aider.
    Une fois encore, si vous voulez de l'aide, fournissez au moins les informations nécessaires au travail des bonnes volontés qui vont se manifester.

    Cela étant, avez-vous fait quelques recherches ? Avez-vous une ébauche de requête ?

    Bon travail

    Hemgé

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Merci d'avoir porté attention à mon problème.

    Je suis incapable de coder ce type de requête, je balbutie SQL et comme vous, l'éditeur de requête ne m'est pas familier, surtout pour créer des rubriques calculées comme j'ai besoin aujourd'hui.

    la requête que je souhaite exécuter devrait ressembler à quelque chose comme ça :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT 
     
    	SUM(FACTURES.MONTANT_HT) AS CA_MOIS WHERE FACTURES.DATE BETWEEN {pDATE1} AND {pDATE2},	
     
    	SUM(FACTURES.MONTANT_HT) AS CA_M_ANT WHERE FACTURES.DATE BETWEEN {pDATE3} AND {pDATE3},	
     
    	SUM(FACTURES.MONTANT_HT) AS CA_EXER WHERE FACTURES.DATE BETWEEN {pDATE4} AND {pDATE5},	
     
    FROM 
    	FACTURE


    Quelle est la syntaxe pour ce genre de requête, si elle existe ...

    Merci d'avance

    Alain

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu aurais eut plus de réponses dans la section SQL du forum...
    Il faut utiliser un CASE dans la fonction SUM().

    Tatayo.

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bon,

    J'étais également d'avis de vous renvoyer éventuellement au Forum SQL, si nous ne parvenions pas à vous aider.
    Mais eux non plus ne pratiquent pas l'éditeur de requête de Windev.

    Maintenant, vous pourriez passer par une requête SQL classique et HExécuteRequêteSQL.

    Donc, première question : pourquoi faut-il absolument passer par l'éditeur de requête ?

    Deuxième question
    : si vous balbutiez SQL, pourquoi voulez-vous absolument passer par une requête SQL ?
    Ce que vous souhaitez faire est parfaitement et aisément réalisable avec des fonctions H*.

    In fine, pourquoi faire développer par d'autres ce que vous devriez pouvoir faire et surtout dépendre d'un code que vous ne comprendrez pas (bien) et que vous serez incapable de corriger ou de faire évoluer ?

    Hemgé.

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    comme suggérer par tatayo tu peux utiliser un case. Pour te mettre sur la voie voici un exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HExécuteRequêteSQL(Reqfacture,"SELECT  SUM(case when DateCommande BETWEEN  '20010101' AND  '20010109'  then Commande.TotalHT end) TotalHT1," +
          "SUM(case when DateCommande BETWEEN '20010110' AND  '20010120'  then Commande.TotalHT end) TotalHT2," +
          "SUM(case when DateCommande BETWEEN '20010121' AND  '20010131'  then Commande.TotalHT end) TotalHT3 " +
          "FROM  Commande" )
     
    ConstruitTableFichier(Table_Test,Reqfacture,taLibelléRubrique)
    A toi d'adapter ce code à ton besoin.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Merci à tous de l'intérêt que vous avez porté à ma demande.

    Si je balbutie aujourd'hui en SQL, j'ai pour autant l'ambition d'avancer dans sa compréhension et sa pratique.
    Si j'utilise plus volontiers l'éditeur de requêtes de WD, c'est en raison de ce que je viens d'exposer plus haut.
    J'utilise les fonctions H* depuis 1996 (WD version 4 !!) et mes "réflexes" sont bien cristallisés.
    Difficile de penser SQL et donc grand merci à Jurassic Pork pour son exemple lumineux.

    Alain

Discussions similaires

  1. [WD20] Un petit coup de main sur une requête, svp
    Par mazeille dans le forum WinDev
    Réponses: 3
    Dernier message: 16/06/2015, 14h52
  2. Petit coup de main sur une requête
    Par foujino dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/03/2009, 13h05
  3. un pitit coup de main sur une fermeture auto
    Par MORPHEUS50 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/04/2007, 18h41
  4. besoin d'un coup de main pour une requête ;)
    Par Fabouney dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/11/2005, 23h14

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