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 :

Requête SQL entre deux dates


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Requête SQL entre deux dates
    Bonjour,
    Je travaille sur un projet windev et j'attaque une base de données MySQL.
    J'ai une table recettes avec ces identifiants recettes(IDRecettes, libellé, Date, Montant, IDentreprise), IDentreprise est une clé qui migre dans la table recettes venant de la table entreprise.
    J'ai aussi fait une fiche(fenêtre) dont le nom est FEN_req_date et sur cette fiche il y a deux champs de saisi de dates, SAI_Date1 et SAI_Date2 avec le bouton valider .
    J'ai aussi fait un état que j'ai nommé ETAT_req_date et cet état doit affiché le résultat d'une requête nommé req donc j'en parlerai ci-dessous lorsqu'on clique sur le bouton validé.

    La requête req fait sous SQL doit me permettre d'afficher le résultat entre deux dates c'est à dire afficher les recettes entre la date saisie SAI_Date1 et entre la date saisie SAI_Date2 qui figurent sur la fiche. Mais lorsque je l’exécute, elle affiche toutes les données de la table sans tenir compte des deux dates saisies SAI_Date1 et SAI_Date2.
    Ci-dessous ma requête SQL dans le code du bouton validé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    req est une Source de Données
    param1 est une chaîne
    param2 est une chaîne
     
    param1 = FEN_req_date.SAI_Date1
    param2 = FEN_req_date.SAI_Date2
     
    HExécuteRequêteSQL(req," SELECT Recettes.IDRecettes AS IDRecettes, Recettes.libellé AS libellé, Recettes.Date AS DATE, Recettes.Montant AS Montant,Recettes.IDEntreprise AS IDEntreprise FROM Recettes WHERE Recettes.Date BETWEEN  {Param1} AND {Param2}  " ) 
    iAperçu(i100)
    iImprimeEtat(ETAT_req_date,req)
    Merci de m'aider à trouver une solution à ce problème car j'y suis bloqué.
    Bien à vous.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 052
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 052
    Points : 9 387
    Points
    9 387
    Par défaut
    Après l'initialisation de param1 et param2, affiche les 2 valeurs, et vérifie qu'elles sont bien au format Année-Mois-Jour.

    Si le format n'est pas bon, c'est une bonne piste.
    Si le format est bon, modifie la requête en mettant comme condition

    where to_char(recettes.date, 'YYYYMMDD') between ... ...
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Comment afficher les paramètres?
    où insérer le code que vous proposé?

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    tbc92, je n'avais pas compris ta requête dès le depart. Mais j'ai modifié la mienne avec le bout de code que tu m'as proposé. C'est toujours le même resultat.

  5. #5
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour ,


    Je ne connais pas cette syntaxe et j'ai parcouru l'aide en ligne et je n'ai pas trouvé d'exemple sur celle que tu proposes.
    Je testerai le retour de la requête pour être sur que celle-ci s'exécute correctement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SI PAS HExécuteRequêteSQL(req," SELECT Recettes.IDRecettes AS IDRecettes, Recettes.libellé AS libellé, Recettes.Date AS DATE, Recettes.Montant AS Montant,Recettes.IDEntreprise AS IDEntreprise FROM Recettes WHERE Recettes.Date BETWEEN  {Param1} AND {Param2}  " ) ALORS
    Erreur(HErreurInfo(hErrComplet))
    SINON
    iAperçu(i100)
    iImprimeEtat(ETAT_req_date,req)
    FIN
    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    il y a une chose qui me paraît bizarre dans ta requête c'est que tes paramêtres param1 et param2 sont dans le texte de la requête. Comment veux-tu que les valeurs que tu as définies avant se subsituent au param1 et param2 de ta requête SQL ?
    la syntaxe d'une requête paramétrée n'est pas celle que tu utilises.
    Ce qui me paraît étrange aussi c'est que le résultat de cette requête soit tous les enregistrements. Es-tu sur qu'elle s'exécute ?
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    ok est ce que vous pouvez me faire la proposition d'une requête pour regler mon problème? car la requête que j'ai utilisé est celle de windev et je l'ai copiée pour l'adaptée à mon projet puisque j'utilise les mêmes tables.
    Je pose donc le problème. Aidez moi à programmer une requête SQL selon mon projet:

    Je travaille sur un projet windev et j'attaque une base de données MySQL.
    J'ai une table recettes avec ces identifiants recettes(IDRecettes, libellé, Date, Montant, IDentreprise), IDentreprise est une clé qui migre dans la table recettes venant de la table entreprise.
    J'ai aussi fait une fiche(fenêtre) dont le nom est FEN_req_date et sur cette fiche il y a deux champs de saisi de dates, SAI_Date1 et SAI_Date2 avec le bouton valider .
    J'ai aussi fait un état que j'ai nommé ETAT_req_date et cet état doit affiché le résultat d'une requête nommé req donc j'en parlerai ci-dessous lorsqu'on clique sur le bouton validé.

    La requête req fait sous SQL doit me permettre d'afficher le résultat entre deux dates c'est à dire afficher les recettes entre la date saisie SAI_Date1 et entre la date saisie SAI_Date2 qui figurent sur la fiche. Mais lorsque je l’exécute, elle affiche toutes les données de la table sans tenir compte des deux dates saisies SAI_Date1 et SAI_Date2.

    Merci de votre aide et bien à vous.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Tu as deux solutions ici: soit utiliser une requête paramétrée, soit construire la requête comme une simple chaine.
    Dans les deux cas tu peux jeter un œil dans l'aide en ligne avec ces indices.
    Bonne recherche

    Tatayo.

  9. #9
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 133
    Points : 204
    Points
    204
    Par défaut
    je ne pense pas que tu devrai compter sur les autres pour te donner un travail déjà mâché.
    jurassic pork t'a donné deux pistes intéressantes que tu devrai suivre et c'est simple.
    pour la première il te suffit de remplacer '{param1'} et '{param2}' par les valeurs correspondantes
    pour la deuxième, (vérifier si la requête est exécuté), il suffit d'ajouter une condition (par exemple sur IDRecette) et voir si le résultat retourné correspond.

    fait nous part des résultats des testes afin de pouvoir t'aider d’avantage.

    Bonne continuation.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    bonjour je ne sais pas si vous avez trouver la solution mais bon ,, voila la solution simple pour toute fin utile

    il faut utiliser WL.ChaîneVersDate dans ta requette sql

    HExécuteRequêteSQL(req," SELECT Recettes.IDRecettes AS IDRecettes, Recettes.libellé AS libellé, Recettes.Date AS DATE, Recettes.Montant AS Montant,Recettes.IDEntreprise AS IDEntreprise FROM Recettes WHERE Recettes.Date BETWEEN WL.ChaîneVersDate({Param1}) AND WL.ChaîneVersDate({Param2})
    " )



    Bon Courage

Discussions similaires

  1. [2008] Requête SQL entre deux bases de données distinctes
    Par Sobhi9009 dans le forum Développement
    Réponses: 5
    Dernier message: 31/12/2014, 13h03
  2. requete SQL entre deux dates
    Par Augustule dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/10/2013, 13h01
  3. Requête SQL entre deux tables
    Par DeWaRs dans le forum Langage SQL
    Réponses: 7
    Dernier message: 05/11/2012, 14h31
  4. [TQuery] Requête somme entre deux dates
    Par delphino7 dans le forum Bases de données
    Réponses: 15
    Dernier message: 22/04/2008, 10h43
  5. Requête sql entre deux tables
    Par jojo86 dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/02/2008, 19h19

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