Konu: Benden bukadar gerisi sizin işiniz
Hocalarım ;
Ben sayenizde foxdostan visuale geçtim ve ne öğrendimsede sayenizde öğrendim hepinize öncelikle teşekkür ederim.
Dostayken rapor dosyasıyla pek uğraşmamıştım buraya takıldıktan sonraysa biraz onunla uğraşayım dedim. sağolsun özcan hocam bayağı yardım etti bana onun yardımıyla bir kod yazdım. kod gayet iyi çalışıyor (du) 9000 kayıtı 30 saniyede derliyordu.
yaptığı iş şu asilar ve hastalıklar dosyasının içindeki kayitları verilen tarih aralığına göre derliyor. sonuç olarakda hangi cins hayvana hangi aşıdan ne kadar yapıldığını buluyor
local hcinsi,asicinsi,totasicnt,tottoplam,asa,aa
thisform.ay=1
sele rapor
dele all
sele asilama
if empty(this.parent.combo2.DisplayValue)
sele * from asilama where between(atar, (this.parent.text1.Value),(this.parent.text2.Value)) into cursor kaykay
sele * from hastalik where between(tarih, this.parent.text1.Value,this.parent.text2.Value) into cursor hastarap
else
sele * from asilama where between(atar, this.parent.text1.Value,this.parent.text2.Value) and alltrim(asilama.not)=this.parent.combo2.Value into cursor kaykay
sele * from hastalik where between(tarih, this.parent.text1.Value,this.parent.text2.Value) and alltrim(asilama.not)=this.parent.combo2.Value into cursor hastarap
endif
sele kaykay
m.Hcinsi=Alltrim(kaykay.not)
m.Asicinsi=alltrim(kaykay.asi)
m.TotAsiCnt = 0
m.tottoplam=kaykay.miktar
do while !Eof()
m.Hcinsi=Alltrim(kaykay.not)
m.Asicinsi=alltrim(kaykay.asi)
m.tottoplam=kaykay.miktar
sele rapor
Locate For rapor.HCinsi=m.HCinsi AND rapor.AsiCinsi=m.AsiCinsi
if found()
m.TotAsiCnt =rapor.TotAsiCnt + 1
m.tottoplam=rapor.toplam + m.tottoplam
replace rapor.toplam with m.tottoplam,;
rapor.TotAsiCnt with m.TotAsiCnt
else
appe blank
replace hcinsi with m.hcinsi,;
Asicinsi with m.Asicinsi,;
TotAsiCnt with 1,;
toplam with m.tottoplam
endif
sele kaykay
skip
endd
sele hastarap
******hastaliklar
m.Hcinsi1=Alltrim(hastarap.cins)
m.TotAsiCnt1 = 0
do while !Eof()
m.Hcinsi1=Alltrim(hastarap.cins)
sele rapor
Locate For HCinsi=m.HCinsi1 and rapor.Asicinsi="hastalıklar"
if found()
m.TotAsiCnt1 =rapor.TotAsiCnt + 1
replace rapor.TotAsiCnt with m.TotAsiCnt1
else
appe blank
replace rapor.hcinsi with m.hcinsi1 ,;
rapor.Asicinsi with "hastalıklar" ,;
rapor.TotAsiCnt with 1
endif
sele hastarap
skip
endd
daha sonra aklıma select komutu takıldı
SELECT asilama.not Cinsler ,asi Asilar, ;
count(asi) as Mikatar ,SUM(miktar) as gentop1 FROM asilama ;
GROUP BY 1,2 ;
WHERE !(asilama.asi =='') AND between(atar, (this.parent.container3.text1.Value),(this.parent.container3.text2.Value)) ;
order by 1,2;
INTO CURSOR tamrap1 READWRITE
SELECT cins cinsler,count(teshis) as Mikatar FROM hastalik ;
WHERE !(hastalik.teshis =='') AND between(tarih, (this.parent.container3.text1.Value),(this.parent.container3.text2.Value)) ;
group BY 1;
INTO CURSOR hasta1
INSERT INTO tamrap1 (cinsler,mikatar) ;
SELECT Cinsler ,mikatar ;
FROM hasta1
SELECT tamrap1
REPLACE ALL tamrap1.asilar WITH "Hastalıklar" FOR EMPTY(tamrap1.asilar)
this.Parent.grid1.RecordSource="tamrap1"
Bu kod 2. ye oranla inanılmaz hızlı....
şeytan rahat bırakmadı beni 3 gündür uğraşıyorum buna benzer raporu tek bir select komutuyla alabilirmiyim diye.
üstadlara bir sorayım dedim