| Hancet | 20.07.2005 - 16:29:56 |
| S.A.
merhaba arkadaşlar ben doğum tarihi hatırlatan program yapmak istiyorum Sizlere iki tane sorum olacak. aşağıdaki kodları kullanarak içinde bulunduğumuz ayda doğan kayıtlı kullanıcıların doğum günlerine kaç gün kaldığını net olarak buluyor ama bu ay içinde değil ise net olarak kaç gün kaldığını bulamıyor. Çünkü ayların 30,31 çekme sorunu var. bunu nasıl yapabileceğime dair yardım ederseniz sevinirim. var
gun,ay,tarih:string; begin tarih:=datetostr(date); gun:=copy(tarih,1,2); ay:=copy(tarih,4,2); table1.edit; if strtoint(Table1ay.asstring)-strtoint(ay)<0 then table1kalan.asstring:=inttostr((strtoint(table1ay.asstring)-strtoint(ay)+12)*30); if strtoint(table1ay.AsString)-strtoint(ay)>0 then table1kalan.asstring:=inttostr((strtoint(table1ay.asstring)-strtoint(ay))*30); if strtoint(table1ay.asstring)-strtoint(ay)=0 then begin if strtoint(table1gun.asstring)-strtoint(gun)<0 then table1kalan.asstring:=inttostr(strtoint(table1gun.asstring)-strtoint(gun)+365); if strtoint(table1gun.asstring)-strtoint(gun)>0 then table1kalan.asstring:=inttostr(strtoint(table1gun.asstring)-strtoint(gun)); if strtoint(table1gun.asstring)-strtoint(gun)=0 then table1kalan.asstring:='0'; end; end; 2. sorum kalan gün'e göre indexleme yaptığım zaman doğum günü en yakın olan kişi en üstte oluyor(DBGrid için). ben doğum tarihine 3 gün kalanların kırmızı renkte 15 gün kalanların sarı renkte 30 gün kalanların ise yeşil renkte olmasını istiyorum bunu nasıl yaparım. Yani renkli bi dbgrid Bide bunları grid kullanmadan direk indexli ve renkli bir şekilde listbox'a aktarabilirmiyim? | |
| aslangeri | 21.07.2005 - 09:26:05 |
| s.a.
vatandaşın doğum tarihinden bugünü çıkardığın zaman sana zaten kaç gün kaldığını vermesi lazım. ay 30 çekmiş 31 çekmiş önemli değil. gridi renklendirme kodları sitede var. sadece koşulu değiştireceksin. ondada gene tarihleri birbirinden çıkart işlem tamam. hatta senin yerinde olsam aradaki günü bulan bi function yazarım her yerde onu kullanırım. Not: bu işlemi ben düşündüğüme göre borlanddaki herifler hayli hayli düşünmüştür. DateUtils unitini bi incele orda bu işlemi yapan bi function olması lazım. funcion gunfarkinibul(t1,t2:TDate):integer; begin result:=t1-t2;//tabi normalde burda bi takım kontroller yapılması gerekiyor end; kolay gelsin. | |
| Hancet | 22.07.2005 - 20:01:28 |
| S.A.
Abdullah abi vatandaşın doğum tarihinden bugünün tarihini nasıl çıkaracağım tam olarak anlamadım. Mesela 02.07.1988 arkadaşın doğum tarihi diyelim çıkarma işlemi nasıl olacak. Sonra çıkarma yapınca bana gün olarak nasıl verecek? Daha açık bilgi verirsen sevinirim. Kolay Gelsin | |
| aslangeri | 22.07.2005 - 20:23:57 |
| a.s.
vatandaşın doğum tarihini bi tabloda tuttuğunu varsayıyorum. kalangun integer tipinde bir calc alan ekliyorsun tabloya oncalcfieldsolayında aşağıdakinebenzer bir kod yazıyorsun procedure xxxoncalcfield; var dt:TDATE;//dt=doğumtarihi begin dt:=dataset.fiedlbyname('DOGUMTARIHI').asdatetime; dataset['KALANGUN']:=gunfarkinibul(dt,date); end; dbgride kalangun alanınıda ekle indexini (yada siralamani orderby) doğumtarihine göre sıralat. kolay gelsin. | |
| Hancet | 23.07.2005 - 09:49:41 |
| s.a.
Program olacak gibi teşekkür ederim funcion gunfarkinibul(t1,t2:TDate):integer; begin result:=t1-t2;//tabi normalde burda bi takım kontroller yapılması gerekiyor end; kontroller derken benim yazdığım kullandığım kodlar gibi mi kontrol yapılacak yoksa farklı bir yöntem veya kod mu kullanacağız | |
| aslangeri | 23.07.2005 - 16:00:00 |
| demek istediğin gelen parametreler,
girilen değerler gerçektende tarihmi gibisinden kontroller. kolay gelsin. | |
| Hancet | 25.07.2005 - 14:33:53 |
| Abdullah abi yazdıklarını denedim ama bi sonuca ulaşamadım maalesef :(
Allah razı olsun bi hocam yardım etti aşağıdaki kodları kullanarak programı bitirdim. :) function TForm1.Hesapla(DogumTarihi:TDate):Extended; var tarih1,tarih2:tdate; Year1,Month1,Day1,Year2,Month2,Day2:Word; begin tarih1:=Date; tarih2:=DogumTarihi; DecodeDate(Tarih1,Year1,Month1,Day1); DecodeDate(Tarih2,Year2,Month2,Day2); Tarih2:=EncodeDate(Year1,Month2,Day2); if Tarih2<Tarih1 then Tarih2:=EncodeDate(Year1+1,Month2,Day2) else Tarih2:=EncodeDate(Year1,Month2,Day2); Result:=(Floor(Tarih2-Tarih1)); end; procedure TForm1.Table1AfterOpen(DataSet: TDataSet); var tar:Tdate; begin Table1.First; while not Table1.Eof do begin if not Table1Yil.IsNull and not Table1Ay.IsNull and not Table1Gun.IsNull then begin Table1.Edit; tar:=EncodeDate(Table1Yil.AsInteger,Table1Ay.AsInteger,Table1Gun.asInteger); Table1Kalan.Value:=Floor(Hesapla(tar)); end; Table1.Next; end; end; Ama ilgilendiğin için sağol yinede , Allah razı olsun. | |