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 :

sql Access zones de liste en cascade pour application statistique perso


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de thiefer
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 94
    Points : 61
    Points
    61
    Par défaut sql Access zones de liste en cascade pour application statistique perso
    Bonjour,

    Je cherche à élaborer des critères de sélection avant de réaliser des calculs statistiques.
    Je dispose donc des zones de liste qui doivent s'imbriquer.
    Cela en soit est assez simple MAIS !!!
    Je bloque sur comment paramétrer des conditions if dans mes reqûetes sql.

    J'explique :
    Les champs que j'utilise, leurs niveau de sélection et la propriété "contenu" de leurs "propriétés" :
    Niveau 1 :
    cbo_sport :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT ([sport]) FROM tbl_donnees ORDER BY sport;
    cbo_annee :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT Year([date]) AS Annee FROM tbl_donnees;
    Niveau 2 :
    cbo_trimestre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT DatePart("q",tbl_donnees.date,2,2) AS Trimestre FROM tbl_donnees GROUP BY DatePart("q",tbl_donnees.date,2,2), Year(tbl_donnees.date) HAVING (((Year(tbl_donnees.date))=Forms!f_stats!cbo_annee));
    Niveau 2' :
    cbo_mois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT Month(tbl_donnees.date) AS No_Mois, Format(tbl_donnees.date,"mmmm") AS Mois FROM tbl_donnees GROUP BY Month(tbl_donnees.date), Format(tbl_donnees.date,"mmmm"), Year(tbl_donnees.date) HAVING ((Year(tbl_donnees.date))=Forms!f_stats!cbo_annee);
    Niveau 3 :
    cbo_semaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT DatePart("ww",[date],2,2) AS Semaine FROM tbl_donnees;
    cbo_jour : 1;Lundi;2;Mardi;3;Mercredi;4;Jeudi;5;Vendredi;6;Samedi;7;Dimanche

    Exemple du code VB sur événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub cbo_annee_Change()
    Me.cbo_trimestre.Requery
    Me.cbo_mois.Requery
    Me.cbo_week.Requery
    Me.cbo_jour.Requery
    End Sub
    Vous avez compris que je vais piocher dans ma table tbl_donnees le contenu des listes que je souhaite constituer en utilisant notamment un champ date pour le décomposer en "Année", "Trimestre", "Mois", "Semaine".

    Ce que je ne parviens pas à faire :
    Le cas de double niveau 1 :
    si cbo_sport_Change()
    on filtre cbo_annee sur la sélection de cbo_sport
    si cbo_annee déjà renseigné, on conserve la sélection
    sinon champ à blanc
    fin si
    on filtre tous les niveaux inférieurs
    Fin si

    si cbo_annee_Change()
    on filtre cbo_sport sur la sélection de cbo_annee
    si cbo_sport déjà renseigné, on conserve la sélection
    sinon champ à blanc
    fin si
    on filtre tous les niveaux inférieurs
    Fin si

    Le cas niveaux 2 et 2'
    si cbo_trimestre_Change
    on filtre cbo_mois sur la sélection de cbo_trimestre
    Fin si

    MAIS

    si cbo_trimestre n'est pas renseignén valeur par défaut *all
    on filtre cbo_mois sur cbo_sport / cbo_annee

    Le cas des niveaux 3
    On choisi soit une stat par semaine, soit une stat par jour de la semaine

    Le cerise sur le gâteau, si aucune sélection de niveau supérieur n'est effectuée, une sélection sur un niveau inférieurs doit pouvoir mettre à jour ses niveaux supérieurs.


    La finalité de ces sélections est de pouvoir paramètrer une requête sql devant le retourner des stats de performances comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    SELECT 
     
    (Mes champs paramètres)
     
    tbl_donnees.sport, 
    Year(date) AS Annee, 
    DatePart("q",date,2,2) AS Trimestre, 
    Month(date) AS Mois, 
    DatePart("ww",date,2,2) AS Semaine, 
    DatePart("w",date,2,2) AS JourSem, 
     
    (Mes champs stats calculés)
     
    Count(tbl_donnees.No_enreg) AS Nb_seances, 
    Sum(temps*86400) AS Totalsec, 
    Int(Totalsec/3600) & ":" & Format(Int(([Totalsec] Mod 3600)/60),"00") & ":" & Format(([Totalsec] Mod 3600/60),"00") AS TempsTotal, 
    Avg([temps]*86400) AS Moysec, 
    Int([Moysec]/3600) & ":" & Format(Int(([Moysec] Mod 3600)/60),"00") & ":" & Format(([Moysec] Mod 3600/60),"00") AS TempsMoy, 
    Max(tbl_donnees.temps) AS TempsMax, 
    Sum(temps*fmoy)/Sum(temps) AS FrqMoy, 
    Avg(tbl_donnees.fmax) AS FrqMaxMoy, 
    Sum(tbl_donnees.Calories) AS CalTot, 
    Avg(tbl_donnees.Calories) AS CalMoy, 
    Sum(tbl_donnees.Distance_km) AS DistTot, 
    Avg(tbl_donnees.Distance_km) AS DistMoy, 
    Avg([Distance_km]/([Temps]*24)) AS VitesseMoy
     
    FROM tbl_donnees
     
    (Mes zones de regroupements)
    GROUP BY tbl_donnees.sport, Year(date), DatePart("q",date,2,2), Month(date), DatePart("ww",date,2,2), DatePart("w",date,2,2);
    Voilà, vous aurez certainement encore plus compris pourquoi je me tape la têt contre les murs quand je vous aurais dis que je débute en access et que cette petite appli perso n'est encore pas finie !!!
    Désolé de vous mettre à contribution mais je ne trouve définitivement pas de solution au travers de tous les tuto, FAQ et autres contributions en forums, d'où ce post dédié.

    J'espère que le cas de figure tenteta certains parmi vous pour me donner la main et avancer sur le sujet.

    Mille mercis par avance

    TF
    Si l'homme a deux oreilles pour une bouche, c'est pour écouter deux fois plus qu'il ne parle...

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    As-tu regarder la FAQ : "Comment faire en sorte que le contenu d'une zone de liste déroulante dépende de la valeur d'une autre liste ?" dans http://access.developpez.com/faq/?page=zdl#DepZdl

    As-tu regarder le tutorial http://access.developpez.com/cours/?...#formrecherche

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club Avatar de thiefer
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 94
    Points : 61
    Points
    61
    Par défaut évidemment
    SAlut marot_r,

    bien sûr, tu te doutes bien que si j'en suis déjà arrivé là en tant que bon vieux débutant des familles, c'est que j'ai passé quelques heures à explorer les tuto et autres post du forum comme précisé dans mon msg.
    D'ailleurs, concernant le premier lien que tu m'as communiqué, je m'était déjà demandé quelle était la différence entre les instructions having et where avant d'opter pour le solution que j'ai exposé (même si j'ai tjs pas la réponse à mon questionement...)
    Quant au second lien, j'utilise sur un autre de mes formulaires la recherche de Loufab qui est particulièrement excellente.

    En fait, je ne pense pas que ma question relevait exactement de ces points. Mais comme le msg est un peu long car j'ai voulu le détailler pour donner un maximum d'informations, cela a peut-être été noyé dans la masse...

    Pour résumer, mon problème est en niveau 1 la sélection d'un cbo sur l'autre en cascade style référence croisée (comme sur excel quand il est pas content !!!)
    L'autre point c'est en Niveau 2 & 2', comment faire pour paramétrer ma requête sql, notamment l'instruction group by dont dépendra évidemment le calcul de mes statistiques de courses.

    Si une aide peut m'être apportée, elle sera la plus que bien venue,

    Merci d'avance,

    TF
    Si l'homme a deux oreilles pour une bouche, c'est pour écouter deux fois plus qu'il ne parle...

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

Discussions similaires

  1. zone de liste en cascade
    Par alexkickstand dans le forum IHM
    Réponses: 2
    Dernier message: 11/06/2008, 17h03
  2. Réponses: 2
    Dernier message: 28/05/2008, 12h17
  3. [VBA-Access] Zone de liste : problème de séléction
    Par ushiwa.sasuke dans le forum VBA Access
    Réponses: 10
    Dernier message: 04/07/2007, 13h57
  4. Access Zone de liste
    Par Massdiop dans le forum IHM
    Réponses: 2
    Dernier message: 09/05/2007, 11h02
  5. Réponses: 2
    Dernier message: 08/03/2006, 12h27

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