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 :

Paramétrage d'une requête selon une période - je cale


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut Paramétrage d'une requête selon une période - je cale
    Bonsoir à tous,
    content de revenir sur le forum après quelques mois d'absence. Depuis plusieurs jours, je sèche lamentablement sur le problème suivant et je n'ai trouvé aucune doc me donnant un début de solution. J'ai un fichier série (voir table ci-dessous)
    Nom : tableséries.JPG
Affichages : 310
Taille : 40,7 Ko

    À partir de ce fichier j'alimente une table remplie par une requête paramétrée dans une fenêtre. Le paramètre passé est égal à un des différents millésimes et devrait permettre d'afficher les séries. En prenant l'exemple ci-dessus, si je tape comme paramètre "2013", je voudrais avoir dans la table les lignes suivantes : Série 1, Série 3 et Série 4; avec "2015", les lignes Série 3 et Série 6.
    Je n'arrive pas à trouver la logique de paramétrage de la requête. Merci pour vos conseils et pistes à suivre.
    Bonne soirée
    Bernisch

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Une requête du style
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT *
    FROM
       MaTable
    WHERE
       MaTable.Millesime={pAnnée}
       OR
       MaTable.Début={pAnnée}
       OR
       MaTable.Fin={pAnnée}
    devrait faire l'affaire
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    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,
    Voroltinquo : la requête ne va pas, car il faut que l'année saisie soit entre la date de début et la date de fin.
    Il faut donc utiliser un between dans la requête, comme ceci:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select *
    from Latable where 2013 between debutperiode and finperiode or millesime = 2013
    En remplaçant 2013 par un paramètre bien sûr.

    Tatayo.

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    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 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Si on met 2013 comme paramètre, on veut (1,3,4) ou (1,3,4,5)
    Si on veut (1,3,4,5), la proposition de tatayo me paraît très bien.
    Si on veut (1,3,4) comme dit au début, alors la proposition de tatayo me paraît toujours très bien.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Je suis d'accord avec @tatayo mais je ferais plutôt comme ça en retirant le paramètre millésime
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from Latable where {param_année} between year(debutperiode) and year(finperiode)
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  6. #6
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut j'avance un peu
    bonjour à tous,
    je n'ai pas encore testé la dernière proposition, mais comme je ne suis pas un pro de SQL, voilà l'avancement : au niveau de la requête tout fonctionne comme je le désire :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT*
    FROM SérieT WHERE {Param1} BETWEEN debutsérie AND finsérie OR millésime = {Param2}
    Par contre cela se complique avec le code sur clic du bouton de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HExécuteRequêteSQL(REQ_RechSéries,MaConnexion1, select*  FROM SérieT  where {Param1} BETWEEN debutsérie AND finsérie OR millésime = {Param2})
     
    REQ_RechSéries.Param1 = SAI_Choix
    REQ_RechSéries.Param2 = SAI_Choix
     
    TableAffiche(TABLE_REQ_RechSéries,taCourantBandeau)
    Deux remarques: la table n'affiche aucune lignes avant recherche et lors du clic j'ai le message suivant "Erreur de syntaxe sur le mot "SérieT", le fichier ne semble pas reconnu.
    Merci beaucoup pour ces premières aides.
    Bernisch

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Il faut déclarer ta requête comme ça si c'est une requête que tu écris à la main dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MaReq est chaine = "select *  FROM SérieT  where %1 BETWEEN debutsérie AND finsérie OR millésime = %1"
    REQ_RechSéries est source de données //Doit être déclarée en globale si tu veux la lier à ta table
     
    HExécuteRequêteSQL(REQ_RechSéries,MaConnexion1, ChaineConstruit(MaReq,SAI_Choix))
     
    TableAffiche(TABLE_REQ_RechSéries,taCourantBandeau)
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  8. #8
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par bernisch Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HExécuteRequêteSQL(REQ_RechSéries,MaConnexion1, select*  FROM SérieT  where {Param1} BETWEEN debutsérie AND finsérie OR millésime = {Param2})
     
    REQ_RechSéries.Param1 = SAI_Choix
    REQ_RechSéries.Param2 = SAI_Choix
     
    TableAffiche(TABLE_REQ_RechSéries,taCourantBandeau)
    Bonjour Bernisch,

    Déjà, je considère que tu as déclaré REQ_RechSéries en tant que source de données.
    Ensuite, tu dois affecter tes paramètres avant l'exécution de la requête.
    De plus, tu dois gérer les "exclusions".
    Finalement, ta requête n'est pas tip top :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    si TypeRecherche "Période" alors 
    REQ_RechSéries.Param1 = SAI_Choix
    REQ_RechSéries.Param2 = NULL
    sinon
    REQ_RechSéries.Param1 = NULL
    REQ_RechSéries.Param2 = SAI_Choix
    fin
     
    HExécuteRequêteSQL(REQ_RechSéries,MaConnexion1, select *  FROM SérieT  where DebutSerie >= {Param1} AND finsérie <= {Param1} OR millésime = {Param2})
     
    TableAffiche(TABLE_REQ_RechSéries,taCourantBandeau)
    Fait un peu à l'arrache et sans filet... alors pas taper

    PS : tu as calé, alors pour redémarrer prend un coup de gewurtz !
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  9. #9
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut Un grand merci
    Un grand merci à tous pour votre aide. Tout fonctionne correctement et comme je le souhaitais. Si j'ai bien compris, cela ne servait à rien que je me torture la tête avec l'éditeur de requêtes.
    Bonne fin de journée
    Bernisch

  10. #10
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Lorraine power !!!!

    Note : Je n'utilise plus l'éditeur de requête depuis des années...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

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

Discussions similaires

  1. Requête selon une période de temps
    Par sholik dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/11/2010, 22h48
  2. Réponses: 1
    Dernier message: 06/05/2007, 23h22
  3. [Requête]Comment obtenir un montant à partir d'une période saisie
    Par holoaccess dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 30/03/2007, 11h08
  4. Réponses: 4
    Dernier message: 09/08/2006, 11h05
  5. [Débutant] Paramétrage d'une requête SQL
    Par sunchai dans le forum Oracle
    Réponses: 2
    Dernier message: 31/07/2006, 11h48

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