iki tarih arasında 0 dan büyük değer alan alanları toplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

iki tarih arasında 0 dan büyük değer alan alanları toplama

Mesaj gönderen bobasturk »

merhabalar,

başlık ne kadar derdime hitap etti bilmiyorum ama çeşitli denemeler yapmama ve dtov3 ilede aramama rağmen derdime çare bulamadım.

firebird ve delphi7 kullanıyorum.

yapmak istediğim elimdeki tabloda 9 alan var. bu dokuz alan integer ve buraya 0 ve üzeri rakamlar giriliyor. yani o alan için alınan bir şey yoksa 0, alınmış ise kaç tane olduğu.
istatistik için önce yanlış anlamışım ve alanlara girilen sayıları toplamışım. sonuç gayet güzel idi ama yanlışı anlayınca iş değişti ve işin içinden çıkamadım.

ben yapacağım sorguda iki tarih arasında bu doku alandan kaç tanesi 0 dan büyük. bunları bulmak ve ayrı ayrı dbtext ler içine yazdırmak istiyorum.

Kod: Tümünü seç

dm3.delilSayIBQry.Close;
    dm3.delilSayIBQry.SQL.Clear;
    dm3.delilSayIBQry.SQL.Add('select COUNT(PARMAK_IZI) AS pizi, COUNT(AVUC_IZI) as aizi, COUNT(BIYOLOJIK) as biyo, COUNT(KIMYASAL) as kim, COUNT(BALISTIK) as bal, COUNT(BELGE) as belge, COUNT(SES_GOR_DATA) as sgd, COUNT(IZ_INCELEME) as izinc, COUNT(PAR_IZI_LAB) as plab from RAPORLAR');
    dm3.delilSayIBQry.SQL.Add('where (INCTARIHI between :tarih1 and :tarih2)>0');
    dm3.delilSayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.delilSayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.delilSayIBQry.Open;
    dbtext11.Caption:=inttostr(dm3.delilSayIBQry.fields[0].AsInteger);
    dbtext24.Caption:=inttostr(dm3.delilSayIBQry.fields[1].AsInteger);
    dbtext25.Caption:=inttostr(dm3.delilSayIBQry.fields[2].AsInteger);
    dbtext26.Caption:=inttostr(dm3.delilSayIBQry.fields[3].AsInteger);
    dbtext27.Caption:=inttostr(dm3.delilSayIBQry.fields[4].AsInteger);
    dbtext28.Caption:=inttostr(dm3.delilSayIBQry.fields[5].AsInteger);
    dbtext29.Caption:=inttostr(dm3.delilSayIBQry.fields[6].AsInteger);
    dbtext30.Caption:=inttostr(dm3.delilSayIBQry.fields[7].AsInteger);
    dbtext31.Caption:=inttostr(dm3.delilSayIBQry.fields[8].AsInteger);
yukarıdaki kodu önce sum ile yapmıştım ve sonuç gayet güzeldi. toplayıp bana verdi. fakat dediğim gibi alan içindeki verilerin toplamı değil kaçtana 0 dan büyük değer girilmiş onlar lazım yani count ları lazım. where den sonra tarih parametresinden sonra >0 olayını bir türlü beceremedim. kafamda kurguluyorum yani kendi kendime şu alanları seç ve topla+ama şu tarih ile şu tarih arası olsun ve içindeki değerler 0 dan büyük olanlar olsun onları topla. diye kurguluyorum ama koda dökemedim.

teşekkür ve saygılarımla
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

merhaba..

delilsay.Close;
delilsay.SelectSQL.Clear;
delilsay.SelectSQL.Add('select count(SAYILACAK_ALAN_ADI) from TABLO_ADI where DOKU>'0' and tarih<='+#39+datetostr(t1.date)+#39 and tarih>='+#39+datetostr(t1.date)+#39 ' );
delilsay.Open;
delilsayisi.text:=inttostr(delilsayCOUNT.Value)+' adet';
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

hocam kusura bakma sorunu yanlış anlamışım kıdemli üye olduğunu görünce soruyu bidaha okudum öyle farkettim :)
yukarda yazdığım sorguyu 9 adet query ile her alan için farklı sorgulayıp bir değişkene atsan veya visible= false olan numeric edit lere atsan sonrada bunları kontrol edip değeri sıfır olanların sayısını bulsan nasıl olur... tabi daha kolay bir yolu varsa bizde öğrenmiz oluruz
kolay gelsin
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

