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

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    juillet 2018
    Messages
    94
    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 : 94
    Points : 74
    Points
    74
    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 : 57
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
    Membre éprouvé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 703
    Points : 1 155
    Points
    1 155
    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

  3. #3
    Expert éminent
    Homme Profil pro
    Responsable Datas
    Inscrit en
    janvier 2009
    Messages
    4 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Datas

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 017
    Points : 9 352
    Points
    9 352
    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
    2 683
    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 : 2 683
    Points : 5 874
    Points
    5 874
    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 éclairé
    Homme Profil pro
    Inscrit en
    mai 2003
    Messages
    437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : mai 2003
    Messages : 437
    Points : 774
    Points
    774
    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
    94
    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 : 94
    Points : 74
    Points
    74
    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 éclairé
    Homme Profil pro
    Inscrit en
    mai 2003
    Messages
    437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : mai 2003
    Messages : 437
    Points : 774
    Points
    774
    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 confirmé
    Avatar de frenchsting
    Homme Profil pro
    mutlitâche-multifonction
    Inscrit en
    juin 2003
    Messages
    3 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : mutlitâche-multifonction
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2003
    Messages : 3 423
    Points : 5 794
    Points
    5 794
    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 par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
    Pas de question par MP s'il vous plait. Le forum est fait pour cela...

    Make it real not fantasy

  9. #9
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    juillet 2018
    Messages
    94
    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 : 94
    Points : 74
    Points
    74
    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 confirmé
    Avatar de frenchsting
    Homme Profil pro
    mutlitâche-multifonction
    Inscrit en
    juin 2003
    Messages
    3 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : mutlitâche-multifonction
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2003
    Messages : 3 423
    Points : 5 794
    Points
    5 794
    Par défaut
    Lorraine power !!!!

    Note : Je n'utilise plus l'éditeur de requête depuis des années...
    Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
    Pas de question par MP s'il vous plait. Le forum est fait pour cela...

    Make it real not fantasy

+ 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, 23h48
  2. Réponses: 1
    Dernier message: 07/05/2007, 00h22
  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, 12h08
  4. Réponses: 4
    Dernier message: 09/08/2006, 12h05
  5. [Débutant] Paramétrage d'une requête SQL
    Par sunchai dans le forum Oracle
    Réponses: 2
    Dernier message: 31/07/2006, 12h48

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