1 Son düzenleyen, ugurlu2001 (16.03.2007 13:09:28)

Konu: SET FILTER hakkında.

Merhaba Arkadaşlar;

Kullanmakta olduğum ürün görüntüleme penceresinde, önce SQL SELECT sorgulamaları ile geçici bir TABLE oluşturuyorum. Daha sonra SET FILTER komutu ile kullanıcı parametreli bir filtreleme yapıyorum. PREVIEW ve NEXT buttonları ile TABLE üzerinde ileri geri hareket edebiliyorum.

Sorunum şu;
Diyelimki ;

Visual Fox Pro
SET FILTER TO Kod < "C"

Komutunu kullandım.

Aktif olarak B-999 kodlu kayıdın üzerindeyim. NEXT dediğimde EOF() kontrolü yaptığımda, SET FILTER durumuna göre son kayıtta olmama rağmen, TABLE 'ın en sonuna (Z harfine kadar) kadar arama yapılıyor, Ancak ikinci kez NEXT e tıkladığımda Uyarı kontrolü alabiliyorum. EOF() fonksiyonu ile SET FILTER kullanımını daha verimli bir şekilde kullanabileceğim bir yöntem varmı?

Şimdiden çok teşekkür ederim

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

2

Re: SET FILTER hakkında.

FILTER kullansanda table yine aynı table. SKIP yaptığında table daki bir sonraki kayda gidiyor, FILTER'daki değil. En iyisi cursor kullanmak.

Ama bir çözüm bulursan banada söyle smile

3 Son düzenleyen, ugurlu2001 (16.03.2007 13:33:29)

Re: SET FILTER hakkında.

Aslında kulağımı ters göstermek istemiyorum ama sadece pratik bir yolu varmı diye sormak istedim.

Visual Fox Pro
SET FILTER TO Kod < "C"

GO BOTTOM
MyLastRecord = Kod


Formun NEXT Button Click inde ;

IF EOF() OR Urun.Kod > MyLasRecord
   */ UYARI
ENDIF
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

4

Re: SET FILTER hakkında.

Eğer seni yanlış anlamadıysam şu şekilde çalışması lazım

Visual Fox Pro
*!* Herhangi bir methodunda

Set Filter to cKod < "C" In CursorAdi
Go Top In CursoAdi
*!********************
 
*!* Sonraki düğmende
Skip In CursorAdi
If EOF("CursorAdi")
    Go Bottom In CursorAdi
EndIf

Burada senin kodundan farklı olan EOF() komutunda cursor adının yazılması. Senin kullandığın komutta ise kesinlikle ilgili cursorün seçili (select) edilmiş olması gerekiyor. Senin ara komutlarında seçili olan cursor değişirse bu komutlar senin işini görmez. O yüzden ben bütün komutlarımda tablo / cursor ismi yazarım. Bugüne kadar da çok yararını gördüm. Kesinlikle tavsiye ederim.

/o---------------------o\
     www.haser.com
\o---------------------o/

5

Re: SET FILTER hakkında.

Çok teşekkür ederim Tarkan, bu pratik yöntem çok işime yarıycak...

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

6

Re: SET FILTER hakkında.

birol yazdı:

FILTER kullansanda table yine aynı table. SKIP yaptığında table daki bir sonraki kayda gidiyor, FILTER'daki değil. En iyisi cursor kullanmak.

Ama bir çözüm bulursan banada söyle smile


Birol,
Ben de pek filter yanlisi degilim ama soyledigin dogru da degil. Skip yapica filtrelene setteki bir sonraki kayda gidersin. 1000 kayitlik tabloda 3 tane filtreye uyan kayit varsa maximum 3. skipte EOF().

7

Re: SET FILTER hakkında.

Çetin,
Ben tahmin ediyorum ki EOF kontrolünü yaptığı sırada başka tablo seçili.

Sen konuyu açmışken evet bende çok uzun zaman Set Filter komutunu kullanmıyorum. Hele seninle bir konuda konuşmamızdan sonra smile Bu vesileyele sana teşekkür ederim. Senden öğrendiklerim doğrultusunda wink

Set Filter yerine Set Key çok daha hızlı, (tabi her zaman kullanılamıyor ama)
Select SQL komutunu bence daha kullanışlı. Bu konuda da where kısmında kullandığın kriterdeki sahalarda index olması komutu hızlandırır. hmm

/o---------------------o\
     www.haser.com
\o---------------------o/