ustam teşekkürler,

yukarıdaki kodu sum ile tarihler arasında sonucu alıyorum. tek değişiklik count olması ve sıfırdan büyük sayı barındıranları bulmak. dediğin yol aklıma geldi her alan için bir query kullanmak ama bu yöntemi istemedim sanki hamballık oluyormuş gibi. gerçi başka bir sorgumda yüzde hesapları yaptırıyorum orada her sorguya bir query kullanıyorum ama burada sum ile tek query olunca count ilede olur diyerek yola çıktım fakat tarih kriteri yanına >0 (sıfırdan büyük şartını ekleyemedim.) yukarıdaki koddan farklı değişik şekiller denedim isede ya sonuç yanlış çıktı yada > işaretini veya yanına koyduğum başka bir işareti kabul ettiremedim.

yardımın için yinede teşekkürler. kıdemli üye olduk ama dünya kadar fırın ekmek yemem lazım.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

hocam olmuyor derken yani ALAN_ADI>0 and tarih>='+#39+datetostr(t1.date)+#39 and tarih<='+#39+datetostr(t1.date)+#39 gibi olması lazım neden olmasınki benim yazdığım kodda oluyor orda DOKU>0 (doku derken sen dokuz yazmak istemişsin ben alan adı sandım onu..birde IBEXPERT de denesen nasıl olur acaba..
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

ustam sizin dediğiniz gibi oluyor ama tek alanın count hesabında oluyor. where kısmında

Kod: Tümünü seç


where INCTARIHI Between :tarih1 and :tarih2 and PARMAK_IZI>0

şeklinde gayet güzel oluyor fakat dediğim gibi dokuz ayrı qry kullanmak istemediğimden çözüm arıyorum. where satırına dokuz alanı and ile birleştirince ve >0 şartı verince ilk alanın sonucunu tüm alanlara veriyor. yani yanlış atama yapıyor. galiba işin aksamaması için dokuz query kullanacaz. şimdilik tabi hala çözüm arıyorum. tarih şartını kabul ettirdiğimiz gibi sıfırdan büyük şartını da kabul etmesi lazım. parametre girmeyi düşündüm ama büyük sıfır demeyi beceremedim.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam hocam sorununuzu tam olarak anlamadım .ama siz sanırım
bir tabloda 9 tane alanınız var ve 0 dan büyük olanları toplamakmı isityorsunuz.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

evet selman ustam tablomda 9 tane alanım var. integer olan bu lanların içine o konu ile alakalı delil alındı ise sayısı kadar rakam yazılıyor alınmadı ise 0 yazılıyor. dokuz alanında veri girişi böyle.

Kod: Tümünü seç


delilsayqry.close;
delilsayqry.sql.clear;
delilsayqry.sql.add('select count(PARMAK_IZI) as pizi from RAPORLAR');
delilsayqry.sql.add('where INCTARIHI Beteen :tarih1 and :tarih2 PARMAK_IZI>0');
delilsayqry.parambyname('tarih1').asdate:=datetimepicker7.date;
delilsayqry.parambyname('tarih2').asdate:=datetimepicker8.date;
delilsayqry.open;

bu kodun yaptığı işi dokuz alan için tek query ile yapmak istiyorum. ilk mesajımdaki koda alanların sıfırdan büyük verileri say kriterini geçmem gerekiyor.

