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++Builder Discussion :

Probl�me d'affichage de date dans une base de donn�e


Sujet :

C++Builder

  1. #1
    Membre �m�rite
    Avatar de Gouyon
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 140
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 140
    Billets dans le blog
    5
    Par d�faut Probl�me d'affichage de date dans une base de donn�e
    Salut

    J'ai une base de donn�e ACCESS et j'ai cr�er une application base de donn�es en utilisant BDE. Tout fonctionne bien sauf que:

    J'ai un champs qui me pose probl�me, c'est le champs heure.

    Je r�cup�re sa valeur dans un TDBEdit pour la et il affiche:

    30/12/1899 17:31:28
    au lieu de
    17:31:28

    J'ai essay� de forcer les format et les type mais rien � faire.

    Quelqu'un aurait il une solution

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    C'est normal car tu utilises sans doute un champ DateTime, donc la date et l'heure sont enregistr� dans la BD.

    Tu n'a qu'� faire afficher le texte � partir du onzi�me caract�re et tout devrais �tre beau .

  3. #3
    Membre �m�rite
    Avatar de Gouyon
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 140
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 140
    Billets dans le blog
    5
    Par d�faut
    Citation Envoy� par Crayon
    C'est normal car tu utilises sans doute un champ DateTime, donc la date et l'heure sont enregistr� dans la BD.

    Tu n'a qu'� faire afficher le texte � partir du onzi�me caract�re et tout devrais �tre beau .
    Effectivement c'est un champs DateTime mais j'ai bien sp�cifi� sous acces que ce champs est un champs heure au format HH:MM:SS ( bon c'est du microsoft on te dit que tu peu choisir en tre bleu et rouge et au final tu as du vert )

    Par contre je ne vois pas comment tu affiches seulement � partir du 11�me caract�re dans un contr�le TDBEdit

  4. #4
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonsoir,
    Dans un DBEdit effectivement, c'est pas tr�s pratique.

    N�anmoins, tout d�pends des objets que tu as a ta dispo pour la connexion a la table. Je viens de faire un petit test, mais pas sous Access (d�sol� �a me donne de l'urticaire), et si tu dispose d'un objet qui g�re l'�v�nement OnDataChange comme un TDatasource par exemple, on devrais pouvoir traiter l'affichage.
    Un petit exemple donc, juste une proposition a tester dans ton cas, sous reserve surtout que cela soit applicable pour Access :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    void __fastcall TForm2::DataSource1DataChange(TObject *Sender, TField *Field)
    {
       if (DBEdit1->Field != NULL)
       {
            DBEdit1->Text = TimeOf(DBEdit1->Field->AsDateTime);
       }
    }
    (ne pas oublier alors d'inclure )

    En esp�rant t'aider,
    @ +

  5. #5
    Membre �m�rite
    Avatar de Gouyon
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 140
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 140
    Billets dans le blog
    5
    Par d�faut
    Ton id�e me semble pas mal d'autant plus que dans ce cas plut�t que d'utiliser un TDBEdit j'utiliserais un TDateTimePicker (c'est plus joli).

    Par contre si je surcharge le OnDatachange est ce que je doit remplir de la m�me mani�re tous les autres contr�les ? ou vont t'ils se remplirent automatiquement??

    PS moi aussi acces me donne de l'urticaire

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    43
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Par d�faut
    Bon je suis en plein taf de projet de BTS qui consiste a faire dialoguer un prog en c++ (d�velopp� sous borland) avec une base de donn�es ACCESS...
    Apparement, m�me si ton champ d'heure est pr�cis� comme juste heure genre "hh:mm:ss", sous access, il te fout la date "30/12/1899" automatiquement quand tu r�cup�re les infos sous builder alors qu'en visualisant sous access il t'affiche que l'heure...
    Pour r�soudre � �a, dans une requ�te, je fais:

    select format(Hour(ChampHeure),'00') & ':' & format(minute(ChampHeure),'00')& ':' & format(Seconde(ChampHeure),'00')
    AS [Heure]
    from MaTable

    Cela va m'afficher, dans un DBGrid, l'heure sous forme 17:31:00, �a tronque la date!!! Le r�sultat est donn� dans un champ nomm� "Heure" (d'ou le " AS [Heure]. En fait il lit le champ de la BDD, effectue l'op�ration de tronquage et affiche le r�sultat dans un nouveau champ appel� "Heure"

    Apr�s, pour ton pb, je pense que en mettant ton DataSource (du DBEdit) sur le composant qui effectue la requete et le DataField sur le champ "Heure"

  7. #7
    Membre exp�riment� Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Par d�faut autre id�e
    Salut a tous,

    les requettes sur la date pause parfois problem dans la syntaxe de la
    requete sql selon les BD

    tu prends la date et la convertis en style USA
    exemple :
    20070405 date du jours est plus grand que les dates pass�es "normalement"
    30012006 est plus grand que la date du jours et mais elle est ancienne

    la solution : je cree un champ numerique qui contient les date converties
    convertis en USA sans separateur, je me soucis plus des
    problems de syntaxe pour afficher des valeur se trouvant entre
    une date et une autre.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
      AnsiString DateInt;
      TDateTime dtPresent = Now();
      Word Year, Month, Day;
     
      DecodeDate(dtPresent, Year, Month, Day);
     
      DateInt = IntToStr(Year) + IntToStr(Month) + IntToStr(Day);
    Date = composant TDateTimePicke
    pour enregistrer la date dans ta bd en "JJ/MM/AAAA" si c'est configurer
    comme cela dans les parametres regionales du pc

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
      D_SIGNED->Date  = Now();  // date du jours
     
      W_SIGNED->Text = WeekOfTheYear( D_SIGNED->Date ); // nr semaine
     
      Date.DateString();
    pour les heures uniquement :

    DecodeTime( dest , hr, mn, sec , mil);
    Date.TimeString()
    Date.DateTimeString()
    et aussi
    TimeToStr(Time());

    je suis sure que tu trouvera ta solution , bonne continuation

    @+

  8. #8
    Membre �m�rite
    Avatar de Gouyon
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 140
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 140
    Billets dans le blog
    5
    Par d�faut
    C'est cette solution qui semble �tre la meilleure et la plus efficace donc je l'ai adopt�e


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    void __fastcall TForm2::DataSource1DataChange(TObject *Sender, TField *Field)
    {
       if (DBEdit1->Field != NULL)
       {
            DBEdit1->Text = TimeOf(DBEdit1->Field->AsDateTime);
       }
    }
    (ne pas oublier alors d'inclure )

    Merci � sunchaser

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [D�butant] Probl�me Insertion d'une date dans une base de donn�e
    Par quiet dans le forum ASP.NET
    R�ponses: 4
    Dernier message: 20/06/2014, 11h45
  2. R�ponses: 1
    Dernier message: 11/01/2010, 13h46
  3. probl�me d'insertion des dates dans une base
    Par guy_antoine_mav dans le forum C#
    R�ponses: 13
    Dernier message: 02/12/2009, 17h34
  4. enr�gistrer un date dans une base de donn�es Mysql 5
    Par Klemsy78 dans le forum Bases de donn�es
    R�ponses: 2
    Dernier message: 03/11/2009, 18h08
  5. [MySQL] Ins�rer une date dans une base de donn�es
    Par agnaou dans le forum PHP & Base de donn�es
    R�ponses: 29
    Dernier message: 23/03/2009, 11h43

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