hainlesgens
Messages postés57Date d'inscriptiondimanche 24 décembre 2000StatutMembreDernière intervention10 février 2009
-
8 janv. 2009 à 10:21
hainlesgens
Messages postés57Date d'inscriptiondimanche 24 décembre 2000StatutMembreDernière intervention10 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
Mattt1438
Messages postés8Date d'inscriptiondimanche 19 novembre 2006StatutMembreDernière intervention14 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;
hainlesgens
Messages postés57Date d'inscriptiondimanche 24 décembre 2000StatutMembreDernière intervention10 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));