işin özü tarih aralığında dokuz alanda sıfırdan büyük sayı içeren kaçar tana giriş var.(dokuz alan için ayrı ayrı sonuç döndürecek.

şimdilik dokuz ayrı query ile her alan için yaptım. ama dediğim gibi tek query ile olabilirmi diye araştırıyorum. sum komutu tek query ile iki tairh arası parametre ile oluyor. ama sum alanlardaki girişleirn sayısal değerlerini topluyor. bana girişlerin sayısı gerekli.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
hocam aslında bu işlemi yapabilmek işlemi queryi kendiniz oluşturmalısınız .2 değişken tanmlaması yapıp sql cümlesini kendiniz oluşturabilirsiniz.Veya bir function la işinizi halledebilirsiniz.
size ben basit bir örnek vereyim.

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
var
tablo,alan,alan2,alan3:string;
begin
tablo:=edit1.text;
alan1:=edit2.text;
alan2:=edit3.text;
alan3:=edit4.text;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:='select count('+alan+') from '+tablo+' where '+alan+'>0';
Query1.SQL.Text:='select count('+alan1+') from '+tablo+' where '+alan1+'>0';
Query1.SQL.Text:='select count('+alan2+') from '+tablo+' where '+alan2+'>0';

Query1.Open;
end;
basit bir örnek bunu kendinize göre düzenleyebilirseniz sorununuzu çözebilrsinizi sanırım.
ama siz yapamaszanız yinede inş. bakarız sorunuza .Kolay gelsin.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

ustam verdiğim zahmetten dolayı özür ve yardımların için teşekkürler,

sanırım anlayamadım veya yapamıyorum, verdiğiniz örneği şu şekil kendime uyarladım ama sonuç olarak son select ti göz önüne alıyor ve gride onun sonucunu döküyor önceki iki select içindeki sorguyu göz önüne almıyor.

Kod: Tümünü seç


procedure TForm1.Button1Click(Sender: TObject);
var
  tarih1, tarih2:tdate;
  tablo, alan, alan2, alan3:string;
  begin
    tablo:='RAPORLAR';
    alan:='PARMAK_IZI';
    alan2:='AVUC_IZI';
    alan3:='BIYOLOJIK';
    ibQuery1.Close;
    ibQuery1.SQL.Clear;
    ibQuery1.SQL.text:='select count('+alan+') as pizi from '+tablo+' where INCTARIHI Between :tarih1 and :tarih2 and  '+alan+'>0';
    ibQuery1.SQL.text:='select count('+alan2+') as pizi from '+tablo+' where INCTARIHI Between :tarih1 and :tarih2 and  '+alan2+'>0';
    ibQuery1.SQL.text:='select count('+alan3+') as pizi from '+tablo+' where INCTARIHI Between :tarih1 and :tarih2 and  '+alan3+'>0';
    ibquery1.ParamByName('tarih1').AsDate:=strtodate('01.10.2005');
    ibquery1.ParamByName('tarih2').AsDate:=strtodate('31.10.2005');
    ibquery1.Open;
end;

bu şekilde ilk iki alanı görmeden geçiyor ve gride son alanın sayısın veriyor. deneme amaçlı son alanı silip iki alan ile yola devam ettim yine ilk alanı es geçti birinci alanın sonucunu verdi. yani en son alan sorgusunun sonucunu veriyor.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam kardeş
kodu bu şekilde düzelltim.

Kod: Tümünü seç


procedure TForm1.BitBtn1Click(Sender: TObject);
var
tablo,alan,alan1,alan2:string;
begin
tablo:=edit1.text;
alan:=edit2.text;
alan1:=edit3.text;
alan2:=edit4.text;
Query1.Close;
Query1.SQL.Clear;
if edit2.Text<>'' then begin
Query1.SQL.Text:='select count('+alan+') from '+tablo+' where '+alan+'>0';
edit3.Clear;
edit4.Clear;
end
else
if edit3.Text<>'' then begin
Query1.SQL.Text:='select count('+alan1+') from '+tablo+' where '+alan1+'>0';
edit2.Clear;
edit4.Clear;
end
else
if edit4.Text<>'' then begin
Query1.SQL.Text:='select count('+alan2+') from '+tablo+' where '+alan2+'>0';
edit2.Clear;
edit3.Clear;
end;
Query1.Open;

end;
asıl ben kodu alelacele yazmıştım fakat tam test etmemiştim.Bu şekilde olması laızm. tarihi de sen eklersin sanırım buna.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam hocam kusura bakmayın bu alanların mesela dbgridde sayılarını görmek istiyorsanız.

Kod: Tümünü seç

var
tablo,alan,alan1,alan2:string;
begin
tablo:=edit1.text;
alan:=edit2.text;
alan1:=edit3.text;
alan2:=edit4.text;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:='select count('+alan+'),count('+alan1+'),count('+alan2+') from '+tablo+'' ;
Query1.Open;

end;
Bu rada dbgridde misal olarak 3.tablonunnda yan yana sayılarını görürsünüz.


Ve sizin yapacağınız bu koda where şartını koyup where alan>0 gibi
0 dan büyük olan sayıların kaç tane olduğunu görebilrisiniz. Ve bu 0 dan büyük alanların iki tarih aralığınıda yine bu sql cümlesine ekleyerek yapabilrisiniz.Kolay gele.Çalışmalarınızda başarılar dilerim.

[/code]
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

soruyu yanlış anlamadıysam :!: bir alanda şarta uyan kaç alan var, diğer 4 alanda ise bu alanların toplan değerleri. group by ve having ile de yapabilrisiniz. bu biraz uzun oldu idare edin :P :)

