Tarihten Tarih Çıkarma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Tarihten Tarih Çıkarma
Merhaba arkadaşlar bir poliçe takip programı yazıyorum.Şimdi bu programdaForm3 poliçe eklem formu burada DateTimePicker1 poliçe başlangıç Tarihi, DateTimePicker2 ise poliçe bitiş tarihinin yer aldığı component.Şimdi benim Form4 de yani poliçesi biten müşterilerin olduğu formda poliçe bitiş tarihinin bitmesine son 4 gün kala Form4 de müşterinin kayıt sıra no,adı,soyadı,poliçe bitiş tarihi ve poliçe türü dbgridde yer alacak bu işlemi nasıl yaparım yardımcı olursanız seviniirm...
Re: Tarihten Tarih Çıkarma
Öyle bir soru sormuşsunuz ki; sorunuzun cevabını verebilmek için projeyi bizim yazıyor olmamız icap ediyor. İki tarih arasındaki fark gibi kısa bir soruna yanıt arıyorsanız öncelikle DateUtils unit'ine bakmanızı önereceğim. İkinci olarak da TDateTime hakkında kısa bazı açıklamalar yapayım. Belki faydalı olur. TDateTime veri türü Double bir veri türüdür hepimizin bildiği gibi. Ve yine hepimizin bilebileceği gibi bu veri türü ile matematiksel işlemler yapabiliriz. Örneğin;
Yukarıdaki basit örneği vermemdeki amaç matematiksel iafedeleri kullanarak tarih hesaplamalarında aslında çok basit bir şekilde başarılı sonuçlar üretebileceğimiz gerçeğini ifade etmektir. Bir TDateTime veri türüne 1 sayısını eklemek bu veri türünü 1 gün ilerisine taşıyorsa eğer, 1/24 eklemek de 1 saat ilerisine taşımalıdır mantıken
Aynı şekilde 1/24/60 eklenmesi de 1 dakika ilerisine taşımak anlamına gelir. Aşağıdaki örnek bunun nasıl olabileceğini simüle eden basit bir koddur;
Kod: Tümünü seç
var
dt : TDateTime;
begin
dt := Now;
dt := dt + 1; // 1 gün sonrası..
ShowMessage(DateTimeToStr(dt));
end;

Kod: Tümünü seç
const
BirSaat = 1 / 24;
BirDakika = BirSaat / 60;
BirSaniye = BirDakika / 60;
procedure TForm1.Button1Click(Sender: TObject);
var
dt : TDateTime;
begin
dt := Now;
Memo1.Lines.Add('Orjinal Tarih/Saat:' + DateTimeToStr(dt));
dt := dt + 1;
Memo1.Lines.Add('Bir gün sonrası:' + DateTimeToStr(dt));
dt := Now;
dt := dt + BirSaat;
Memo1.Lines.Add('Bir saat sonrası:' + DateTimeToStr(dt));
dt := Now;
dt := dt + BirDakika;
Memo1.Lines.Add('Bir dakika sonrası:' + DateTimeToStr(dt));
dt := Now;
dt := dt + BirSaniye;
Memo1.Lines.Add('Bir saniye sonrası:' + DateTimeToStr(dt));
end;
Re: Tarihten Tarih Çıkarma
vall hocam okadar ısrar ediyorsanı siz bir örnek yapar gönderirsiniz.
neyse şaka bir tarafa hocam DateUtils uniti nedemek onu alamadım nerde bulurum bu üniti biraz daha konuyu açöarsanız seviniirm. ayrıca program bunu poliçesi biten müşteriler tablousnda saklı tutacak...

