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 :

Aide et conseil sur un programme avec des dates


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 19
    Points
    19
    Par défaut Aide et conseil sur un programme avec des dates
    Bonjour !!

    J'ai programmé un petit programme de test entre deux dates. Le but est de tester la date d'un enregistrement avec la date actuelle
    comme dans mon exemple table vehicule qui comporte les champs :
    • code
      matricule
      date assurance
      date controle technique
      date permis de circule


    J'ai testé la date assurance avec la date actuelle en créant une alerte avant 30 jours de la date d'expiration :
    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
    procedure TForm1.Button1Click(Sender: TObject);
      VAR myDate, Datev: TDateTime;
    begin
    with    ADOTable1 DO
    BEGIN
    ADOTable1.First;
    while not EOF do BEGIN
    myDate:=IncDay(now,-30);
    DateV:=ADOTable1.fieldbyname('DATEA').asDateTime; // date assurance 
    IF  DateOf(myDate)>= DateOf(DateV) THEN begin
    AlertMsgBox('ALERTE DATE  !','LA DATE ASSURANCE DU VEHICULE ''#13#10'APPROCHE A EXPIRATION.',ICON_WARNING1,true,2000,40);  // message d'alerte 
    ADOTable1.Edit;
    ADOTable1.fieldbyname('ETAT').AsBoolean:=TRUE; // cette valeur me permet de changer la couleur du champ du Dbgrid en rouge par un autre programme 
    ADOTable1.fieldbyname('STATUT').AsString:='ALERTE';
    ADOTable1.Post;
    END;
    ADOTable1.Next;
     END;
    Je demande des conseils ou remarques pour améliorer mon programme qui pour l'instant marche.

    Mon problème est que j'ai plusieurs dates à tester et à mettre en alerte comme la date assurance , la date du contrôle technique et la date permis de circuler qui se déclenche automatiquement sans cliquer sur bouton.
    Je demande conseil ???
    Est-ce que je crée des procédures pour chaque date ?? comment je fais ??
    Ou autre suggestion...

    Merci !

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Tu peux gérer un type énuméré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TDateVehicule = (dvAssurance, dvCT, dvPermis);
    Une fonction qui prend en paramètre le type que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
      sChamp : string;
    begin
      if dvCurrent = dvAssurance then
        sChamp := 'datea'
      // ...
     
      DateV:=ADOTable1.fieldbyname(sChamp).asDateTime;
    Pour faire ce que tu veux, il existe aussi la fonction DaysBetwwen qui prend deux TDateTime en paramètre.

    Si tu veux déclencher automatiquement le traitement tu pourrais faire une classe TVehicule et lors du Create déclencher tes tests, si tu charges ton véhicule lors de l'ouverture avec un événement FormShow tu peux aussi appeler ta procédure juste après, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // chargement du véhicule
    // ...
     
    CheckDateVehicule([dvAssurance, dvCT]);
    Par contre je te conseil d'indenter ton code correctement, mot clé en minuscule, ce qui est je trouve plus facile à lire.

  3. #3
    Rédacteur/Modérateur

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

    moi je conseillerais surtout de faire cela par SQL, dépendant de la SGBD
    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

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 19
    Points
    19
    Par défaut
    merci pour les réponse en particulier celle de retwas

Discussions similaires

  1. Aide et conseil Sur ma fonctions
    Par solaar dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/04/2009, 12h28
  2. Réponses: 1
    Dernier message: 13/04/2009, 19h07
  3. Besoin de conseils sur un programme
    Par Lynx91 dans le forum C
    Réponses: 11
    Dernier message: 12/09/2007, 13h36
  4. recherche aide et conseils sur les tables
    Par jj77 dans le forum Langage
    Réponses: 1
    Dernier message: 10/01/2007, 23h24
  5. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 12h59

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