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 :

Convertir Date sous Delphi vers Date sous MySQL


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut Convertir Date sous Delphi vers Date sous MySQL
    J'ai regardé un peu mais j'ai rien trouvé de bien précis me concernant.

    En effet, je crée des données avec des dates. ( format Date sous MySQL)

    Et je dois mettre dans mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Date1:= StrToDate(date1.text);
    Date2:= StrToDate(date2.text);
     
    WITH DataModule1.MyQMC DO
      BEGIN
        SQL.Clear;
        SQL.Add('INSERT INTO ID_MC_D');
        SQL.Add('(ID_Engin_FK6,ID_Gamme_FK1,Depot_Titulaire_FK1,Numero_FI,Km_Defaut,Date_Defaut,Date_Sortie,Libelle_Origine,Libelle_Cause,Libelle_Solution,Module_N6_FK1)');
        SQL.Add(format('values(''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'')',[EnginPrDefaut_ComboBox.Text,GammeprDefaut_ComboBox.Text,Depot2_ComboBox.Text,NumFI_Edit.Text,KmDefaut_Edit.Text,Date1,Date2,LibelleOrigine_Edit.Text,LibelleCause_Edit.Text,LibelleSolution_Edit.Text,MN6_Edit.Text]));
        Execute;
      END;
    Mas je ne sais pas si c'est bon

    en gros l'utlisateur doit entre mm/dd/yyyy ....

    Quand j'ai mis juste Date1_edit.text et date2_edit.text dans le VALUEs, il ne les prend pas en consideration.

    Dans le cas ce idessus , cela ne marche pas du tout, car je ne sais pas quoi mettre comme type pour les variables Date1 et Date2.

    POuvez vous m'aider,???

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Le format de date sous MySQL est : YYYY-MM-DD
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut
    Donc l'utilisateur doit taper YYYY-MM-DD

    ou bien je dois le faire par prog

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Date1,Date2 : DateTime;
    
    Date1:= FormatdateTime('yyyy-mm-dd', StrToDate(date1_Edit.text));
    Date2:= FormatdateTime('yyyy-mm-dd', StrToDate(date2_Edit.text));
    
    WITH DataModule1.MyQMC DO
      BEGIN
        SQL.Clear;
        SQL.Add('INSERT INTO ID_MC_D');
        SQL.Add('(ID_Engin_FK6,ID_Gamme_FK1,Depot_Titulaire_FK1,Numero_FI,Km_Defaut,Date_Defaut,Date_Sortie,Libelle_Origine,Libelle_Cause,Libelle_Solution,Module_N6_FK1)');
        SQL.Add(format('values(''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'')',[EnginPrDefaut_ComboBox.Text,GammeprDefaut_ComboBox.Text,Depot2_ComboBox.Text,NumFI_Edit.Text,KmDefaut_Edit.Text,Date1,Date2,LibelleOrigine_Edit.Text,LibelleCause_Edit.Text,LibelleSolution_Edit.Text,MN6_Edit.Text]));
        Execute;
      END;
    Comme ça?

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    PAsse par des paramètres, tu n'as pas besoin de faire la conversion c'est le composant qui s'en charge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    WITH DataModule1.MyQMC DO
      BEGIN
        SQL.Clear;
        SQL.Add('INSERT INTO ID_MC_D');
        SQL.Add('(ID_Engin_FK6,ID_Gamme_FK1,Depot_Titulaire_FK1,Numero_FI,Km_Defaut,Date_Defaut,Date_Sortie,Libelle_Origine,Libelle_Cause,Libelle_Solution,Module_N6_FK1)');
        SQL.Add(format('values(:IDFK6, ..., :DATE1)');
      ParamCheck := True;
      ParamByName('IDFK6').Value := EnginPrDefaut_ComboBox.Text;
      ...
      ParamByName('DATE1').Value := Date1;
      ...
        Execute;
      END;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    procedure TForm1.EnregFiche(Sender: TObject);
    var
    Date1,Date2 : DateTime;
    begin
     
    Date1 := StrToDate(DateDefaut_Edit.Text);
    Date2 := StrToDate(DateSortie_Edit.Text);
     
     
      WITH DataModule1.MyQMC DO
      BEGIN
        SQL.Clear;
        SQL.Add('INSERT INTO ID_MC_D');
        SQL.Add('(ID_Engin_FK6,ID_Gamme_FK1,Depot_Titulaire_FK1,Numero_FI,Km_Defaut,Date_Defaut,Date_Sortie,Libelle_Origine,Libelle_Cause,Libelle_Solution,Module_N6_FK1)');
        SQL.Add(format('values(:ID_Engin_FK6,:ID_Gamme_FK1,:Depot_Titulaire_FK1,:Numero_FI,:Km_Defaut,:Date_Defaut,:Date_Sortie,:Libelle_Origine,:Libelle_Cause,:Libelle_Solution,:Module_N6_FK1)'));
        ParamCheck := True;
        ParamByName('ID_Engin_FK6').Value := EnginPrDefaut_ComboBox.Text;
        ParamByName('ID_Gamme_FK1').Value := GammeprDefaut_ComboBox.Text;
        ParamByName('Depot_Titulaire_FK1').Value := Depot2_ComboBox.Text;
        ParamByName('Numero_FI').Value := NumFI_Edit.Text;
        ParamByName('Km_Defaut').Value := KmDefaut_Edit.Text;
        ParamByName('Date_Defaut').Value := Date1;
        ParamByName('Date_Sortie').Value := Date2;
        ParamByName('Libelle_Origine').Value := LibelleOrigine_Edit.Text;
        ParamByName('Libelle_Cause').Value := LibelleCause_Edit.Text;
        ParamByName('Libelle_Solution').Value := LibelleSolution_Edit.Text;
        ParamByName('Module_N6_FK1').Value := MN6_Edit.Text;
        Execute;
      END;
      Beep;
      ShowMessage('Enregistrement réussi');
     
    end;
    Il semble y avoir une erreur au niveau de values (pb d'arguments visiblement)

    par contre Date en format DateTime dans la VAR , n'est pas accepté...

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Essai comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        ParamByName('Date_Defaut').Value := FormatDateTime('YYYY-MM-DD',Date1);
        ParamByName('Date_Sortie').Value := FormatDateTime('YYYY-MM-DD',Date2);
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut
    Ok mais Date1 et et Date2 correspondent directement aux edits?

    genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Date1 := StrToDate(DateDefaut_Edit.Text);
    Date2 := StrToDate(DateSortie_Edit.Text);
    ?????

    avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date1,Date:  string  ?????

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Tu convertis bien tes edit en datetime (voir ton code)
    Donc après il faut formatter la date pour quelle soit compatible avec MySQL.

    Sinon au lieu d'utiliser des edit pour tes dates, ca serait pas mieux d'utiliser des datetimepicker ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut
    tu sais je me suis mis dans les dates hier, mais une chose est sûr, il n'accepte pas le TDateTime que j'ai mis dans le VAR....

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Ca vient peut être que tes dates des edits sont fausses ou mal ecrite.

    Utilise les datetimepicker c'est plus simple après il te restera plus qu'à ecrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ParamByName('Date_Defaut').Value := FormatDateTime('YYYY-MM-DD',DateTimePicker1.Date);
    ParamByName('Date_Sortie').Value := FormatDateTime('YYYY-MM-DD',DateTimePicker2.Date);
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut
    Voila mon nouveau code! :-)

    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
    16
    17
    18
    19
    20
    WITH DataModule1.MyQMC DO
      BEGIN
        SQL.Clear;
        SQL.Add('INSERT INTO ID_MC_D');
        SQL.Add('(ID_Engin_FK6,ID_Gamme_FK1,Depot_Titulaire_FK1,Numero_FI,Km_Defaut,Date_Defaut,Date_Sortie,Libelle_Origine,Libelle_Cause,Libelle_Solution,Module_N6_FK1)');
        SQL.Add(format('values(:ID_Engin_FK6,:ID_Gamme_FK1,:Depot_Titulaire_FK1,:Numero_FI,:Km_Defaut,:Date_Defaut,:Date_Sortie,:Libelle_Origine,:Libelle_Cause,:Libelle_Solution,:Module_N6_FK1)'));
        ParamCheck := True;
        ParamByName('ID_Engin_FK6').Value := EnginPrDefaut_ComboBox.Text;
        ParamByName('ID_Gamme_FK1').Value := GammeprDefaut_ComboBox.Text;
        ParamByName('Depot_Titulaire_FK1').Value := Depot2_ComboBox.Text;
        ParamByName('Numero_FI').Value := NumFI_Edit.Text;
        ParamByName('Km_Defaut').Value := KmDefaut_Edit.Text;
        ParamByName('Date_Defaut').Value := FormatDateTime('YYYY-MM-DD',DateTimePicker1.Date);
        ParamByName('Date_Sortie').Value := FormatDateTime('YYYY-MM-DD',DateTimePicker2.Date);
        ParamByName('Libelle_Origine').Value := LibelleOrigine_Edit.Text;
        ParamByName('Libelle_Cause').Value := LibelleCause_Edit.Text;
        ParamByName('Libelle_Solution').Value := LibelleSolution_Edit.Text;
        ParamByName('Module_N6_FK1').Value := MN6_Edit.Text;
        Execute;
      END;
    J'ai une erreur encore au niveau des quotes je pense dans le Values c'est du type :
    "[Erreur] Unit1.pas(3548): Aucune version surchargée de 'Format' ne peut être appelée avec ces arguments"


    Et là (comme tjs) je ne comprend pas j'ai bien relu la ligne, mais je trouve pas d'erreurs...

  12. #12
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    au lieu de DateTimePicker1.Date mets DateTimePicker1.DateTime et fait pareil avec l'autre.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut
    merci bcp

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

Discussions similaires

  1. DBLINK MySQL (sous Linux) vers Oracle (sous Windows)
    Par bachelre dans le forum Administration
    Réponses: 1
    Dernier message: 12/02/2014, 16h07
  2. Réponses: 7
    Dernier message: 19/02/2010, 12h12
  3. Réponses: 8
    Dernier message: 07/03/2007, 08h34
  4. Procedure Stocké sous FB et execution sous Delphi
    Par Andry dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/07/2006, 15h02
  5. Réponses: 1
    Dernier message: 25/05/2006, 14h08

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