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 :

Comparaison entre date et exercice


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Août 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 158
    Points : 80
    Points
    80
    Par défaut Comparaison entre date et exercice
    Salut
    Avez vous une idée sur ce titre
    J'explique
    Dans un projet gestion stock;on travaille par exercice:chaque exercice représenté par une annee;a chaque fin d'annee on doit cloturer cette exrcice et débuter par un autre exercice;dans ce ce nouveau exercice tous les donnees de l'exercice précédant sont conservé comme valeurs initiales
    Et maintenant:ma question comment peut-on faire une comparaison entre la date actuelle et 01/janvier de la nouvelle annee(exercice)

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    bèh utilise des opérateurs de comparaison (<,>,=,<>...)!
    plus sérieusement, dans quel contexte se fait la comparaison? programme delphi? requete sql? la comparaison c'est pour quoi exactement?
    explique un peu mieux ton problème.

  3. #3
    Membre régulier
    Inscrit en
    Août 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par evarisnea Voir le message

    bèh utilise des opérateurs de comparaison (<,>,=,<>...)!
    plus sérieusement, dans quel contexte se fait la comparaison? programme delphi? requete sql? la comparaison c'est pour quoi exactement?
    explique un peu mieux ton problème.
    Exactement:Comme j'ai dit c'est un programme gestion stock;dont existe des tables et parmi elles la table annee;et tout les autres tables dependent de cette table (annee);et je veux faire une constrainte pour que l'utilisateur ne peut plus créer un nouveau exercice que lorsqu'on est dans la nouvelle annee
    Peut etre que vous avez une idée simple que la mienne
    Pour moi;l'idée c'est de comparer la date actuelle avec le 01/01/2xxx mais je ne sais pas comment

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    si tu utilises une base de données qui supporte les triggers, tu peux écrire un trigger sur l'insertion d'un nouvel exercice qui va vérifier si un exercice pour l'année en cours n'existe pas déjà, auquel cas il générera une erreur et l'enregistrement sera annulé.
    si tu veux le faire sous delphi: tu récupère l'exercice le plus récent avec une requête sql du style
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select date_fin_exercice from table_exercice order by date_fin_exercice desc;
    puis tu testes si l'année en cours ne chevauche pas cet exercice là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if query1.fieldbyname('date_fin_exercice').AsDate > Date() then
      showmessage('l''exercice en cours n''est pas encore cloturé');
    else
      ...
    dans la même lancée, tu pourrais faire une requête du style:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from table_exercice where date_fin_exercice < current_date;
    qui te renverrais 0 si aucun exercice n'est encore défini pour la période en cours. (current_date à adapter selon le sgbd, j'ai pris l'exemple sur firebird).

    une autre approche est d'ajouter un champ "exercice_cloture" à la table exercice, et vérifier celui ci.

    pour résumer, dans les sgbd il y a des fonctions renvoyant la date en cours que tu peux utiliser dans tes requêtes pour effectuer le test. dans le langage delphi, il y a également des fonctions qui te renvoient la date en cours (Date(), Now(), etc.)
    à toi de voir.

  5. #5
    Membre régulier
    Inscrit en
    Août 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par evarisnea Voir le message
    si tu utilises une base de données qui supporte les triggers, tu peux écrire un trigger sur l'insertion d'un nouvel exercice qui va vérifier si un exercice pour l'année en cours n'existe pas déjà, auquel cas il générera une erreur et l'enregistrement sera annulé.
    si tu veux le faire sous delphi: tu récupère l'exercice le plus récent avec une requête sql du style
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select date_fin_exercice from table_exercice order by date_fin_exercice desc;
    puis tu testes si l'année en cours ne chevauche pas cet exercice là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if query1.fieldbyname('date_fin_exercice').AsDate > Date() then
      showmessage('l''exercice en cours n''est pas encore cloturé');
    else
      ...
    dans la même lancée, tu pourrais faire une requête du style:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from table_exercice where date_fin_exercice < current_date;
    qui te renverrais 0 si aucun exercice n'est encore défini pour la période en cours. (current_date à adapter selon le sgbd, j'ai pris l'exemple sur firebird).

    une autre approche est d'ajouter un champ "exercice_cloture" à la table exercice, et vérifier celui ci.

    pour résumer, dans les sgbd il y a des fonctions renvoyant la date en cours que tu peux utiliser dans tes requêtes pour effectuer le test. dans le langage delphi, il y a également des fonctions qui te renvoient la date en cours (Date(), Now(), etc.)
    à toi de voir.
    Multi RESOLU
    Merci

  6. #6
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par gentilman_delphi Voir le message
    Multi RESOLU
    Merci

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

Discussions similaires

  1. Comparaison entre dates
    Par madina dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/07/2011, 13h48
  2. Comparaison entre dates
    Par javaboy dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 05/07/2007, 14h51
  3. [Date] comparaison entre dates
    Par *alexandre* dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 03/11/2006, 11h17
  4. Réponses: 6
    Dernier message: 18/04/2006, 13h11
  5. [Dates] Comparaison de date entre deux IP (anti-flood)
    Par psychoBob dans le forum Langage
    Réponses: 79
    Dernier message: 23/12/2005, 17h19

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