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

Bases de données Delphi Discussion :

ClientDataSet, un champs Date, Index


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Ukraine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 162
    Points : 163
    Points
    163
    Par défaut ClientDataSet, un champs Date, Index
    Bonjour,
    Sous Delphi XE2,
    J'ai un ClientDataSet, avec entre autre un champs nommé "Date" au format String, contenant évidemment une date valide (dd/mm/yyyy).
    Je voudrais indexer (pour trier dans l'ordre ascendant le contenu de la table) en utilisant le champs "Date".
    Mais en faisant cela, appliquant soit IndexDefs, ou IndexName. Les données sont classées mais bizarrement seulement en utilisant la partie dd de la chaine "Date".
    Par exemple, les données 12/09/2012, 28/11/2012, 04/12/2012 sont triées ainsi 04/12/2012, 12/09/2012, 28/11/2012, ce qui n'est pas correct.
    Auriez-vous une idée de comment faire correctement ?

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par djiga4me Voir le message
    J'ai un ClientDataSet, avec entre autre un champs nommé "Date" au format String
    Citation Envoyé par djiga4me Voir le message
    Par exemple, les données 12/09/2012, 28/11/2012, 04/12/2012 sont triées ainsi 04/12/2012, 12/09/2012, 28/11/2012, ce qui n'est pas correct.
    Je dirais que ce tri est malheureusement correct, puisque tu manipules une chaine de caractères. Regarde le 1° caractère de chaque date, le tri est dans l'ordre alphabétique.

    Utiliser un champ de type date (au lieu de string) serait beaucoup plus approprié.

    @+

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Avoir un champ date en format string dans une BDD me semble être (est) une aberration .
    les données 12/09/2012, 28/11/2012, 04/12/2012 sont triées ainsi 04/12/2012, 12/09/2012, 28/11/2012, ce qui n'est pas correct.
    ce tri est correct, puisque fait sur une zone Alphanumérique, dans ce contexte '0' est bien avant '1' lui-même avant '2'

    s'il y avait besoin d'une preuve ou d'un argument pour convaincre de stocker une Date au format Date ou TimeStamp dans une BDD , vous l'avez

    [edit] grillé par Cl@udius
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Ukraine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 162
    Points : 163
    Points
    163
    Par défaut
    D'accord, merci beaucoup. Je finirais par reconvertir toutes les données.
    Ce qui m'étonne, c'est qu'avant une petite correction n'ayant aucun rapport avec cela dans le logiciel, le tri ne marchait plus alors qu'avant, même avant champs String, ça marchait très bien.

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    A chaque fois que tu triera un champs text forcement tu aura cette problématique.

    Soit tu change le type de ton champs en TDate,
    Soit du écrit ta date à l'envers 2014/11/17 pour pouvoir trier en alphanumérique.

    Mais @Sergio à raison.

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

Discussions similaires

  1. [perf] poser un index sur un champ date
    Par kaymak dans le forum Administration
    Réponses: 4
    Dernier message: 04/02/2009, 11h02
  2. formater un champ date dans un select
    Par sbeu dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/04/2006, 16h44
  3. récuperer année d'un champ date
    Par tomm dans le forum Bases de données
    Réponses: 11
    Dernier message: 12/05/2004, 16h24
  4. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  5. procedure stockée champ date
    Par tripper.dim dans le forum SQL
    Réponses: 5
    Dernier message: 25/04/2003, 09h47

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