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.
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.
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ü.
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...'); ...
Ş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.
Ş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...
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...'); ...
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?.
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?.
quote:
Aspci79, bana while döngüsündeki begin kısmını da yazar mısın?Örnek olarak yani
Şu an müsait deilim ama akşam size örnek bir uygulama hazırlarım. SQL temelli..
procedure TForm1.Button1Click(Sender: TObject); Var Sonuc:String; begin edit3.Text := ''; edit3.Text := farkal(Table1DOGUMTARIH.Value); //yaş farkı döndü....şimdi arayı filtreliyeceğiz...
if (inttostr(edit3.Text) < 5) and (inttostr(edit4.Text) > 1) then //-> 1 ile 5 arası yaşlar... begin // 1 İLE 5 yaş ARASI RAPOR end;
if (inttostr(edit3.Text) < 15) and (inttostr(edit4.Text) > 5) then // -> 5 - 15 arası Begin //... end;
if (inttostr(edit3.Text) < 30) and (inttostr(edit4.Text) > 15) then // -> 15-30 arası Begin //... end;
if (inttostr(edit3.Text) > 30) then // -> 30 dan büyükler... Begin //... end;
end;
function TForm1.Farkal(Dogumtarihi:Tdatetime): String; var sonuc:Tdatetime; begin sonuc := date - Dogumtarihi; Farkal := Formatdatetime ('yy',sonuc); end;
end.
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...
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.
quote:
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
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
Bu mesaja 1 cevap geldi. Cevapları Gizle
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...
Bu mesaja 1 cevap geldi. Cevapları Gizle
ö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
Bu mesaja 1 cevap geldi. Cevapları Gizle
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.
Bu mesaja 1 cevap geldi. Cevapları Gizle
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
Bu mesaja 1 cevap geldi. Cevapları Gizle
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ü.
Bu mesaja 1 cevap geldi. Cevapları Gizle
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.
< Bu mesaj bu kişi tarafından değiştirildi irfanmatak -- 20 Haziran 2005, 1:47:05 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
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...
Bu mesaja 1 cevap geldi. Cevapları Gizle
Aspci79, bana while döngüsündeki begin kısmını da yazar mısın?Örnek olarak yani.
Bu mesaja 1 cevap geldi. Cevapları Gizle
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?.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Şu an müsait deilim ama akşam size örnek bir uygulama hazırlarım. SQL temelli..
< Bu mesaj bu kişi tarafından değiştirildi irfanmatak -- 22 Haziran 2005, 13:14:43 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
Sabırsızlıkla bekliyorum
Bu mesaja 1 cevap geldi. Cevapları Gizle
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...
Bu mesaja 1 cevap geldi. Cevapları Gizle
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.