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 :

recuperer une date a partir d'un calendrier dans une BD


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 15
    Points
    15
    Par défaut recuperer une date a partir d'un calendrier dans une BD
    Bonjours a tous;
    je voulais récupérer une date a partir d'un calendrier pour l’insérer dans une BD, pour cela j'ai utiliser un DBedit pour le champ date et juste a coté un boutton calendrier qui affiche le calendrier ( TMonthCalendar) pour que l'utilisateur peut choisir la date..
    mais je sais pas comment les relier pour que: quand l'utilisateur appui sur une date elle sera automatiquement saisie dans le DBedit et transférer directement vers la BD
    AIDER MOI SVP..
    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 149
    Points : 41 322
    Points
    41 322
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Il existe des composants tout fait qui permettent de relier directement une date à un champ de données je pense en particulier au TJvDBDateEdit , TjvDBDatePickerEdit et tjvDateTimePickerEdit de la JVCL mais aussi pour des versions < D5 TDBEzDateEdit (je me souviens plus de quel paquet il vient) .

    Sinon : dans le principe , il faut codifier l'évènement onclick de TMonthCalendar
    de façon à mettre
    1 - La source de données en mode Edit si besoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if not(Table.State in [dsEdit,dsInsert]) then Table.Edit;
    2 - Modifier le champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Table.FieldByName('Ladate').asDateTime:=MonthCalendar.Date;
    et bien sur ajuster la date lorsque l'on "rentre" dans le MonthCalendar (onEnter par exemple)
    MonthCalendar.Date:=Table.FieldByName('Ladate').asDateTime;

    pour avoir des réponses plus précises , il aurait été bon de préciser
    1- la version de Delphi (je parie pour la 7 )
    2- les composants de d'accès a la Base de données
    3- la base de données * option

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    merci SergioMaster pour votre reponse;
    pour la version de delphi j'utilise delphi6.
    pour plus de précision voici une image de ce que j'ai fait sur la form:



    et puis quand vous appuyez sur le bouton calendrier :une autre form s'ouvre avec un TMonthCalendar:



    quand je clique sur une date dans le calendrier elle sera ecrit automatiquement dans le champ DBedit donc dans la DB..
    Images attachées Images attachées  

  4. #4
    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
    D'après ce que j'ai compris c'est que vous voulez récupérer la date sélectionnée par l'utilisateur et l'afficher dans un DBedit1 pas la paine d'utiliser un DBEdit un simple edit pourra vous aider essayez ce code là sur MonthCalendar1 sur l’événement OnClick

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    form1.edit1.text:=form8.dateToStr(MonthCalendar1.date);

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 149
    Points : 41 322
    Points
    41 322
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    contrairement à Menoulette je n'aime pas trop changer le Text d'un DBEdit .

    à priori , au vu des images , vous appelez le calendrier via un showmodal

    donc voici comment je ferais avec votre design , et les renseignements fournis, je ne sais pas par exemple :
    - comment se ferme la fenêtre Form8
    - si form8 , à priori une forme modale, est crée en début de projet, ou se crée si besoin (solution que j'ai prise)
    - s'il y a un caFree au moment du Close de Form8

    - J'ai pris Table comme étant le TTable , et ladate comme nom de champ date sur Form1

    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
    // clic sur le bouton calendrier
    form1.CalendrierClick(Sender : TObject);
    var F8 : TForm8;
    begin
    F8:=TForm8.Create(self);
    try
      F8.Calendar1.Date:=Table.FieldByName('Ladate').asDateTime;
      if F8.ShowModal<>mrCancel then
        begin
           if not(Table.State in [dsEdit,dsInsert]) then Table.Edit;
           Table.FieldByName('Ladate').asDateTime:=F8.Calendar1.Date;
        end;
    finally
      F8.Free;
    end;
    end;

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par menoulette Voir le message
    D'après ce que j'ai compris c'est que vous voulez récupérer la date sélectionnée par l'utilisateur et l'afficher dans un DBedit1 pas la paine d'utiliser un DBEdit un simple edit pourra vous aider essayez ce code là sur MonthCalendar1 sur l’événement OnClick

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    form1.edit1.text:=form8.dateToStr(MonthCalendar1.date);
    Bonjours menoulette;
    d'abord merci pour votre reponse..
    j'ai essayer la méthode que tu as citer mais il connait pas la propriété "dateToStr"..je sais pas est ce que sa dépend de la version de delphi!!!!

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    contrairement à Menoulette je n'aime pas trop changer le Text d'un DBEdit .

    à priori , au vu des images , vous appelez le calendrier via un showmodal

    donc voici comment je ferais avec votre design , et les renseignements fournis, je ne sais pas par exemple :
    - comment se ferme la fenêtre Form8
    - si form8 , à priori une forme modale, est crée en début de projet, ou se crée si besoin (solution que j'ai prise)
    - s'il y a un caFree au moment du Close de Form8

    - J'ai pris Table comme étant le TTable , et ladate comme nom de champ date sur Form1

    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
    // clic sur le bouton calendrier
    form1.CalendrierClick(Sender : TObject);
    var F8 : TForm8;
    begin
    F8:=TForm8.Create(self);
    try
      F8.Calendar1.Date:=Table.FieldByName('Ladate').asDateTime;
      if F8.ShowModal<>mrCancel then
        begin
           if not(Table.State in [dsEdit,dsInsert]) then Table.Edit;
           Table.FieldByName('Ladate').asDateTime:=F8.Calendar1.Date;
        end;
    finally
      F8.Free;
    end;
    end;

    bonjour SergioMaster;
    d'abord merci pour votre reponse..
    je suis débutante donc j'ai pas compris comment appeler le calendrier avec un showmodal!!!!
    est ce que vous pouvez m'expliquer un peut svp?
    j'ai créer Tform8 au début de projet et j'ai met le Tmonthcalendar
    pour " ladate comme nom de champ date sur Form1".... vous voulez dire le nom de champ date sur ma BD!!!!
    merci encore..

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Bonjour

    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.Edit1.Text := DateToStr(Form8.MonthCalendar1.Date);
    DateToStr est une fonction définie dans SysUtils, et non dans Form8.

    @+

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    j'ai vu cette discussion mais j'ai pas compré comment utiliser cette proprieté..

    http://www.developpez.net/forums/d90...ecuperer-date/

    je ne sais pas est ce que sa peux m'aider!!!
    a l’aide svp

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Bonjour

    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.Edit1.Text := DateToStr(Form8.MonthCalendar1.Date);
    DateToStr est une fonction définie dans SysUtils, et non dans Form8.

    @+
    Merciiiiiiiiiiii Cl@udius j'ai essayer et sa marche....merci beaucoup;
    seulement que je veux que quand je clic sur la date et elle sera écrite sur le DBedit je veux que le calendrier sera fermer automatiquement aussi...
    aider moi svp

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    bon jour

    Envoyé par azyle


    @+ Merciiiiiiiiiiii Cl@udius j'ai essayer et sa marche....merci beaucoup;
    seulement que je veux que quand je clic sur la date et elle sera écrite sur le DBedit je veux que le calendrier sera fermer automatiquement aussi...
    aider moi svp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm2.MonthCalendar1DblClick(Sender: TObject);
    begin
    Form1.Edit1.Text := DateToStr(Form8.MonthCalendar1.Date);
    form8.Close;
    end;
    mai c'est pas trés pratique votre methode utilisez DateTimePicker dans la form1 'est mieux pas besoin de form8

    A+

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 149
    Points : 41 322
    Points
    41 322
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par azyle Voir le message
    bonjour SergioMaster;
    d'abord merci pour votre reponse..
    je suis débutante donc j'ai pas compris comment appeler le calendrier avec un showmodal!!!!
    est ce que vous pouvez m'expliquer un peut svp?
    j'ai créer Tform8 au début de projet et j'ai met le Tmonthcalendar

    merci encore..
    Bonjour,
    pour affiner mes réponses . Selon votre image écran ,je suis parti du principe que votre calendrier était dans une forme (Form8) et que celle-ci ne s'affichait que lorsque l'on cliquait sur le bouton [Calendrier] . Il faut donc bien afficher cette forme a un moment et la cacher quand ce n'est plus nécessaire .
    Pour cela j'ai pris l'option d'afficher la form8 de façon modale (ShowModal) empêchant ainsi toute action autre que sur cette forme avant sélection d'une date.
    Seuls impératifs : dans le OnClose de Form8 mettre Action:=caFree et empêcher que la form soit créée au démarrage (soit en passant par les options du projet, soit en ouvrant le source du projet et en supprimant la création de cette Form.
    Ensuite , je vous ai déjà donné le code pour afficher la Form8 .

    pour " ladate comme nom de champ date sur Form1".... vous voulez dire le nom de champ date sur ma BD!!!!
    Oui

    Pour ce qui est maintenant de fermer la Form8 . Le mieux serait certainement de mettre 2 boutons un [OK] et un [Annuler] ayant respectivement comme valeur modale mrOk et mrCancel (cela se fait tout seul si vous posez des BitBtn avec la propriété Kind = bkOk pour le premier et bkCancel pour le second .
    En effet il va être difficile de fermer le calendrier sur un événement tel OnClick (changer de mois lève aussi cet event) . Seul l'événement OndblClick pourrait être utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm8.MonthCalendar1DblClick(Sender: TObject);
    begin
    ModalResult:=mrOk;  // met le résultat modal a OK
    Close;                    // ferme la forme
    end;
    Citation Envoyé par Tarekk73
    mais c'est pas très pratique votre méthode utilisez DateTimePicker dans la form1 'est mieux pas besoin de form8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.Edit1.Text := DateToStr(Form8.MonthCalendar1.Date);
    Beaucoup de personnes ont oublié de lire qu'il s'agissait d'un TDBEdit et non d'un TEdit . il ne faut pas leur en vouloir

    il est cependant vrai que faire une forme rien que pour afficher un TMonthCalendar c'est un peu ..... lourd?
    Si vous n'avez pas le "droit" d'utiliser des composants tiers (JVCL contient des composants tels jvDBDateEdit qui permet de faire la même chose en mieux , reliè a un datasource etc...) il y a toujours d'autres possibilités par exemple :
    - mettre TMonthCalendar sur la form1 avec sa propriété visible:=false
    - Créer le TMonthCalendar au RunTime
    inconvénient de ces deux méthodes , on peut cliquer ailleurs dans la forme (du coup le calendrier reste afficher)
    - utiliser comme suggéré par Tarekk73 un DateTimePicker et gérer le OnChange de ce dernier pour mettre à jour le champ dans la Table
    - carrément créer un composant en dérivant TDateTimePicker
    etc.....

  13. #13
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    Citation Envoyé par SergioMaster Voir le message

    il est cependant vrai que faire une forme rien que pour afficher un TMonthCalendar c'est un peu ..... lourd?
    Si vous n'avez pas le "droit" d'utiliser des composants tiers (JVCL contient des composants tels jvDBDateEdit qui permet de faire la même chose en mieux , reliè a un datasource etc...) il y a toujours d'autres possibilités par exemple :
    - mettre TMonthCalendar sur la form1 avec sa propriété visible:=false
    - Créer le TMonthCalendar au RunTime
    inconvénient de ces deux méthodes , on peut cliquer ailleurs dans la forme (du coup le calendrier reste afficher)
    - utiliser comme suggéré par Tarekk73 un DateTimePicker et gérer le OnChange de ce dernier pour mettre à jour le champ dans la Table
    - carrément créer un composant en dérivant TDateTimePicker
    etc.....
    à un époque (le temps passe vite ) j'avais fais comme toi azyle, mais à la fin j'ai abondonnée

  14. #14
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 15
    Points
    15
    Par défaut
    merci a tous qui m'ont aider...merci beaucoup
    mon probleme est resolu...
    j'ai utiliser le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm2.MonthCalendar1DblClick(Sender: TObject);
    begin
    Form1.Edit1.Text := DateToStr(Form8.MonthCalendar1.Date);
    form8.Close;
    end;
    merci beaucoup SergioMaster, tarekk73, Cl@udius, menoulette, edam

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/11/2008, 23h14
  2. Réponses: 6
    Dernier message: 29/07/2008, 16h44
  3. Réponses: 3
    Dernier message: 04/07/2008, 12h00
  4. Réponses: 3
    Dernier message: 30/04/2007, 12h22
  5. Remplir une liste déroulante à partir d'un champ dans une pop up
    Par wiam26 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/08/2006, 16h42

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