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
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à
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:
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.
Partager