Form Üzerinden Filtreleme Yöntemleri 2

Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
Liste Kutusundaki Verileri Dinamik Filtreleme

Not: Bu konudaki bilgiler ve resimler daha önceki bir paylaşımımdan alıntıdır..


Tekrar merhaba..

Önceki anlatımlarımızda verilerimizi bir ve daha fazla kritere göre filtreleme yöntemlerini işlemeye çalıştık.. Şimdi isterseniz filtreleme konusunu daha ileri seviyeye taşıyalım..

Liste kutusundaki verilerimizi dinamik bir şekilde filtreleyelim..

Listemizin olduğu formu bu şekilde tasarlayalım..:


Amacımız, üsteki metin kutusuna girdiğimiz anahtar harflere uyan kayıtları listelemek.. Mesela Se yazıp entere basınca ismi Se ile başlayan personeli listede görmek istiyoruz. Ya da sadece, ismi MEHMET olan personelleri listelemek istiyoruz..

Bu işlemi yapacak deyimi yazmak için listenin kaynağı sorguyu tasarım görünümünde açalım..

Önce Adı ve Soyadı alanlarını tek alanda birleştirelim..:

Kod:
[Ad] & " " & [Soyad]



Alan adını da İsim yapalım..



Şimdi bu alanın ölçüt kısmına şartımızı yazalım.. Diyelim ki:

Formdaki isim metin kutusuna yazdığım kelime ile başlayan isimleri süz..

Bu sorgunun anlayacağı şekilde yazacak olursak..:

