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 :

Dataview trié par date


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 212
    Par défaut Dataview trié par date
    Bonjour,

    J'ai un dataset qui est la copie d'une table SQLite.
    Cette table possède des informations de date en string.

    Je filtre le dataset avec un dataview. Cela fonctionne très bien depuis des années.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                ArticleDataSet.Tables[0].DefaultView.RowFilter = CMDFilter;
                DVIEW_Articles = ArticleDataSet.Tables[0].DefaultView;
    Aujourd'hui je voudrais que le résultat soit affiché trié par date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                ArticleDataSet.Tables[0].DefaultView.RowFilter = CMDFilter;
                DVIEW_Articles = ArticleDataSet.Tables[0].DefaultView;
                DVIEW_Articles.Sort = "DateSortie";
    Mais, évidemment c'est un tri de chaîne de caractère, et "12/02/2021" vient après "02/06/2023"

    J'ai essayé de modifier le type de la colonne "Date" dans le dataset (SQLite ne connaît que le type TEXT) mais j'ai une exception. Impossible de changer le type d'une colonne contenant des données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                DVIEW_Articles.Table.Columns["DateSortie"].DataType = typeof(DateTime);
    Même sans données, avec ça avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                DVIEW_Articles.Table.Clear();
    J'ai cette exception

    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Citation Envoyé par AMP29 Voir le message
    Mais, évidemment c'est un tri de chaîne de caractère, et "12/02/2021" vient après "02/06/2023"
    J'ai essayé de modifier le type de la colonne "Date" dans le dataset (SQLite ne connaît que le type TEXT) mais j'ai une exception. Impossible de changer le type d'une colonne contenant des données.
    En SqlLite les dates ne sont pas obligatoirement en type TEXT.
    Il existe également le type REAL qui doit être le nombre de jours le début du calendrier grégorien.
    Il existe également le type INTEGER qui est le nombre de seconde depuis la date UNIX.

    Certes, le type TEXT est le plus simple à mettre en œuvre mais encore faut-il respecter la manière dont il est stocké.
    Ce qui différencie un texte d'une date c'est le format (une date doit être stockée au format ISO8601, sinon c'est pas une date, c'est une chaine).
    Et c'est ton application de formater cette date au format où tu souhaite l'afficher.

    Extraite de la documentation de SQLite :
    SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

    • TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
    • REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
    • INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.


    Applications can choose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.

  3. #3
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 212
    Par défaut
    Merci pour toutes ces explications, Popo.
    Je vais étudier cela.

Discussions similaires

  1. [SQL-VBA]tri par date dans access
    Par Mickey_Mouse dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/02/2007, 09h49
  2. Optimisation d'un tri par date
    Par padawa dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/05/2006, 15h48
  3. requete : tri par date + groupement
    Par cbe dans le forum Requêtes
    Réponses: 8
    Dernier message: 08/01/2006, 19h30
  4. tri par date
    Par Digiduck dans le forum Requêtes
    Réponses: 5
    Dernier message: 06/06/2005, 21h51
  5. [ XML ][ XSL ] tri par date
    Par zozolh2 dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/08/2004, 10h19

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