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

C# Discussion :

Liste d'articles classée par dates


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut Liste d'articles classée par dates
    Bonjour,

    Je ne sais pas par quel bout prendre mon problème.

    Partons du principe que j'ai une table MaTable[id, date, titre, texte]

    Je souhaite créer une liste de "ajaxToolkit:Accordion" ayant pour header "MOIS12", "MOIS11", etc. Et en contenu mes articles DANS LE BON accordion.

    Suis-je assez explicite ?

    Merci de votre aide ?

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Pour faire cela, le plus simple est d'utiliser les fonctions de fénétrage en SQL.

    http://sqlpro.developpez.com/cours/sqlaz/fonctions/

    Pour te donner un exemple, il faudrait connaitre le SGBD utilisé.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Le SGBD est MySQL.

    Mon champs date est au format "19/03/2012"

    En header de mon accordionPane je voudrais par exemple "MARS 2012" et dans le content, les articles dont la date est de ce mois.

  4. #4
    Membre très actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Décembre 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 111
    Par défaut
    Salut,par rapport à ton problème il y a quelques mises au points à faire:
    1.Selon la loi de la Base des Données(Les approches de la conception),il est strictement interdit d'utiliser des Champs Composés(Les Agrégations).
    2.Il faut rendre elementaire tes champs Càd:
    Qu'il ait un champs Jour,Mois,Année.
    C'est pour cela t'as de problème lorsque tu veux prendre une valeur Composant la Date.
    Bon Passons à la Programmation:
    Ta listBox doit afficher les données par Date?
    il suffit juste de faire une requête de Trie en utilisant la Clause Where par rapport à la date démandée
    Exemple:
    Affichez les produits vendues le 12/01/2012
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Req="Select libproduit,prix_produit,Date_Vendue From Vente where Date_Vendu='12/01/2012'";
    Merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Bonjour et merci pour l'aide.

    Mon problème n'est pas la requête sql (j'en fais à longueur de journée).

    J'ai donc dû mal m'exprimer.

    Mon problème EN C# c'est de :

    1. de créer une liste de mois à partir des dates de ma table
    2. Créer des AccordionPane avec cette liste descendante (header)
    3. Mettre les titres dans le bon AccordionPane (content)

    Je n'arrive pas à utiliser les Accordion dans mon code behind car je n'arrive pas à trouver le bon using ... Ca part donc déjà mal

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hlama Voir le message
    2.Il faut rendre elementaire tes champs Càd:
    Qu'il ait un champs Jour,Mois,Année.
    C'est pour cela t'as de problème lorsque tu veux prendre une valeur Composant la Date.
    En quel honneur ?

    Une date est une valeur unitaire. Il n'y a pas lieu de la décomposer, et ce, pour X raisons :
    - Comment mettre en place des contraintes sur les mois et jours, si les champs ne sont pas liés ?
    - Comment convertir une date d'un calendrier à un autre
    - Tu fais comment si je te dis que je désire la liste des jours de la semaine 25 ?

    Au contraire, la date doit être stockée dans un unique champ, dans le type dédié. Ensuite, on dispose de toutes les fonctions pour :
    - formater la date pour l'affichage
    - la trier chronologiquement
    - la filtrer

    Et le problème viens bien de la requête SQL :
    - Il faut récupérer la date de tes articles au format MOIS-ANNÉE
    - Il faut les trier par date

    Et ensuite au niveau de C# tu te contente de changer de pane lorsque tu changes de mois. Mais les données doivent être déjà triées et formatées en amont !

    Quel SGBD utilises-tu ?

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Hlama Voir le message
    Salut,par rapport à ton problème il y a quelques mises au points à faire:
    1.Selon la loi de la Base des Données(Les approches de la conception),il est strictement interdit d'utiliser des Champs Composés(Les Agrégations).
    Depuis quand une date est un champs composé ? (tant est qu'on utilise un champs de type DATE, et pas un stockage exotique en chaine de caractére).
    Une date est un champ atomique au sens de la 1FN

    2.Il faut rendre elementaire tes champs Càd:
    Qu'il ait un champs Jour,Mois,Année.
    Portnawak !!!!

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Ensuite, on dispose de toutes les fonctions pour :
    - formater la date pour l'affichage
    - la trier chronologiquement
    - la filtrer

    Et le problème viens bien de la requête SQL :
    - Il faut récupérer la date de tes articles au format MOIS-ANNÉE
    - Il faut les trier par date
    Non, si j'ai bien compris,il veut un regroupement par mois. Et c'est précisément une application facile des fonctions de fenétrage. (question : MySql supporte-t-il les fonction de fenétrage ?? je n'en sais rien; c'est du standard SQL 2005, mais avec MySql il faut s'attendre à tout).

    Et ensuite au niveau de C# tu te contente de changer de pane lorsque tu changes de mois. Mais les données doivent être déjà triées et formatées en amont !
    +1

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Bonjour et merci, vous me rassurez quand au champs date qui doit être unique et de format date (ou datetime). J'y perdais mon latin ...

    Comme je l'ai dit, le SGBD est MySQL et, d'après le lien fournit par BlueDeep, MySQL n'autorise pas le fenêtrage ...

  10. #10
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Pour moi, je fenêtrage n'est pas spécialement nécessaire.

    La requête à utiliser en pseudo SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select format(date, MOIS-ANNEE), id, titre, texte
    from articles
    where date between (maintenant - 1 an) and maintenant
    order by date asc;
    Ensuite, dans ton code, lorsque tu lis le résultat, tu changes de pane à chaque changement dans le résultat de la requête. Pour moi ça suffit amplement à résoudre ton problème, à moins que je n'aie vraiment rien compris à la question !

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Merci StringBuilder.

    Je viens de tester la requête dans EMS Studio.

    Le "format(date, "MOIS-ANNEE") me découpe bizarrement la donnée ...

    J'obtiens un champs avec par exemple :

    20,120,319,125,600

    Bizarre non ?

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Pour moi, je fenêtrage n'est pas spécialement nécessaire.
    ...Ensuite, dans ton code, lorsque tu lis le résultat, tu changes de pane à chaque changement dans le résultat de la requête. Pour moi ça suffit amplement à résoudre ton problème, à moins que je n'aie vraiment rien compris à la question !
    Tu as parfairtement raison; j'ai eu une lecture un peu rapide de sa demande : je pensais qu'il voulait faire des cumuls par mois. Et en fait il veut des détails regroupés par mois; donc, c'est plutot un GROUP BY sur un CONVERT en mois, année de la date qu'il faut utiliser.

  13. #13
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Pas de GROUP BY pour moi, puisqu'on n'utilise pas de fonction d'agrégation (MIN, MAX, etc.)

    Donc un simple ORDER BY date (non formatée) afin d'avoir les articles par ordre chronologique. La date étant formatée dans la partie SELECT, afin de savoir dans quel objet rattacher l'article.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Ok, donc dans ma requete, il faut que je récupère le couple "mois/année" et qu'ensuite je groupe mes articles avec ça ?

    Si vous avez une idée de la requête Jamais fait de conversion de dates dans une requete

  15. #15
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Scots Voir le message
    Merci StringBuilder.

    Je viens de tester la requête dans EMS Studio.

    Le "format(date, "MOIS-ANNEE") me découpe bizarrement la donnée ...

    J'obtiens un champs avec par exemple :

    20,120,319,125,600

    Bizarre non ?
    "MOIS-ANNÉE" n'est pas un pattern valide pour MySQL, tout comme FORMAT est certainement pas une fonction de formatage de date. C'est du pseudo SQL afin que tu comprennes ce qu'il y a à faire. J’exècre MySQL, donc je n'ai même pas l'envie de rechercher dans la doc pour trouver la syntaxe, je te laisse chercher

    https://www.google.fr/search?sourcei...ql+date+format

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    J'avais bien compris et remplacé la pattern par YYYY et MM Mais le résultat est le même ...

    Je vais chercher

    Merci

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    Well, ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select DATE_FORMAT(date, '%M %Y') as moisDate, id, titre, texte, date
    from maTable
    where date between "2011-09-01 00:00:01" and "2012-03-19 23:59:59"
    order by date DESC;
    Dans le champs moisDate j'obtiens bien : "Mars 2012"

    Cool

    Plus qu'à trouver le using manquant pour gérer l'accordion en code behind ...

  18. #18
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Pas de GROUP BY pour moi, puisqu'on n'utilise pas de fonction d'agrégation (MIN, MAX, etc.).
    Vais aller me recoucher, moi, tiens ....

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Par défaut
    J'irais bien aussi lol ... surtout avec mon angine !

    Well, du coup je suis paumé avec mon Accordion moi malgra que j'ai trouvé le using ...

  20. #20
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Je t'aiderais bien un peu plus, mais je sais pas ce que c'est qu'un Accordion ni d'où sortent les "ajaxtoolkit" dont tu parles

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/10/2007, 16h56
  2. [CLI] Liste les modifications par date ?
    Par eplic dans le forum CVS
    Réponses: 0
    Dernier message: 03/08/2007, 13h06
  3. [Spip] afficher tous mes articles de la rubrique sauf les 4 derniers (par date)
    Par kikirun dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 28/06/2007, 18h01
  4. trier une liste de répertoire par date de création
    Par airod dans le forum Général Python
    Réponses: 9
    Dernier message: 10/12/2006, 21h17
  5. [JSP] Trier par date une liste de fichier en JSP
    Par Total dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 21/02/2006, 16h38

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