Kod: Tümünü seç

select (select count(I1) from testtable where (I1>0) and(I2>0) and(I3>0) and(I4>0)) as adet,
       sum(I1) as I1TOPLAM ,sum(I2) as I2TOPLAM ,sum(I3) as I3TOPLAM ,sum(I4) as I4TOPLAM
from testtable
where (I1>0) and(I2>0) and(I3>0) and(I4>0)
doğru ise tarihide başa and lersiniz :)
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar,

İhtimal odur ki siz anlıyorsunuz ama ben anlatamıyorum, özür dilerim.

şöyle açıklamak gerekirse tablom, otuz alandan oluşuyor ve bu alanlardan dokuz tanesi integer ve not null olan alan.

TABLO RAPORLAR
........
PARMAK_IZI
AVUC_IZI
BIYOLOJIK
KIMYASAL
BALISTIK
BELGE
SES_GOR_DATA
IZ_INCELEME
PAR_IZI_LAB

RAPORLAR tablosunun yukarıda yazan integer ve not null olan alanlarına hergün değer giriliyor. eğer o alan için değer yok ise 0 giriliyor ki boş kalmasın. Şimdi ilk verdiğim kodu düşünürseniz count ları sum yaptığımda girdiğim tarihler arasında bu alanlara girilen rakamları toplayabiliyorum ve sonuç alıyorum. ama bize rakamsal toplamları gerekli değil. sadece RAPORLAR tablosuna girilen tarihler arasında kaç olayda biyolojik delil alınmış, kaç olayında kimyasal delil alınmış.... diye bulmak. burada sıfırdan büyük olanları arıyacam dememin gerekçesi o alanın o tarihteki değeri sıfır ise demekki bu olayda o alana ait delil alınmamış. sıfırdan büyük bir rakam içeriyorsa demekki delil alınmış. toplama girmesi gerekiyor.

bu işlemi her bir alan için query kullanarak, yine daha önce yazdığım gibi sql sorgusu ile sonuç aldım. öğrenmek istediğim bunu tek query ile yapabilme işi.

@mege adminim verdiğin kodu ibexpert sql editörde denedim fakat pek çok yerinde hata verdi, 'as', 'count', ',' gibi hatalar. ayıklayınca da istediğim sonuç olmadı.

sorunum şu an için geçici olarak her bir alana query uygulaması ile çözülmüş olsa da bunu öğrenmek istedim. zira sum komutunu yani alanlardaki rakamsal verileri matematiksel olarak toplamam gerektiğinde ayrı ayrı query kullanmıştım. daha sonra yaptığım araştırmada tek query ile bütün alanları toplayabildiğimi ve istediğim yere sonuçları atayabildiğimi görünce niye hamballık yapıyorum count içinde bunu yapsam iyi olmaz mı? diye bir düşünce ile kolları sıvadım fakat şu an için çuvalladım sanırım.

başınızı ağrıttığım için özür dilerim. her şey için teşekkürler
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

birde şöyle açıklamak istiyorum,

Kod: Tümünü seç