Re: Tarihten Tarih Çıkarma
uses DateUtils; yazarsın programının uses bölümüne ve DateUtils üzerinde iken Ctrl+Enter'a basarsın. İlgili unit karşında olacak.
Re: Tarihten Tarih Çıkarma
hocam verdiğiniz cevap için tşk ederim fakat benim projemde memo componenti yok ki ? acaba başka ne tür alternatifler üretebiliriz.. ??
Re: Tarihten Tarih Çıkarma
anladığım kadarıyla iki tarih arasındaki farkı almak istiyorsun.
var
a,b:tdate;
c:integer;
begin
a:=form1.datetimepicker1.date; // ilk tarih
b:=form2.datetimepicker2.date; // ikinci tarih
c:=daysbetween(b,a); //buradan gelen sonuç integer türünde olacaktır. b ile a'nın yerleri değişmesi gerekebilir.
end;
eğer veritabanından tarihleri alacaksan kullandığın veri tabanına göre kod yazman gerekebilir. örneğin firebird kullanmışsan ve dataset kullanmışsan;
a:=datamodule2.dataset1.tarih.value; şeklinde istediğin kaydı alabilirsin.
bu arada uses kısmına dateutils eklemen gerekiyor.
kolay gelsin.
var
a,b:tdate;
c:integer;
begin
a:=form1.datetimepicker1.date; // ilk tarih
b:=form2.datetimepicker2.date; // ikinci tarih
c:=daysbetween(b,a); //buradan gelen sonuç integer türünde olacaktır. b ile a'nın yerleri değişmesi gerekebilir.
end;
eğer veritabanından tarihleri alacaksan kullandığın veri tabanına göre kod yazman gerekebilir. örneğin firebird kullanmışsan ve dataset kullanmışsan;
a:=datamodule2.dataset1.tarih.value; şeklinde istediğin kaydı alabilirsin.
bu arada uses kısmına dateutils eklemen gerekiyor.
kolay gelsin.
Re: Tarihten Tarih Çıkarma
evet hocam veritabanım firebird ve intrbase componentleri ile bağlantıyı sağlam..
Re: Tarihten Tarih Çıkarma
var
a,b:tdate;
c:integer;
begin
a:=Form3.IBTable1.’YENI_POLICE_EKLE’;
b:=RZdbDateTimePicker1:=’polıce-başlangıc_tarih;
c:=RZDBDateTimePicker2:=’POLICE_BITIS_TARIHI’;
Form4.IBTable1=’POLICESI_BITEN_MUSTERİLER’;
……… HERHALDE BÖYLE BİR KOD YAZMALIYIM …???
a,b:tdate;
c:integer;
begin
a:=Form3.IBTable1.’YENI_POLICE_EKLE’;
b:=RZdbDateTimePicker1:=’polıce-başlangıc_tarih;
c:=RZDBDateTimePicker2:=’POLICE_BITIS_TARIHI’;
Form4.IBTable1=’POLICESI_BITEN_MUSTERİLER’;
……… HERHALDE BÖYLE BİR KOD YAZMALIYIM …???
Re: Tarihten Tarih Çıkarma
ilk olarak datetimepicker1.date olarak kullanman gerekiyor.
RZdbDateTimePicker1.date=’police_baslangic_tarih; 'i ise
a:=RZdbDateTimePicker1.date;
RZDBDateTimePicker2.date=’POLICE_BITIS_TARIHI’; 'i ise
b:=RZDBDateTimePicker2.date;
ve son olarak
c:=now; // c'ye bugünün tarihi atman gerekiyor. böyle olayabilir kod. buna bir bak istersen.
d:=daysbetween(c,b);
if d=4 then showmessage('Son 4 gün kaldı');
gibi birşey olması gerekiyor.
RZdbDateTimePicker1.date=’police_baslangic_tarih; 'i ise
a:=RZdbDateTimePicker1.date;
RZDBDateTimePicker2.date=’POLICE_BITIS_TARIHI’; 'i ise
b:=RZDBDateTimePicker2.date;
ve son olarak
c:=now; // c'ye bugünün tarihi atman gerekiyor. böyle olayabilir kod. buna bir bak istersen.
d:=daysbetween(c,b);
if d=4 then showmessage('Son 4 gün kaldı');
gibi birşey olması gerekiyor.
Re: Tarihten Tarih Çıkarma
peki hocam bu kodu poliçesi biten müşteri formunun form create olayına yazsam olur mu..???
Re: Tarihten Tarih Çıkarma
oncreat veya onshow olayına yazman yeterli olur.