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 :

Problème de format de date


Sujet :

Bases de données Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Problème de format de date
    Bonjour,
    Dans une boucle Do while not eof je traite les enregistrements d'une table Paradox qui comporte un champ DATE. Je récupére certains enregistrements et je les met dans une feuille excel pour plus tard réaliser des traitements statistiques sous excel.
    Exemple de traitement dans le boucle while not eof
    Feuille.Cells(L,1) := IntToStr(Table.FieldByName('Numero').AsInteger);
    Feuille.Cells(L,2) := DateToStr(Table.FieldByName('DateJ').AsDateTime);
    Feuille.Cells(L,3) := ......................(L sert de compteur de lignes)
    Le PB est le suivant :
    L'extraction fonctionne correctement, mais dans le fichier Excel je trouve des dates qui sont au format jour/mois/annee (Paramètres France) et des dates qui sont au format mois/jour/année (Param AngloSaxon).
    Et ceci de façon tout a fait aléatoire
    Qui a déjà rencontré ce problème et comment le résoudre?
    Merci de votre aide.

    Merci d'avance

    PS : quelqu'un m'a donné cette réponse mais ça ne change toujours rien :
    Feuille.Cells(L,2) := FormatDateTime('dd mm yy hh:mm AM/PM',Table.FieldByName('DateJ').AsDateTime);

    En fait du premier du mois au 12 les date sont écrite au format mm/jj/aa et quand on regarde le format de cellule excel elles sont au format jj/mm/aa, du coup quand on arrive au 13 du mois, Excel prend les jours pour des mois, et ne peut pas mettre un mois égal à 13 alors il passe au format standard, mais change quand même les dates en les faisait apparaître cette fois en jj/mm/aa.

    Exemple :
    Format affiché -> Format de cellule
    06/02/2003 -> jj/mm/aaaa
    06/03/2003 -> jj/mm/aaaa
    06/12/2003 -> jj/mm/aaaa
    13/06/2003 -> Standard

    Voilà voilà

  2. #2
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Bonjour

    Le plus sûr pour éviter des interprétations malheureuses de la part d'Excel, est de véhiculer la date sous forme numérique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Feuille.Cells(L,2) := 
    Table.FieldByName('DateJ').AsDateTime - encodedate(1900, 1, 1);
    ... comme Excel utilise comme référence le 01/01/1900
    Ainsi dans une cellule en tapant 10 et lui donnant par la suite le format date, on obtient 10/01/1900
    38938 -> 09/08/2006...
    Il ne reste donc après qu'à formater la cellule pour refléter une date.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup sa a marché,
    Il faut que juste que je mettent au format date et que je lui ajoute deux jours, et c'est dans la poche...
    A moins que je puisse ajouter directe deux jour à la base du code pour pas avoir à le faire dans Excel...

    Moi j'y connais rien en delphi je reprend la place de quelqu'un, et il faut que j'arrive a faire deux trois modif dessus, et ça c'est la dernière après tout roule

    En tout cas merci

  4. #4
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Feuille.Cells(L,2) := 
    Table.FieldByName('DateJ').AsDateTime - encodedate(1900, 1, 1) + 2;
    Pour la mise en forme, fais un tour dans la faq Delphi.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    pour ça, quelqu'un m'a montré ça : Feuille.Cells(L,2).NumberFormat := 'dd/mm/yyyy';
    Mais ça ne marche pas, la vomplilation marche, mais au moment d'exporter le fichier excel, il me dit que : "membre non trouvé"...

  6. #6
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Je vais peut-être dire une idiotie, mais ce ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Feuille.Cells(L,2).NumberFormat := 'jj/mm/aaaa';
    sur un Excel Français ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    je viens d'essayer mais ça ne marche pas plus...et pas moins

  8. #8
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Essaies peut-être avec NumberFormatLocal, sinon je ne vois pas ce qui cloche.

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

Discussions similaires

  1. Format de date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2004, 17h32
  2. Détecter le format de date au démarrage
    Par stigma dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2004, 11h04
  3. Réponses: 11
    Dernier message: 02/09/2003, 14h20
  4. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

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