dm3.piziSayIBQry.Close;
    dm3.piziSayIBQry.SQL.Clear;
    dm3.piziSayIBQry.SQL.Add('select COUNT(PARMAK_IZI) AS pizisaytop1 from RAPORLAR');
    dm3.piziSayIBQry.SQL.Add('where INCTARIHI between :tarih1 and :tarih2 and PARMAK_IZI>0 ');
    dm3.piziSayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.piziSayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.piziSayIBQry.Open;

    dm3.aiziSayIBQry.Close;
    dm3.aiziSayIBQry.SQL.Clear;
    dm3.aiziSayIBQry.SQL.Add('select COUNT(AVUC_IZI) AS aizisaytop1 from RAPORLAR');
    dm3.aiziSayIBQry.SQL.Add('where INCTARIHI between :tarih1 and :tarih2 and AVUC_IZI>0 ');
    dm3.aiziSayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.aiziSayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.aiziSayIBQry.Open;

    dm3.biySayIBQry.Close;
    dm3.biySayIBQry.SQL.Clear;
    dm3.biySayIBQry.SQL.Add('select COUNT(BIYOLOJIK) AS biysaytop1 from RAPORLAR');
    dm3.biySayIBQry.SQL.Add('where INCTARIHI between :tarih1 and :tarih2 and BIYOLOJIK>0 ');
    dm3.biySayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.biySayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.biySayIBQry.Open;

    dm3.kimSayIBQry.Close;
    dm3.kimSayIBQry.SQL.Clear;
    dm3.kimSayIBQry.SQL.Add('select COUNT(KIMYASAL) AS kimsaytop1 from RAPORLAR');
    dm3.kimSayIBQry.SQL.Add('where INCTARIHI between :tarih1 and :tarih2 and KIMYASAL>0 ');
    dm3.kimSayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.kimSayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.kimSayIBQry.Open;

    dm3.balSayIBQry.Close;
    dm3.balSayIBQry.SQL.Clear;
    dm3.balSayIBQry.SQL.Add('select COUNT(BALISTIK) AS balsaytop1 from RAPORLAR');
    dm3.balSayIBQry.SQL.Add('where INCTARIHI between :tarih1 and :tarih2 and BALISTIK>0 ');
    dm3.balSayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.balSayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.balSayIBQry.Open;

    dm3.belSayIBQry.Close;
    dm3.belSayIBQry.SQL.Clear;
    dm3.belSayIBQry.SQL.Add('select COUNT(BELGE) AS belsaytop1 from RAPORLAR');
    dm3.belSayIBQry.SQL.Add('where INCTARIHI between :tarih1 and :tarih2 and BELGE>0 ');
    dm3.belSayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.belSayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.belSayIBQry.Open;

    dm3.sgdSayIBQry.Close;
    dm3.sgdSayIBQry.SQL.Clear;
    dm3.sgdSayIBQry.SQL.Add('select COUNT(SES_GOR_DATA) AS sgdsaytop1 from RAPORLAR');
    dm3.sgdSayIBQry.SQL.Add('where INCTARIHI between :tarih1 and :tarih2 and SES_GOR_DATA>0 ');
    dm3.sgdSayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.sgdSayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.sgdSayIBQry.Open;

    dm3.izincSayIBQry.Close;
    dm3.izincSayIBQry.SQL.Clear;
    dm3.izincSayIBQry.SQL.Add('select COUNT(IZ_INCELEME) AS izincsaytop1 from RAPORLAR');
    dm3.izincSayIBQry.SQL.Add('where INCTARIHI between :tarih1 and :tarih2 and IZ_INCELEME>0 ');
    dm3.izincSayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.izincSayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.izincSayIBQry.Open;

    dm3.plabSayIBQry.Close;
    dm3.plabSayIBQry.SQL.Clear;
    dm3.plabSayIBQry.SQL.Add('select COUNT(PAR_IZI_LAB) AS plabsaytop1 from RAPORLAR');
    dm3.plabSayIBQry.SQL.Add('where INCTARIHI between :tarih1 and :tarih2 and PAR_IZI_LAB>0 ');
    dm3.plabSayIBQry.ParamByName('tarih1').AsDate:=datetimepicker7.Date;
    dm3.plabSayIBQry.ParamByName('tarih2').AsDate:=datetimepicker8.Date;
    dm3.plabSayIBQry.Open;

burada buttonun klik olayında dokuz alan için dokuz query çalışıyor. bunları dokuz alan için bir query ye çekmek ve her alanın sonucunu ayrı ayrı almak istiyorum.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla