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

 Delphi Discussion :

Problème avec le DateTimePicker1 et les valeurs de types Monétaire !


Sujet :

Delphi

  1. #1
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut Problème avec le DateTimePicker1 et les valeurs de types Monétaire !
    Bonjour à vous tous je développe une application et je bloque sur deux erreurs j'explique :


    j'ai deux table une nommée BG(Date_debut ,Dep_total,Rev_Total) Dep_total et Rev_total sont de type monétaire .

    et une deuxième table nommée BudgetG(code_sec,date_BP ,Total_dep,Total_rev) Total_dep,Total_rev sont aussi de type monétaire ;

    sur ma form delphi j'ai ajouté le composant DateTimePicker1 pour que l'utilisateur pourra sélectionner la date et des edit de text pour la saisie des montants des dépenses et des revenus ; et le bouton ajouter pour l'insertion dans les deux tables précédentes .
    Mon problème est que :
    1-je n'arrive pas à trouver une fonction de conversion des texte à un type monétaire sur delphi.
    2-lorsque je clique sur ajouter le programme ajoute des valeurs fausses au niveau de l'année je trouve cette date (19-06-1894) ?!!! quelqu'un à une idée sur ces problèmes merci d'avance!!
    cordialement

  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
    pour le 1 : StrToCurr
    Modérateur Delphi

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

  3. #3
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    je l'ai déjà essayé et ça marche sauf que sur la DB je trouves des (#######) c'est normal !!

  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
    Tu les vois comment ces #####, via l'éditeur SQL de ta base de données ou bien via ton logiciel ?

    Merci de préciser :
    - La version de delphi,
    - La base de données que tu utilises
    - Le type du champs (Float, ufloat, etc ...)
    Modérateur Delphi

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

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je plussoie Rayek sur les demandes de précisions et répond au point 2

    (19-06-1894) = valeur nulle il suffit d'initialiser la date au moment du insert par exemple par l'event OnNewRecord mais ceci dépend encore une fois des précisons non fournies

    Quant au point 1 , utiliser un maskedit en lieu et place d'un Edit pourrait être intéressant , sinon , à savoir , il existe pas mal de composants additionnels qui permettrait d'avoir un Edit plus spécialisé , je pense par exemple a la JVCL
    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

  6. #6
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Bonjour et merci pour vos réponses :

    concernant la version delphi j'utilise Delphi7 je suis une débutante et c'est la première fois que je programme avec delphi.
    ,on SGBD est bien access et les ####### apparaissent quand j'essaie de vérifier les valeur ajoutées sur le SGBD le types des champs des eux tables sont les suivants
    BG(Date_debut ,Dep_total,Rev_Total) Dep_total et Rev_total sont de type monétaire date_debut est de type DATE/heur

    BudgetG(code_sec,date_BP ,Total_dep,Total_rev) Total_dep,Total_rev sont de type monétaire , date_BP => Date/heur , code_sec de type text


    concernant votre réponse SergioMaster je n'ai pas initialisé le datetimepicker1 parce que lorsque l'utilisateur sélection une date le datetimepicker deverait être initialisé à cette dernière et c'est cette date qui devrait être ajoutée à , ma table je crois que je vais enlever ce datetimepicker et je le remplace par des combobox pour que l'utilisateur pourrait sélectionner la date qu'il désire !! !!
    voici la partie du code d'ajout

    merci d'avance

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
     
    procedure Tfiche_BP.SpeedButton8Click(Sender: TObject);
    begin
     
    if (trim(Edit1.text)<>'')and( trim(Edit2.text)<>'')and (trim(Edit3.Text)<>'')and (trim(Edit8.Text)<>'')
    and (trim(Edit9.Text)<>'')and (trim(Edit10.Text)<>'') then
    begin
     
           if (StrToCurr(edit3.Text)+StrTocurr(edit9.Text)> StrToCurr(edit2.text)) then
           Begin
           MessageDlg('ÎØà Ýí ãÌãæÚ äÝÞÇÊ ÞÓã ÇáÊÓííÑ æ ÇáÊÌåíÒ æ ÇáãÌãæÚ ÇáÅÌãÇáí ÊÃßÏ ãä ÇáãÚØíÇÊ',mtError,[mbCancel],0) ;
     
           end
           else
           begin
     
        test.Close;
        test.Parameters[0].Value:=DateToStr(DateTimePicker1.Date);
        test.Parameters[1].Value:=StrToCurr(edit1.Text);
        test.Parameters[2].Value:=StrToCurr(edit2.Text);
        test.Open();
        ////////////////////
     
        test2.Close;
        test2.Parameters[0].Value:=edit11.Text;
        test2.Parameters[1].Value:=DateToStr(DateTimePicker1.Date);
        test2.Parameters[2].Value:=StrToCurr(edit3.Text);
        test2.Parameters[3].Value:=StrToCurr(edit8.Text);
        test2.Open();
     
     
        //////////////////////////
         test3.Close;
        test3.Parameters[0].Value:=edit12.Text;
        test3.Parameters[1].Value:=DateToStr(DateTimePicker1.Date);
        test3.Parameters[2].Value:=StrToCurr(edit9.Text);
        test3.Parameters[3].Value:=StrToCurr(edit10.Text);
        test3.Open();
     
     
      if(not test.IsEmpty)and (not test2.IsEmpty)and(not test3.IsEmpty) then
        begin
          MessageDlg('áÞÏ ÞãÊ ÈÅÖÇÝÉ ãíÒÇäíÉ ÓÇÈÞÇ áÇ íãßäß ÅÖÇÝÉ ãíÒÇäíÉ ÃÎÑì áåÐÇ ÇáÚÇã',mtError,[mbCancel],0);
          edit1.Clear  ;  edit2.Clear; edit3.Clear; edit8.Clear; edit9.Clear; edit10.Clear;
        end
        else
        begin
         if MessageDlg('åá ÃäÊ ãÊÃßÏ ãä ÅÖÇÝÉ ÇáãÚáæãÇÊ ¿',mtConfirmation,[mbYes,mbNo],0)=mrYes then
         begin
            ajoutBG.sql.clear;
            ajoutBG.sql.add('Insert into BG(Date_debut,Rev_total,Dep_total)values('+DateToStr(DateTimePicker1.Date)+','+(edit1.Text)+','+(edit2.text)+' ) ');
            ajoutBG.ExecSQL;
            ajoutBG.Close;
             ///////////
     
             ajout.sql.clear;
            ajout.sql.add('Insert into budgetg(code_sec,dateBP,Total_dep,Total_Rev)values('+QuotedSTR(edit11.text)+','+DATETOSTR(DateTimePicker1.Date)+','+(edit3.text)+','+(edit8.text)+' ) ');
           ajout.ExecSQL;
            ajout.Close;
     
            ////////////////
     
             ajoutBudget.sql.clear;
            ajoutBudget.sql.add('Insert into budgetg(code_sec,dateBP,Total_dep,Total_Rev)values('+QuotedSTR(edit12.text)+','+DATETOSTR(DateTimePicker1.Date)+','+(edit9.text)+','+(edit10.text)+' ) ');
            ajoutBudget.ExecSQL;
            ajoutBudget.Close;
     
     
     
            showmessage('áÞÏ Êã ÅÖÇÝÉ ÇáãíÒÇäíÉ ÈäÌÇÍ');
             edit1.Clear  ;  edit2.Clear; edit3.Clear; edit8.Clear; edit9.Clear; edit10.Clear;
         end;
         end;
         end;
     
    end
    else showmessage(' ãä ÝÖáß Þã ÈÅÏÎÇá ÇáãÚáæãÇÊ ');
     
    end;

  7. #7
    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
    Les #### ne serait-ce pas un problème d'affichage dans Access, as-tu essayé d'augmenter la taille de la colonne du champs ? (Ca me fait penser à ce comportement quand dans Excel la valeur est plus grande que la taille du champ)

    Sinon, remarque en passant par rapport à ton code :

    - Renomme tes composants, un jour si quelqu'un passe derrière toi, il va s'arracher les cheveux. il est quand même plus facile d'avoir un composant qui se nomme Edt_PrixHT que Edit1

    - Dans tes requêtes, tu utilises parfois les paramètres et d'autres fois non. Pourquoi ne pas faire partout pareil ?

    - Lors de l'utilisation des paramètres, tu utilises Parameters[x], selon moi, il est préférable d'utiliser le nom du paramètre : Parameters.ParamByName('Toto').Value car dans le cas où tu insères ou déplace un paramètre, tu risques avoir des données qui vont se mettre au mauvais endroit.
    Modérateur Delphi

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

  8. #8
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    j'ai fait ce que vous m'aviez demandé à faire mais les requêtes ne s’exécutent pas !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        test.Close;
        test.Parameters.ParamByName('M').Value:=DateTostr(DateTimePicker1.Date);
        test.Open();
    et le Datetimpicker me cause toujours le même problème il ne prend pas la date que l'utilisateur sélectionne !!!



    Merci

  9. #9
    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
    En mettant un point d'arrêt (avec F5) sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    test.Parameters.ParamByName('M').Value:=DateTostr(DateTimePicker1.Date);
    Pendant l'exécution il va s'arrêter sur cette ligne.
    - Sélectionne DateTimePicker1.Date puis fait Ctrl + F7.
    - Dans la zone de saisie de la fenêtre qui apparait tape : DateToStr(DateTimePicker1.Date)
    - Puis valide avec Entrer

    Quel est le résultat affiché ?
    Modérateur Delphi

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

  10. #10
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Rayek Voir le message
    En mettant un point d'arrêt (avec F5) sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    test.Parameters.ParamByName('M').Value:=DateTostr(DateTimePicker1.Date);
    Pendant l'exécution il va s'arrêter sur cette ligne.
    - Sélectionne DateTimePicker1.Date puis fait Ctrl + F7.
    - Dans la zone de saisie de la fenêtre qui apparait tape : DateToStr(DateTimePicker1.Date)
    - Puis valide avec Entrer

    Quel est le résultat affiché ?
    le résultat affiché dit (Identificateur non déclaré : 'DateTimePicker1') !!!!

  11. #11
    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
    Si le DateTimePicker n'est pas dans la même unité il te faut indiquer la form dans lequel il est
    Modérateur Delphi

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

  12. #12
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Si le DateTimePicker n'est pas dans la même unité il te faut indiquer la form dans lequel il est
    non le DateTimePicker1 se trouve dans la même unité et il est bien déclaré au début .. je comprend pas pourquoi il l'a pas reconnu !!!

    je comprend pas pourquoi ce problème persiste le DateTimepicker1 me rajoute des date que l'utilisateur n'a pas sélectionné les requêtes qui empêchent les doublons ne s’exécutent pas ???

  13. #13
    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
    Vérifie que tu n'es pas 2 DateTimePicker l'un sur l'autre car autant tu sélectionnes le 2em et ne modifie jamais le 1er
    Modérateur Delphi

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

  14. #14
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Vérifie que tu n'es pas 2 DateTimePicker l'un sur l'autre car autant tu sélectionnes le 2em et ne modifie jamais le 1er
    et ben non monsieur je n'ai qu'un seul DateTimePicker1 !!

  15. #15
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Citation Envoyé par menoulette Voir le message
    j'ai fait ce que vous m'aviez demandé à faire mais les requêtes ne s’exécutent pas !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        test.Close;
        test.Parameters.ParamByName('M').Value:=DateTostr(DateTimePicker1.Date);
        test.Open();
    et le Datetimpicker me cause toujours le même problème il ne prend pas la date que l'utilisateur sélectionne !!!



    Merci
    Tu précise que tes champs sont de type "DATE". Pourquoi vouloir les convertir en chaine ?

  16. #16
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par popo Voir le message
    Tu précise que tes champs sont de type "DATE". Pourquoi vouloir les convertir en chaine ?
    bonjour merci pour votre réponse voyons j'ai enlevé la conversion en chaîne de caractères mais le problème persiste toujours !!

  17. #17
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Citation Envoyé par menoulette Voir le message
    le résultat affiché dit (Identificateur non déclaré : 'DateTimePicker1') !!!!
    Ctrl+F7 est à faire à l'exécution et non au design.

    Citation Envoyé par menoulette Voir le message
    test.Parameters.ParamByName('M').Value:=DateTostr(DateTimePicker1.Date);
    La propriété Value est un variant et sera interprété en fonction des besoins. Une date est une valeur numérique et n'est en aucun cas une chaîne de caractère

    Citation Envoyé par menoulette Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajoutBG.sql.add('Insert into BG(Date_debut,Rev_total,Dep_total)values('+DateToStr(DateTimePicker1.Date)+','+(edit1.Text)+','+(edit2.text)+' ) ');
    DateToStr va convertir la date en chaîne en utilisant la langue actuelle. La chaîne résultante en notation française ne sera peut-être pas reconnue par le SGBD s'il attend une notation US. De plus la chaîne-date doit être entre apostrophes.

    Même remarque pour les valeurs monétaires (ou flottantes en général). Sur un système français, le séparateur décimal est la virgule mais au niveau de la requête SQL, la virgule est le séparateur de paramètres. Edit1.Text sera interprété comme deux paramètres s'il contient 1,23.

    En bref, tu n'es pas obligée de construire la requête, mais si tu le fais, il faut être très strict au niveau des conversions. Le plus simple reste d'avoir une requête statique et de passer les valeurs par paramètre en laissant là où c'est possible Delphi gérer les conversions. Tu le fais pour la lecture, pourquoi pas pour l'écriture ?

  18. #18
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Ctrl+F7 est à faire à l'exécution et non au design.



    La propriété Value est un variant et sera interprété en fonction des besoins. Une date est une valeur numérique et n'est en aucun cas une chaîne de caractère



    DateToStr va convertir la date en chaîne en utilisant la langue actuelle. La chaîne résultante en notation française ne sera peut-être pas reconnue par le SGBD s'il attend une notation US. De plus la chaîne-date doit être entre apostrophes.

    Même remarque pour les valeurs monétaires (ou flottantes en général). Sur un système français, le séparateur décimal est la virgule mais au niveau de la requête SQL, la virgule est le séparateur de paramètres. Edit1.Text sera interprété comme deux paramètres s'il contient 1,23.

    En bref, tu n'es pas obligée de construire la requête, mais si tu le fais, il faut être très strict au niveau des conversions. Le plus simple reste d'avoir une requête statique et de passer les valeurs par paramètre en laissant là où c'est possible Delphi gérer les conversions. Tu le fais pour la lecture, pourquoi pas pour l'écriture ?

    Merci pour votre réponse , à vrai puisque c'était le DateTimepicker qui me provoquait un problème vu que je ne sais pas comment l'utiliser alors j'ai décidé de récupérer la valeur du DatetimePicker dans un edit1.text et de travailler avec ce edit1.text mieux que le datetimepicker mais ca reste toujours un point d'interrogation pour moi : pourquoi lorsque j'ai mis le DatetimePicker dans la requête d'ajout je trouve une date très ancienne sur la table (09/09/1895) et pas la date que l'utilisateur a choisi ? ainsi que comment passer la valeur d'un DateTimepicker1 dans une requête paramétrée ??? reste à chercher encore merci pour vos réponses

  19. #19
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    En utilisant les requêtes paramétrées et comme l'a suggéré Andnotor :

    est ce que tu as essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test.Parameters.ParamByName('M').Asdate:=DateTimePicker1.Date;
    puisque ton champ est bien de type Date.

  20. #20
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par menoulette Voir le message
    Merci pour votre réponse , à vrai puisque c'était le DateTimepicker qui me provoquait un problème vu que je ne sais pas comment l'utiliser alors j'ai décidé de récupérer la valeur du DatetimePicker dans un edit1.text et de travailler avec ce edit1.text mieux que le datetimepicker mais ca reste toujours un point d'interrogation pour moi : pourquoi lorsque j'ai mis le DatetimePicker dans la requête d'ajout je trouve une date très ancienne sur la table (09/09/1895) et pas la date que l'utilisateur a choisi ? ainsi que comment passer la valeur d'un DateTimepicker1 dans une requête paramétrée ??? reste à chercher encore merci pour vos réponses
    Toujours pour la même raison , ton datetimePicker n'est pas lié à la Datasource (ce n'est pas un DBDateTimePicker ou alors c'est mal indiqué) . Le Edit1.Text est une très mauvaise idée : erreur de saisie , format incorrect etc...
    Le DateTimePicker et le paramètrage de requête reste le bon choix .

    Quant à initialiser la date pour ne pas avoir la date 'nulle' lors d'un insert c'est relativement facile par exemple :

    si j'ai bien compris (en lisant entre les lignes) ce sont les composants ADO qui sont utilisés ?

    Citation Envoyé par code repris
    ajoutBG.sql.add('Insert into BG(Date_debut,Rev_total,Dep_total)values('+DateToStr(DateTimePicker1.Date)+','+(edit1.Text)+','+(edit2.text)+' ) ');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    AjoutBG.SQL.Text:='INSERT INTO BG (date_debut,dep_total) Values (:paramdate,:parammontant)';
    AjoutBG.Parameters.ParamByName('paramdate').Asdate:=DateTimePicker1.Date;
    AjoutBG.Parameters.ParamByName('parammontant').AsCurrency:=StrTofloat(Edit2.text); // ce edit text aussi mériterait un maskedit ou un composant de saisie plus adapté
    AjouBG.ExecSQL;
    PS. Je ne suis pas un fan de ADO ni de Access donc ma syntaxe laisse certainement à désirer
    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème avec la fonction pow(les puissance)
    Par Clément76 dans le forum C
    Réponses: 10
    Dernier message: 04/10/2006, 12h44
  2. Réponses: 2
    Dernier message: 02/08/2006, 16h46
  3. [Tableaux] Problème avec un array et les pseudo frame
    Par azerty53 dans le forum Langage
    Réponses: 6
    Dernier message: 10/05/2006, 14h57
  4. Problème avec l'unicode et les exceptions
    Par Rafy dans le forum C++
    Réponses: 5
    Dernier message: 07/02/2006, 00h52
  5. problème avec strtok pour récupérer les vides
    Par manikou dans le forum MFC
    Réponses: 4
    Dernier message: 02/06/2005, 20h08

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