1. sayfa
http://www.delphibasics.co.uk/Article.asp?Name=Dates hem vaktim olamdığı hemde elimin altında delphi olamdığı için şuan üsteki linke bir bak eminim yardımcı olacaktır. öss den sonra bende yardım edebilirm ![]() |
Formatı iki adet Datetime deişkene alıp bildiğiniz çıkarma işlemi yaparsınız... Delphide yazmadım hata olabilir ama var basla,bit,sonuc : Tdatetime; begin basla := Date; bit := strtodate ('02.05.1985'); // tarih formatı farklı olabilir... sonuc := bit - Basla; edit1.text := formatdatetime ('yyyy',sonuc) ; end; format datetime kısmına HELP den bakıp sadece yıl gösterecek şekilde ayarlarsınız ben doğru yazdığıma emin deilim... ![]() |
hem vaktim olamdığı hemde elimin altında delphi olamdığı için şuan üsteki linke bir bak eminim yardımcı olacaktır. öss den sonra bende yardım edebilirm Umarım sınavım iyi geçmiştir.Herkese büyük geçmiş olsun.Zamanın olursa tarih konusunda yardımlarını beklerim.Adreste istediklerim yoktu.Ben, projemin rapor kısmında belli yaşlarda olanların toplam sayılarını gösterecem.Mesela 1-5 yaş arasında 10 kişi 6-11 yaş arasında 23 kişi 12-18 yaş arasında 32 kişi ,... gibi ![]() ![]() |
mesajın için sağol Aspci79.Kabaca anladım fakat biraz daha yardımınız gerekli .projemin rapor kısmında belli yaşlarda olanların toplam sayılarını gösterecem.Mesela 1-5 yaş arasında 10 kişi 6-11 yaş arasında 23 kişi 12-18 yaş arasında 32 kişi ,... gibi.Ben, tabloda yer alan doğum tarihlerini(01.02.2005 formatında) hesaplatıp yaşlara göre gruplandıracam.Yukardaki örnekteki olduğu gibi. ![]() |
var birbes:integer; if (yas=>1) and (yas=<5) then birbes=birbes+1; //yas 1 e esşit veya büyükse ve 5e eşit ve küçükse birbes isimli integer değişkeknini bir artır. bunu gibi pek çok amntık kurabilirsin. ama bu bayağı analaşılır. gibi mantığı anladın sanırım ![]() |
var birbes:integer; if (yas=>1) and (yas=<5) then birbes=birbes+1; //yas 1 e esşit veya büyükse ve 5e eşit ve küçükse birbes isimli integer değişkeknini bir artır. bunu gibi pek çok amntık kurabilirsin. ama bu bayağı analaşılır. Ama yaşlarımız tarih formatında örneğin(01.01.1980) gibi.Nasıl if (yas=>1) and (yas=<5) yapabiliriz ki?Yani yaş ı integer olarak tanıtamayız .date formatında çünkü. |
Yukarıda nasıl çıkarma yapabileceğini anlattım ya benim teknikle sayı olarak çıkar. drony nin anlattığı gibi kıyas yap... formatdatetime('yy',sonuc) = 30 gibi ... Kafama takıldı yazacağım.. ![]() var sayac:integer; begin try table1.first; sayac:=0; while not table1.eof begin ... // burada her kayıt için çıkarma işlemi yapacaksın.. arada ki farkı almak için yukarıda yazdığım için tekrarlamayacağım... if (strtoint(formatdatetime('yy',sonuc)) > 1) and (strtoint(formatdatetime('yy',sonuc)) < 5) then begin sayac := sayac + 1; belirttiğimiz aralıktaysa 1 arttırdık... end; table1.next; //sonraki kayıta geçtik.. end; showmessage ('1 ile 5 yaş aralığındaki kayıt sayısı '+ inttostr(sayac)+ 'tır...'); ... Bu en basit uygulamadır. ![]() |
Şu hataya bir bakar mısınız?(Resimdeki)Ben adotable nesnesini kullandım.Ayrıca adotable nesnesiyle bağlantıyı kurduğum tablodan ilk veri yi(mesela 01.02.1980) nasıl basla değişkenine aktarılıyor.Burayı çözemedim. Verdiğim rahatsızlıktan dolayı özür dilerim.![]() ![]() |
Verdiğiniz resimde baktığım her satırda 1 adet hata gördüm... ![]() Ben burada sadece size fikir vermesi için yukarıdaki kodu örnek olarak yazdım zaten Delphide bile yazmadım o kodu yazdığımda Linux üzerindeyim :) Adotable nesnesi ile bu şekilde bir döngü oluşturmak kayıt sayınız artınca kullanışsız olacaktır en sağlam yol SQL Burada bir çok syntax error var noktalı virgül eksik açıklama başına "//" eklemelisiniz. vs. Onları bir giderin sonra devam edelim... ![]() ![]() |
Aspci79, bana while döngüsündeki begin kısmını da yazar mısın?Örnek olarak yani. ![]() ![]() |
Ben bu işlemi projede kullanacam.Bu işlem için Query sorgulamasını yani SQL i kullanacağım. Mesela SELECT COUNT(*) FROM BILGILER WHERE W(APPSTARTDATE - DOGUM_TARIHI >1) AND W(APPSTART - DOGUM_TARIHI <5)gibi. Ama burada W=?(Tarihi yıl cinsinden verecek komut.)Ayrıca bu işlem şayet çalışırsa sadece 1 -5 yaş arası birey sayısını verir.Fakat bana diğer yaş gruplarının sayısı da lazım.Aynı form da birden fazla Query nesnesi kullanılır mı(Quick rapor da ) kullanılırsa nasıl kullanılır?. ![]() ![]() |
Şu an müsait deilim ama akşam size örnek bir uygulama hazırlarım. SQL temelli.. ![]() |
Sabırsızlıkla bekliyorum ![]() |
Mantık olarak bir taslak çalışma çıkardım ortaya...
Burada çevirme işlemini bir functiona yaptırdım... Ama raporlama pek pratik olmadı. Bu koddaki çevirme işlemini SQL kodunuzlada kullanabilirsiniz ama en pratik yol kişinin yaşını veriyi kaydederken database e almak.... Farkal functionuyla kişinin yaşını hesaplatıp veri tabanına yazarsanız büyük kolaylık olur sizin için ... Select * from TABLO where YAS < 5 and YAS > 1 ... gibi Eğer saf SQL kullanarak bir sorgu oluşturmak istersek bu çok komplike bir sorgu olur. Yani direk hesaplatmaları SQL içinde yapmamız gerekir. Buda biraz zaman alıcı bir durum olduğu için şu an yazamıyorum belki fikir verir size en azından hatasız... Kod tarafımdan kontrol edilmiştir... Kolay gelsin... ![]() |
Tüm yaptıklarımızı bir kenara bırakalım.Bir de böyle deneyelim. 1-Tarih formatında girdiğim edit ler otomatik olarak yaş formatına nasıl çevirilir? 2-Veyahutta yaş(örneğin 23) olarak girersek 1 yıl sonra otomatik olarak bu yaş(24 oldu) ı artırabilir miyiz? 3-Veya yaş olarak değerleri girecez ve proje çalıştırılınca güncelle diye bir button olacak.Ve buttona tıklanıldığında yaş lar otomatik olarak değişecek.Olabilir mi?Yorumları bekliyorum.Olmazsa diğer yönteme devam edecem. ![]() ![]()
Burdaki gibi olabilir.Fakat ben yapamadım. ![]() |
1. sayfa
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.