Changement de date

Résolu
hainlesgens Messages postés 57 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 10 février 2009 - 8 janv. 2009 à 10:21
hainlesgens Messages postés 57 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 10 février 2009 - 9 janv. 2009 à 11:14
bonjours à tous, je cherche une solution à mon problème.

je réalise en stage un petit programme de gestion de contrat d'assurance. et le contrat peu à prélèvement mensuel, trimestriel, annuel ou unique.

Là n'est pas vraiment le problème. quand l'utilisateur créera un contrat, il pourra choisir le type de prélèvement et selon celui ci, le nombre de contrat créés sera différent. pour un contrat 
-annuel, 1 seul
-mensuel, 12 contrats
-trimestriel, 4 contrats et ainsi de suite.

bon pour la création du nombre de contrat, tout va bien. mais ce qu'il faut, c'est que la date du contrat change. C'est à dire que le contrat dont la date de création est le 01/01/2009, et dont le type de prélèvement sera trimestriel devra être créé 4 fois, donc le 01/01/2009,
                          le 01/04/2009,
                          le 01/07/2009,
                          le 01/10/2009.
ce que je n'arrive pas à faire en fait, est de rajouter les 3 mois à chaque fois.
Dans le programme, les Dates sont dans un Tedit.name:=EdAddEcheance.
et je réalise un boucle while pour envoyez 4 contrats à ma BDD, et il faudrait que je trouve comment l'écrire. dans ma tête, j'ai
Procedure tform2.envoidonneeclick(sender: tobject)
var u:integer;
begin
u:=0;
         while  u <>4 do
              begin
                    u:=u+1;

                    EdAddEcheance.text:=... EdAddEcheance.text +3mois mais comment rajouté les 3 mois? :
              end;
          end;
end;

Ici se trouve mon gros problème... si quelqu'un peu m'aider je lui en serai très reconnaissant

7 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
8 janv. 2009 à 15:22
Salut,

que de complications ....

Il existe une fonction "IncMonth" de l'unité SysUtils qui fait ça très bien ...
Now représente la Date (et l'heure) actuelle "08/01/2009"

Label1.Caption := DateToStr( IncMonth (Now, 3)); // renvoie la Date du jour + 3 mois

 
@+
Cirec

<hr siz ="" />
3
Mattt1438 Messages postés 8 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 14 janvier 2009
8 janv. 2009 à 14:46
Déjà il faut faire une fonction pour extraire le mois de la date :

function TForm2.extractMois(aDate: string): string;
var
posDebut, posFin, mois :integer;
begin
posDebut := AnsiPos('/', aDate);
posFin := ansipos('/', AnsiMidStr(aDate, posDebut+1, (Length(aDate)-1)));
extractMois:=ansiMidStr(aDate, posDebut+1, posFin-1);
end;

Donc on lui passe une date avec du style "jour"/"mois"/"année" (sinon ça marche pas ! :D)

Ensuite la fonction extrait le mois.

Il ne te reste plus qu'à faire ta boucle sur ton action :

procedure TForm2.envoidonneeclick(Sender: TObject);
var
I: Integer;
nouveauMois : integer;
begin
nouveauMois:=strtoint(extractMois(edit1.text));
for I := 0 to 2 do //La boucle pour le faire 3 fois
begin
inc(nouveauMois, 3); //on incrémente de 3
showMessage(inttostr(nouveauMois)); //pour vérifier que le mois à bien changé
end;
end;

Voila!
0
Mattt1438 Messages postés 8 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 14 janvier 2009
8 janv. 2009 à 14:48
Par contre toute ma mise en page à foiré....
Désolé ça fait un code imbuvable lol!
0
the_fragile_36 Messages postés 1 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 8 janvier 2009
8 janv. 2009 à 14:49
non mais les mecs quoi !! sérieux ! vous craquez !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KR73 Messages postés 10 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 3 juillet 2012
8 janv. 2009 à 14:55
C'est pas du craquage, c'est de l'aide entre futurs chômeurs
0
Mattt1438 Messages postés 8 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 14 janvier 2009
8 janv. 2009 à 15:40
Justement je revenais sur le forum parce j'avais le souvenir de fonctions sur les dates ^^

Bien vu !
0
hainlesgens Messages postés 57 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 10 février 2009
9 janv. 2009 à 11:14
la version de cirec fonctionne. mais dans mon cas, j'ai du passe comme ceci pour réussir.

  if acontrat.type_contrat=IntToStr(4) then
 begin
          while u <>2 do
          begin
                  i:=EdAddEcheance.text;
                  EdAddEcheance.Text := DateToStr(IncMonth(strtodate(i) , 3));
              
           end;
end;
end;
0
Rejoignez-nous