6 ay arayla takistlendirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
alakel
Üye
Mesajlar: 45
Kayıt: 03 Nis 2007 02:42

6 ay arayla takistlendirme

Mesaj gönderen alakel »

slm herkese iyi çalışmalar. taksitlendirmeyi yapabiliyorum ama taksitler aylık olamayacak yani birer ay arayla değil 6 ay arayla olacak onu nasıl yapabilirim. teşekkürler
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: 6 ay arayla takistlendirme

Mesaj gönderen mrmarman »

Sorduğun soru net değil. Sorun belirli bir tarihe 6 ay nasıl eklenir ise Uses'a dateutils ekledikten sonra kullanacağın fonksiyon IncMonth(); fonksiyonudur.

Kod: Tümünü seç

Var
  tarih : tDate;
begin
  tarih := IncMonth( date, 6 ); 
  // tarih içinde bugüne 6 ay eklenmiş hali var.
end;
Resim
Resim ....Resim
alakel
Üye
Mesajlar: 45
Kayıt: 03 Nis 2007 02:42

Re: 6 ay arayla takistlendirme

Mesaj gönderen alakel »

slm. iyi çalışmalar. ilgine teşekkürederim. istediğim bu ama eksik. verdiğiniz kod belirli tarihe 6 ay ekliyor ama bunu istediğim kadar örneğin 10 defa tekrarlamak.

20.11.2010 1. taksit
20.05.2011 2. taksit
20.11.2011 3. taksit
20.05.2012 3. taksit
20.11.2012 4. taksit
20.05.2013 5. taksit
20.11.2013 6. taksit
..............
...............

var
i:integer;
bas_tar:TDate;
begin
bas_tar:=dm.SATISTARIH.Value+30;
for i:=1 to 10 do
begin
dm.BAKIM.Append;
DM.BAKIMTARIH.AsString:=DATETOSTR(incmonth(bas_tar,6));
DM.BAKIM.Post;

i nereye yazılacak
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: 6 ay arayla takistlendirme

Mesaj gönderen qamyoncu »

For döngüsünün içerisinde illa ki "i" değişkeni kullanmak zorunda değilsin.

Kod: Tümünü seç

for i:=1 to 10 do
 begin
incmonth(date,6);
end;
Şeklinde kullanabilirsiniz.

Kod: Tümünü seç

var
i:integer;
bas_tar:TDate;
begin
bas_tar:=dm.SATISTARIH.Value+30;
for i:=1 to 10 do
begin
dm.BAKIM.Append;
DM.BAKIMTARIH.AsString:=DATETOSTR(incmonth(bas_tar,6));
DM.BAKIM.Post;
Bu kod ile 10 kere DM.BAKIMTARIH değişkenini 6 ay artırmak yerine bir kere 60 ay artırabilirsiniz. Ama eğer ki her taksit zamanını bir şekilde kullanıcıya göstermek istiyorsanız bu şekilde yapamazsınız sanıyorum.
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: 6 ay arayla takistlendirme

Mesaj gönderen mrmarman »

i değişkeni senin kaçıncı taksit olduğunu belirttiğine göre bunu veritabanında kullancaksın. aşağıdaki gibi yani.

Kod: Tümünü seç

var
  i:integer;
  bas_tar:TDate;
begin
  bas_tar:=dm.SATISTARIH.Value+30;
  for i:=1 to 10 do
  begin
    dm.BAKIM.Append;
    DM.BAKIMTARIH.AsString := DATETOSTR(incmonth(bas_tar,6));
    DM.BAKIMtaksit.AsInteger := i;
    DM.BAKIM.Post;
  end;
end;
Resim
Resim ....Resim
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

Re: 6 ay arayla takistlendirme

Mesaj gönderen zengin »

s.a

Degerli üstadım alakel birde şu koda bakarmısın

Kod: Tümünü seç

procedure TForm1.Button3Click(Sender: TObject);
var
Tmp : TDateTime;
AL,TMiktar:integer;
begin
Tmp := Now;
TMiktar:=StrToInt(Edit1.Text);
for AL:=1 to TMiktar do
begin
DataSet1.Append;
TMP := TMP + StrToFloat(Edit2.Text);
DataSet1TARIH.AsDateTime:= Tmp;
DataSet1ACIKLAMA.AsString:=IntToStr(AL)+'.Bakım Tarihi';
DataSet1.Post;
DataSet1.Next;
end;

end;
not =
Edit1 icine taksit adet girilecek
Edit2 icine 180 gün yaz

kolay gelsin
Zengin
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: 6 ay arayla takistlendirme

Mesaj gönderen mrmarman »

Periyodik bakım gün olarak mı veriliyor ? ( 180 gün demişsin ) Bu şekilde ise kod doğru çalışıyor.

Duruma göre ilerde bir sorunla karşılaşabilirsin. Şöyle ki; DateTime içeriğinde tarih ve saat birlikte kaydediliyor. Şimdi başka bir başlıkta da benzer bir konu tartışıldı ama burada da yineleyim :

Girdiğin tarih ( now ) demişsin ya, girdiğin saati de içeriyor. İleride iki tarih arası sorgular / arama yaparken karşılaşacağın muhtemel sorun, benzer tarihler olduğu halde (mesela her iki tarih de 20.05.2010 olsun) her tarih için farklı saat olmasından dolayı iki farklı tarih olarak ( 20.05.2010 - 22:00 ile 20.05.2010 - 22:35 eşit değildir çünkü saatleri farklıdır ) değerlendirilecek ve eşitlik sorgusu sonuçsuz olacaktır. Yapacağın sorgulara göre bu ihtimali göz önünde bulundurman yeterli.
Resim
Resim ....Resim
alakel
Üye
Mesajlar: 45
Kayıt: 03 Nis 2007 02:42

Re: 6 ay arayla takistlendirme

Mesaj gönderen alakel »

now o kadarda önemli değil. zaten now da kullanmıyorum. onun yerine date yazılabilir ama ben veri tabanında girilen tarihi alıyorum. bu işimi görüyor zengin hocama teşekkür ederim. bunun tek sakıncası ayları aynı günde vermiyor. ama buda bir çözüm.
Cevapla