Konu: FORM GRID DE SET FILTER TO ÇALIŞMIYORMU ?
FORM da SET FILTER TO aa="abc" çalışmıyormu ?
yapıyorum. komuta ragmen tüm kayıtları gösteriyor ?
Teşekkürler.
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
FORM da SET FILTER TO aa="abc" çalışmıyormu ?
yapıyorum. komuta ragmen tüm kayıtları gösteriyor ?
Teşekkürler.
sele tableadi
set filter to tableadi.alanadi="abc"
( tableadi.alanadi c 3 ise )
veya
sele tableadi
set filter to alltrim(tableadi.alanadi)="abc"
( tableadi.alanadi c 3 den büyük ise böyle dene )
yukarılarda = dersen "abc" ile başlayanları görürsün
= yerine birde == dene
bende alışkanlık olmuş farkında olmadan hep alttakini denerim
sele tableadi
set filter to alltrim(tableadi.alanadi)=="abc"
dikkat buradaki table.alanadi string olmalı
formun neresine yazıyorsun? bu kodu o önemli
init te dene sorun oluyor mu ?
yanlis alanda yapiyorsundur.
'Set filter' kullanma, hele hele grid varsa hic kullanma. Onu yerine alanin indexli ise 'set key to' kullan. Ya da sql ile sec kayitlari oyle goster.
bu arada çok fazla kayıt olursa
set filter ..... çok yavaş olur
onun yerine bir alana göre indexlemekte fayda var
tasarımda tableadi.alanadi na göre indexlediğin varsayımı ile
sele tableadi
set order to alanadi
set key to "abc"
daha doğru olur
data çok az ise pratikte pek bir şey farketmez
her durumda mecburen bir zaman ihtiyacın olacak
set order to
set key to komutlarını öğren
( burda index gerekir )
Program ilk çalışmaya başladığında da mı INT bölümüne gider ?
SET FILTER i ilk başladığında koyamıyorum.
.txtNo.Value
adlı bir değişkenin değerini kullanıcıdan aldıktan sonra
SET FILTER TO ALLTRIM(kon9.gkod)==ALLTRIM(.txtNo.Value)
u kullanıyorum. Bu komutu Sorgula tuşunun Procedure sinde veriyorum.
SET FILTER TO ALLTRIM(kon9.gkod)==ALLTRIM(.txtNo.Value)
komutunu verdikten sonra BROWSE ile kontrolunu yaptığımda FILTRE çalışıyor. ama GRID e gittiğinde FILTRE BOZULUYOR.
Class GRID de bir ekleme daha mı yapmam gerekir ?
Teşekkürler
Çetin SQL dediğin SQL veri tabanı kullanırken mi kullanabildiğimiz bir komut ?
Ben şu anda .DBF kullanıyorum ?
Size kodu göndermek isterdim ama vaktim olmadığı için eski kodlarda değişiklikler yaparak yeni kodlar oluşturuyorum. Çok karışık şu anda. Yazılı olan kodun ancak % 30 u çalışıyor. gerisi eski kod artıkları.
çetinin dediği gibi önce table de o alana göre indexle
tableadi.alanadi na göre indexle
sonra alltaki gibi kullan
mutlaka bir şey bozuyordur.
istersen kodu ziple gönder bakalım
sele tableadi
set order to alanadi
set key to "abc"
daha doğru olur
genelde bu yapıyı öğren bu yapıyı bilmeden foxda program yazmak ölüm
filitreyi bunun altında yine kullanabilirsin
sele tableadi
set order to alanadi
set key to "abc"
set filter to kosul=1 gibi yine filitrelersin
Mükemmelsiniz.
SET KEY TO yu kullandım. sorun çözüldü. Çetin in dediği gibi SET FILTER TO daki hantallık yoksa mükemmel bir komut (SET FILTER TO çok büyük dosyalarda her zaman zaman kaybı yaratıyor)
Teşekkürler
set filter to yu tek başına kullanma
data buyuk olursa işin içinden çıkmazsın
sele tableadi
set order to alanadi
set key to "abc" ( veya bunun yerine "set Key To Range degisken1, degisken2 " çok bir farkı yok benzer şeyler)
sürekli kullanman gerekecek şimdiden alış
şimdi baktımda http://msdn.microsoft.com/en-us/library … S.80).aspx adresinde biraz var
Bendeki foxpro for windows kitabında da varmış. ama SET FILTER TO ya alışmışık. Sonra bu komutu unutmuşuk.-))
Çetin SQL dediğin SQL veri tabanı kullanırken mi kullanabildiğimiz bir komut ?
Ben şu anda .DBF kullanıyorum ?
SQL "Yapısal Sorgulama Dili"; Hemen tüm programlama dillerinde ve veritabanlarında destekleniyor.
Ben kendi Foxpro bilgimi SQL öncesi ve SQL sonrası diye ikiye ayırıyorum. Forumda değişik defalar bu konuda yorumlar yaptım diye hatırlıyorum.
( söylemsem olmaz iki dönem daha var:
- Çetin Üstat öncesi / sonrası
- Fox4um öncesi / sonrası - Burada bilgi ve tecrübeleri paylaşan herkese sonsuz teşekkürler. -
En özet hali ile foxpro DBF yada SQL Server ( yada her neyse) ne kullanırsan kullan. Mutlaka SQL komutlarını kullan. SQL sorgulamalarından en iyi verimi alabilmen için doğru Field larda doğru INDEX leri kullanman gerekiyor. VFP de buna Rushmore Optimization deniliyor. Bu konuyu araştırmanı ve üzerinde çalışmanı öneririm. İyi bir Rushmore index yapısı ve buna uygun bir sorgu ile yüzlerce megabaytlık verilerde saniyenin 1/100 - 1/10 oranlarında sonuçlar alman mümkün. İyi analiz edilmiş bir veri tabanı yapısı ve relation larıda unutmamak gerek.
set filter to foxpro dos ile rushmor opt. desteklemiyordu, vfp ile destekliyor. ancak ben set filter to olsun olmasın gridlerle ilgili çok problemler yaşadım. mesela bir cursor un tüm kayıtlarını sil, sonra tekrar ekle hiçbirini göstermesin gibi problemler.