Kod:
 Like [COLOR=#de8715][B][[/B][/COLOR][COLOR=#6ebb2b]Forms[/COLOR][COLOR=#de8715][B]][/B][/COLOR][COLOR=#808080]![/COLOR][COLOR=#de8715][B][[/B][/COLOR]FormA[COLOR=#de8715][B]][/B][/COLOR][COLOR=#808080]![/COLOR][COLOR=#de8715][B][[/B][/COLOR]Açılan Kutu2[COLOR=#de8715][B]][/B][/COLOR] [COLOR=#808080]&[/COLOR] [COLOR=#ff0000]"*"[/COLOR]
Burada gördüğünüz gibi Like (Buradaki Türkçe karşılığı, "benzer, benzeri, -miş gibi") işlecinden faydalandık.. Formdaki metin kutusuna yazdığımız değerin sonuna birleştirme operatörü (&) ile de * (yıldız) ile ilave ederek yazılan kelimeler ile başlayan tüm isimlerin sıralanmasını sağladık..:



Metin kutusunun güncelleştirme sonrasında olayına listeyi yeniden sorgulayan kodu yazmayı unutmayalım..:


Kod:
Me.Liste8.Requery



Şimdi ölçütümüze küçük bir ilave yaparak sadece metin kutusuna yazdığımız kelime ile başlayanları değil, bu kelimeyi içerisinde barındıran kayıtları da listeleyelim..

Bunu yapmak için ölçütümüzün sonuna ilave ettiğimiz * karakterini başına da yazalım..:


Kod:
Like "*" & [Forms]![FormA]![Açılan Kutu2] & "*"



Yukardaki resimde gördüğünüz ad olarak girdiğimiz kriterin verdiği sonuçlar şimdi daha da çoğaldı.. Sadece ad ile başlayan değil içerinde ad ifadesi geçen (FADİME BAL, ZÜLFİKAR YADİGAR vb.) tüm kayıtlar listelendi..:



Bir sonraki konuda, bu yöntemi bir ileri seviyeye taşımayı göreceğiz.. Şimdilik hoşçakalın..


Taruz..
 

Ekli dosyalar

Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
Liste Kutusundaki Verileri Dinamik ve Hızlı Bir Şekilde Filtreleme

Merhaba..​

Bir önceki çalışmamızda hatırlarsanız form üzerindeki bir metin kutusuna girdiğimiz kelimeyi Personel İsmi içinde barındıran kayıtları filtrelemiştik..​

Şimdi bunu bir ileri safhaya taşıyalım ve metin kutusuna harfleri yazdıktan sonra değilde yazdığımız sırada listedeki kayıtlar da filtrelensin..

Bu işlemin, daha önce ActiveX texbox nesnesi ile yapılmış örneklerini görmüş olabilirsiniz.. Bu OLE nesnesine girilen harfler değiştikçe(arttıkça) listedeki verilerde oluşan bu metine göre değişiyor ve yeniden süzülüyor.. (tabi kodlar ve deyimler ilave ederek)​

Biz, şimdi hiçbir OLE nesnesi kullanmadan ve de çok daha pratik şekilde bu işlemi yapacağız..

Önce Listemizin ve Metin Kutumuzun olduğu formumuzu tasarımda açalım..​

Form üzerine Araç Kutusundan yeni bir metin kutusu (metin5) koyalım.. Biçim özelliklerinden Görünür seçeneğini Hayır olarak değiştirelim..​

Sonra kayıt arama-filtreleme için kelimeler gireceğimiz metin kutusunun (metin1) Olay / Değiştiğinde





yordamına şu kodu yazalım..:​



Kod:
[COLOR=#0600ff]Dim[/COLOR] Bul [COLOR=#0600ff]As[/COLOR] [COLOR=#0600ff]String[/COLOR] [/COLOR]
[COLOR=#0600ff]Bul [COLOR=#008000]=[/COLOR] metin1.[COLOR=#0600ff]Text[/COLOR] [/COLOR]
[COLOR=#0600ff][COLOR=#0600ff]Me[/COLOR].Metin5.[COLOR=#0600ff]Value[/COLOR] [COLOR=#008000]=[/COLOR] Bul



Bu kod metin1 (arama-filtreleme için anahtar kelimeleri yazdığımız metin kutusunun adı) metin kutusuna yazdığımız değerleri daha önce gizlediğimiz Metin5 metin kutusuna yazdırıyor.. Harfler çoğaldıkça yani metin1 değiştikçe Metin5 de aynı değeri alıyor..​

Şimdi yazdığımız değeri taşıyan bu metin kutusunu listemizin sorgusuna ölçüt göstereceğiz..​

Sorgumuzu tasarımda açalım ve İsim alanının ölçütüne bir önceki bölümde işlediğimiz gibi Like işleci yardımı ile kriterimizi yazalım..​


Son olarakta her yeni harfi girdikten sonra listeyi tekrardan sorgulamak için yukarıdaki kodun sonuna​



Kod:
[COLOR=#0600ff]Me[/COLOR].Liste8.[COLOR=#0600ff]Requery[/COLOR]




ekleyelim..​

Şimdi tamamdır..

Artık arama kutusuna her harfi yazdığımız anda liste oluşan harf kümesine- kelimeye göre filtreleniyor..​

Durun! unuttum.
Yeni bir arama için kutuyu boşaltacak bir düzenek yapalım bir de..​

Hemen forma bir düğme koyalım ve Tıklandığında Olay Yordamına şu kodu yazalım..:​



Kod:
[COLOR=#0600ff]Me[/COLOR].metin1 [COLOR=#008000]=[/COLOR] [COLOR=#fb0000]""[/COLOR]
Kod:
[COLOR=#0600ff][COLOR=#0600ff]Me[/COLOR].Metin5 [COLOR=#008000]=[/COLOR] [COLOR=#fb0000]""[/COLOR] [/COLOR][COLOR=#0600ff][COLOR=#0600ff]Me[/COLOR].Liste8.[COLOR=#0600ff]Requery[/COLOR][/COLOR]




Şimdi tamamdır işte..






Bir sonraki bölümde olayı abartalım ve tek metin kutusundan birden fazla alandaki verileri filtreleyelim..
Hatta bunu filtrelemek istediğimiz alanı seçerek yapalım..

Görüşmek üzere..

Taruz..​
 

Ekli dosyalar

Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
Kayıtları Alana Göre Seçerek Dinamik ve Hızlı Bir Şekilde Filtreleme


Merhaba..


Hatırlarsanız, son bölümde arama kutusuna yazdığımız her harfin sonrasında listedeki İsim alanının, oluşan bu harf kümesine göre mütemadiyen filtrelenmesi işlemini yapmıştık..

Şimdi bu sistemi daha da geliştirelim ve bir tek alanı değil, birden fazla alanı seçim yaparak filtreleyelim..

Şimdi üzerinde listemizin ve onu filtrelememize yardımcı olacak metin kutumuzun olduğu formumuzu tasarım görünümünde açalım.. Sonrasında Araç Kutusundan Seçenek Grubu seçelim..


Bu seçenek grubu yardımı ile filtrelemek istediğimiz alanların seçimini yapacağız..

Evet, Araç Kutusundaki Seçenek Grubuna tıkladık ve Denetim Sihirbazının karşımıza çıkarttığı ilk ekrana filtrelemek istediğimiz alanları tanımlayacak isimleri yazalım..


Varsayılan seçimi, en sık arama yapacağımız alan olacağını düşündüğümüz İsim olarak belirleyelim..


Burada, seçtiğimiz alan hangisi ise onun karşılığında alacağı değeri belirliyoruz.. Bu değeri daha sonra sorguda şart olarak kullanacağız.. Sayı olması tercihtir..


Sonraki pencerede seçenek grubumuzun biçimini özelleştiriyoruz..


Bu pencerede de seçenek kutumuza isim veriyoruz.. Hızlı Arama diyelim



Son deyip formumuzun uygun bir yerine konuşlandıralım..


Şimdi Seçenek Grubumuz hazır. Bundan sonra yapmamız gereken 7. Bölümde yaptıklarımıza benzer..:

Forma bir tane daha metin kutusu(metin5) ekliyoruz ve Biçim / Görünür Özelliğini Hayır olarak değiştiriyoruz.. Hemen ardından arama yaptıracağımız metin kutusunun(metin1) Olay / Değiştiğinde yordamına, yazdığımız harfleri sorgumuza kriter olarak göstereceğimiz görünmez metin kutumuza aktaracak ve sonrasında listemizi yeniden sorgulayacak olan şu kodu yazıyoruz..:

Kod:
[COLOR=#0600ff]Dim[/COLOR] Bul [COLOR=#0600ff]As[/COLOR] [COLOR=#0600ff]String[/COLOR]
Bul [COLOR=#008000]=[/COLOR] metin1.[COLOR=#0600ff]Text[/COLOR]
[COLOR=#0600ff]Me[/COLOR].Metin5.[COLOR=#0600ff]Value[/COLOR] [COLOR=#008000]=[/COLOR] Bul
[COLOR=#0600ff]Me[/COLOR].Liste8.[COLOR=#0600ff]Requery[/COLOR]



Formumuz artık hazır sayılır.. Şimdi sırada listemize kaynak gösterdiğimiz sorgumuzu yapmak istediğimiz filtrelemeye göre hazırlamak var..



Sorgumuza şöyle bir kriter yazmalıyız; demeliyiz ki..:

Arama-filtreleme kutusuna yazdığım her kelime sonrasında seçenek grubunda İsim seçiliyse İsim alanında, Departman seçili ise Departman alanında, İl seçili ise İller alanında arama-filtreleme yap..

Peki bunu nasıl yapacağız? Elimizde bir tane arama kutusu var ama oluşan kriteri atayacağımız üç ayrı alan var. Seçeneğe göre kutuyu bir o alanın bir bu alanın ölçütüne koyamayacağımıza göre farklı bir yol uygulamamız gerek..

Seçenek grubunu oluştururken atadığımız değerler işte burada işe yarayacak..


Hemen sorgumuzdaki boş bir alana gidelim ve şu mantıkta bir deyim yazalım..

Bu alanda, seçenek grubunda İsim seçiliyse İsim, Departman seçili ise Departman, İl seçili ise İller alanının verilerini göster..

Bunu mantığı SQLe çevirmek için daha önceki bölümlerde olduğu gibi iç içe IIF fonksiyonunu da kullanabiliriz ama burada aynı amaçla kullanabileceğimiz ve kullanımı iç içe IIF kullanmaktan daha kolay olan Switch fonksiyonundan faydalanıp deyimi şu şekilde oluşturalım..

Kod:
[COLOR=#2fb4b4]Switch[/COLOR]
           [COLOR=#de8715][B]([/B][/COLOR]
             [Forms]![COLOR=#de8715][B][[/B][/COLOR]FormA]![COLOR=#de8715][B][[/B][/COLOR]secenek]=[COLOR=#000]1[/COLOR];[COLOR=#de8715][B][[/B][/COLOR]Ad[COLOR=#de8715][B]][/B][/COLOR] [COLOR=#808080]&[/COLOR] [COLOR=#ff0000]" "[/COLOR] [COLOR=#808080]&[/COLOR] [COLOR=#de8715][B][[/B][/COLOR]Soyad[COLOR=#de8715][B]][/B][/COLOR],
              [Forms]![COLOR=#de8715][B][[/B][/COLOR]FormA]![COLOR=#de8715][B][[/B][/COLOR]secenek]=[COLOR=#000]2[/COLOR];[COLOR=#de8715][B][[/B][/COLOR]Departman[COLOR=#de8715][B]][/B][/COLOR],
                [Forms]![COLOR=#de8715][B][[/B][/COLOR]FormA]![COLOR=#de8715][B][[/B][/COLOR]secenek]=[COLOR=#000]3[/COLOR];[COLOR=#de8715][B][[/B][/COLOR]Iller[COLOR=#de8715][B]][/B][/COLOR] [COLOR=#de8715][B])[/B][/COLOR]



Dikkatli bakınca seçenek grubunu oluştururken belirlediğimiz sayısal değerleri yukarıdaki küme içinde kullandığımızı göreceksiniz..

Artık formdaki seçeneğe göre filtre uygulayacağımız alanımızı oluşturmuştuk olduk.. Hemen Ölçüt bölümüne hazırlanışını önceki konularda işlediğimiz Like işleci ile oluşturduğumuz kriterimizi yazalım..



Sorgumuzu artık tüm şartlara göre hazırlamış olduk..

Şimdi formumuzu yeniden tasarım görünümünde açalım ve yeni bir arama için kutuyu boşaltacak bir düzenek yapalım..
Formun üstüne bir düğme koyalım ve Tıklandığında Olay Yordamına


Kod:
 [COLOR=#0600ff]Me[/COLOR].metin1 [COLOR=#008000]=[/COLOR] [COLOR=#fb0000]""[/COLOR]
[COLOR=#0600ff]Me[/COLOR].Metin5 [COLOR=#008000]=[/COLOR] [COLOR=#fb0000]""[/COLOR]
[COLOR=#0600ff]Me[/COLOR].Liste8.[COLOR=#0600ff]Requery[/COLOR]
yazalım..

Eveeet artık formumuz harika bir filtreleme özelliğine sahip oldu..




Sevgili access dostları; Form Üzerinden Filtreleme başlığı altında, bölüm bölüm, basit yöntemlerden daha kapsamlı yöntemlere doğru sorgu ile filtreleme yapma tekniklerini anlatmaya çalıştım.. Sürçü lisan ettiysem affola..

Bir sonraki çalışmada görüşmek üzere.. Saygı ve sevgiyle


Taruz..


Not: Bu konudaki bilgiler ve resimler daha önceki bir paylaşımımdan alıntıdır..
 

Ekli dosyalar

assenucler

Altın Üye
Katılım
19 Ağustos 2004
Mesajlar
3,521
Excel Vers. ve Dili
Ofis 365 TR 64 Windows 11 Home Single Language x64 TR
Altın Üyelik Bitiş Tarihi
29-05-2025
Sayın Taruz;

İyi akşamlar.

Bu güzel çalışma ve paylaşımınız dolayısıyla sizi kutlar..

Selam ve sevgilerimi sunarım...
 
Katılım
31 Ağustos 2005
Mesajlar
1,534
Excel Vers. ve Dili
Excel 2003 - Türkçe
Sayın Taruz hocam;

Gerçekten bir ders mahiyetindeki anlatım ve paylaşımlarınız bir harika.

Çok teşekkürler.Selamlar.
 
Katılım
10 Nisan 2008
Mesajlar
394
Excel Vers. ve Dili
EXCEL 2003 TÜRKÇE
sayın taruz bey öncelikle yapılan çalışmalarınız için teşekkürler

ben veri tabanı olarak acces kullanmaktayım formlarım ve çalışmalarım tümüyle exceldedir

bu yapmış olduğunuz sorgulama yı excelde formla yapmak istiyorum

acces veri tabanında sorgulamalarım mevcut accesde bu anlattıklarınızın hepsını yapabiliyorum

fakat userformdada yapmam için sorgulama ekranındaki
sorgu texti ni userformda nasıl kullanabilirim

yardımcı olursanız sevinirim saygılar
 
Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
sayın taruz bey öncelikle yapılan çalışmalarınız için teşekkürler

ben veri tabanı olarak acces kullanmaktayım formlarım ve çalışmalarım tümüyle exceldedir

bu yapmış olduğunuz sorgulama yı excelde formla yapmak istiyorum

acces veri tabanında sorgulamalarım mevcut accesde bu anlattıklarınızın hepsını yapabiliyorum

fakat userformdada yapmam için sorgulama ekranındaki
sorgu texti ni userformda nasıl kullanabilirim

yardımcı olursanız sevinirim saygılar
Merhaba sn. aydın3838..

Yukarıda anlattığım filtreleme şekillerini Excele adepte edilmesi konusunda çok bilgim yok..
Vt'yi excele bağlayıp filetreleme işlemlerinin Excelde yapılması gerek sanırım.. Access dosyasında yapılan, yukarada anlatılan türde bir filtrelemenin Excel dosyası ile etkileşimli çalışabileceğini sanmıyorum.. Yine de bu sorunuzu değerli Excel uzmanlarımıza yöneltirseniz daha net bir bilgi alabilirsiniz diye düşünüyorum..

Saygılar..
 
Katılım
3 Nisan 2007
Mesajlar
235
Excel Vers. ve Dili
2003 TR
Sayın Taruz gerçekten çok faydalı bilgiler. Teşekkür ederiz.

Arkadaşın sorusunda gelince;
Sorgularınız Formdaki nesnelerin Change olayına veya atadığınız bir butona bağlamanız ve şartlar kısmında (Where'den sonraki alana) '" & [nesnjenin adının buraya yazılması gerekir.] & "' belirtmeniz gerekir.

Ama VT Acces iken Excel ve Formlar ile VTabanına bilgi göndermek silmek güncellemek sizi yoracak ve sonuca ulaşmanızı geciktirecektir.
 
Katılım
30 Mayıs 2009
Mesajlar
15
Excel Vers. ve Dili
2003
çok teşekkürler dostum ışığınla aydınlandık ellerin dert görmesin.
 
Katılım
17 Şubat 2010
Mesajlar
56
Excel Vers. ve Dili
excel 2007 Türkçe
Sayın Taruz verdiğiniz tüm emekler için teşekkürler..
 
Üst