ericdu62x
Messages postés37Date d'inscriptionmardi 7 octobre 2008StatutMembreDernière intervention29 décembre 2008
-
12 nov. 2008 à 18:08
solilog
Messages postés273Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention18 avril 2015
-
5 févr. 2013 à 20:18
Bonsoir a tout le monde,
j'ai besoin d'un petit peut d'aide concernant un calcul entre deux dates dans une base de donnée.
a savoir:
je stocke une date dans un champ de base de donnée nommé : "DateCutter", accessible via un composant "rzdbdateTimeEdit16"
ensuite, via une liste de sélection du type: 1,2,3,4,5,6,7,8,9,10,11,12 mois
il me calcule l'écart par rapport au choix dans la liste
exemple pour être plus clair:
si je sélectionne a la date du (01/01/2008) un delai de (12 mois), il me donne le resultat dans un LABEL => 01/01/2009
j'ai beau regarder, je suis un peut perdu, il plante mon delphi par moment !
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 13 nov. 2008 à 15:31
bonsoir,
quel est le message d'erreur sur le plantage?
et il existe des fonctions toutes prêtes qui font le calcul entre deux dates dans DateUtils comme IncDay, fonction.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 24 nov. 2011 à 19:12
Bonsoir,
Pourquoi vous répondez sur des vieux posts (celui-ci date du 13/11/2008 !!)
Bon, c'est vrai que cela ne fait que 3 ans de retard..
et en heure cosmique, c'est juste un battement de cils..
Mais en en temps terrien ?!
et puis écrire :
[b]
result(date) = date + un délai/b
C'est quoi ce truc...
Ce n'est pas un code !
on va faire un peu de poésie..
result(date) = date + un délai de remise en marche de la machine qui est tombée en panne suite
à un dysfonctionnement du générateur;C'est la raison pour laquelle, j'ai des erreurs..etc
Je rappelle que le post en question était le calcul du nombre de jours entre deux dates et que cette opération
est élémentaire et s'effectue à l'aide d'une fonction comme diffdate en SQL
ou en dehors d'une base de données en passant par les fonctions
EncodeDate ou DaysBetween ou DateTimeToJulianDate (jours juliens) etc.etc.
cs_hamdi04
Messages postés2Date d'inscriptionmardi 15 novembre 2011StatutMembreDernière intervention27 novembre 2011 27 nov. 2011 à 08:55
var
A1,M1,J1,AA,MM,JJ : Word;
begin
// exp: la date(31/12/2010) et j'ai adjouter un délai de : JJMMAA 03,4,0
DecodeDate(DateTimePicker1.date,A1,M1,J1 );
A1:=A1+AA;
M1:=M1+MM;
J1:=J1+JJ;
Label6.Caption := DateToStr(EncodeDate(A1,M1,J1));
et ici le pb ?
donc je cherche un code qui résoudre ce pb svp et merci d'avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 27 nov. 2011 à 14:43
la fonction encodedate marche
mais ce sont tes valeurs qui ne vont pas...
année 2010 + 3 = 2014 pas de problème
mais
décembre, 12 + 4 = 16 , ce mois n'existe pas..
Donc, il te faut introduire des tests de correction dans ton code
pour le mois
le numéro doit être compris entre 1 et 12
...et le jour, car là aussi tu vas avoir des soucis
la date doit être comprise entre 1 et 30 ou 31 ou (29 ou 28 pour février..)
selon les années bissextiles.
Utilises plutôt la fonction IncDay qui elle traduit automatiquement la date en fonction d'un nombre de jours ajoutés :
ex :
var
NbJour : integer;
begin
NbJour := 3;
Label6.Caption := DateTimeToStr(IncDay((EncodeDate(2010, 12, 31)), NbJour));
end;
Elle fonctionne même en négatif..
Le hic, est de connaître maintenant le nomnre de jours à ajouter de manière précise..
Il suffit pour ça d'utiliser d'autres fonctions qui donnent le nombre de
jours exact en deux dates comme DaysBetween par exemple.
cherche un peu de ton côté pour mettre tout ça en forme
et nous sortir un code fonctionnel
bonjour tous le monde ;
svp je demande votre aide :
je suis debutant en programation, mon probleme est le calcul de la date retour.
voila :
* je programe sous delphi 7
* ma bd est access
* j'ai: a/dbedit1: date d'emprunt
b/dbedit2: delais
c/dbedit3: date retour
je ve doné une valeur à (a et b) pour avoir c
aidez moi svp
solilog
Messages postés273Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention18 avril 201510 5 févr. 2013 à 20:18
Bonsoir,
l'unité sysutils contient la solution:
{ IncMonth returns Date shifted by the specified number of months.
NumberOfMonths parameter can be negative, to return a date N months ago.
If the input day of month is greater than the last day of the resulting
month, the day is set to the last day of the resulting month.
Input time of day is copied to the DateTime result. }
et il gere bien les mois 30, 31, 28, 29.
function IncMonth(const Date: TDateTime; NumberOfMonths: Integer): TDateTime;
Dans ton cas:
datefin := IncMonth(dateDeb, NbrMois);
C'est super facile les dates, tu verras.
De plus, comme le type tDateTime est en fait un real double qui met les jours dans la partie entière
(depuis 01/01/18?? on s'en fout), les h, mn, sec, cc dans la partie decimale, on aura donc:
const
jour = 1.0;
semaine = jour *7;
heure = jour / 24;
minute = heure / 60;
seconde= minute / 60;
centsec= seconde / 100;
madatetime := madatetime + (3*heure) + (12*minute) + (4*seconde)
madate := madate + (3*jour) // ajoute 3 jours
madate := madate + (3*semaine) // ajoute 3 semaines
madate := incMonth(madate, 3) // ajoute 3 mois
madate := incMonth(madate, 3*12) // ajoute 3 ans sans erreur de bisextil
Ca marche avec des param positifs et négatifs.