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 :

date s'enregistre en nombre malgré le StrToDate!?


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Par défaut date s'enregistre en nombre malgré le StrToDate!?
    bonsoir
    Dans une application je me sert d'un bouton pour faire la mise à jour des champs d'une base de données access,le PROBLEME est dans la donnée D_retour_IDS qui est de type Date/heure(dans access). la valeur du champs est prise d'un TEdit.
    Lorsque j'affiche les champs de l'enregistrement je m'aperçie que la date s'enregistre sous forme d'un nombre( 72512....)
    j'ai essayé avec la fonction StrToDate en incluant DateUtils.hpp mais le probleme persiste!!
    Voici le code du bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void __fastcall Tfrmum::Btok2Click(TObject *Sender)
    {
    ADOConnection1->Open();
    ADOTable1->Open();
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add("update Mutations");
     
    ADOQuery2->SQL->Add("set D_retour_IDS=" +Edit3->Text+",Avis_IDS=" +QuotedStr(ComboBox2->Text)+ " where Matricule=" +StrToInt(Edit_matricule->Text));
     
    ADOQuery2->Prepared;
    ADOQuery2->ExecSQL();
     
    Btok2->Enabled=false;
    }
    comment faire pour avoir le format date???
    Merci pour tt renseignement

  2. #2
    Membre éclairé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Par défaut
    Bonjour nezhaaem!

    Personnellement pour enregistrer une date dans ma base de données, j'utilise la méthode FormatString comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Edit_matricule->Text.FormatString("dd/mm/yyyy")
    Tu peux bien sur modifier le format de la date selon ta base.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Par défaut
    bonjour,
    merci pour ton aide
    j'ai fait ceci mais un message d'erreur me dit que FormatString n'est pas un membre de AnsiString.
    en cherchant dans l'aide j'ai trouvé que c'est une propriété de TDateTime.
    j'ai alors fait la conversion :
    StrToDate(Edit3->Text).FormatString("dd/mm/yyyy")
    MAIS ça donne cette fois : 30/12/1899 00:01:43

    LA QUESTION: comment faire pour declarer le contenu d'un Edit comme Date??

    j'espere que je ne raconte pas n'importe quoi!
    Merci encore

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello,

    Une pratique plus sympathique consiste à utiliser dans paramètres dans les requètes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ADOConnection1->Open();
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add("update Mutations");
    ADOQuery2->SQL->Add("set D_retour_IDS=:PARAM_D_RETOUR_IDS, Avis_IDS=:PARAM_AVIS_IDS where Matricule=:PARAM_MATRICULE");
    ADOQuery2->Prepare();  // <------ Et pas ->Prepared;  
     
    ADOQuery2->ParamByName("PARAM_D_RETOUR_IDS")->AsDateTime = TDateTime(Edit3->Text, TDateTime::Date);
    ADOQuery2->ParamByName("PARAM_AVIS_IDS")->AsString = ComboBox2->Text;
    ADOQuery2->ParamByName("PARAM_MATRICULE")->AsInteger = StrToInt(Edit_matricule->Text);
     
    ADOQuery2->ExecSQL();

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Par défaut
    Merciiiiiiiiiiiiiiiiiiiiiiiiii totoche67
    j'ai resolu le probleme avec de petites modification de ton code(difference de version!?)
    voilà le code qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void __fastcall Tfrmum::Btok2Click(TObject *Sender)
    {
    ADOConnection1->Open();
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add("update Mutations");
    ADOQuery2->SQL->Add("set D_retour_IDS=:PARAM_D_RETOUR_IDS, Avis_IDS=:PARAM_AVIS_IDS where Matricule=:PARAM_MATRICULE");
    ADOQuery2->Prepared;
     
    ADOQuery2->Parameters->ParamByName("PARAM_D_RETOUR_IDS")->Value= TDateTime(Edit3->Text, TDateTime::Date);
    ADOQuery2->Parameters->ParamByName("PARAM_AVIS_IDS")->Value= ComboBox2->Text;
    ADOQuery2->Parameters->ParamByName("PARAM_MATRICULE")->Value= StrToInt(Edit_matricule->Text);
     
    ADOQuery2->ExecSQL();
    Btok2->Enabled=false;
    }
    encore merci
    à tous :D

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    j'ai resolu le probleme avec de petites modification de ton code(difference de version!?)
    Ah ben ouaih, j'utilise des TQuery, pas des TADOQuery...
    J'avais pas fait gaffe que Prepare() n'existait pas dans TADOQuery... Donc c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADOQuery2->Prepared = true;

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

Discussions similaires

  1. date en enregistrement
    Par Raphaëlle dans le forum Access
    Réponses: 9
    Dernier message: 06/07/2006, 16h24
  2. [SQL] Afficher date d'enregistrement
    Par citadelle dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/06/2006, 18h20
  3. [VBA-E]Obtenir la date d'enregistrement d'un classeur fermé
    Par Sylvain2003 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/03/2006, 14h36
  4. Avoir la date à partir de nombre bjour
    Par devdev2003 dans le forum Linux
    Réponses: 5
    Dernier message: 04/12/2005, 15h26
  5. Recuerer la date a partir du nombre de jour
    Par devdev2003 dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2005, 16h44

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