Kriter ile listeleme

1 2
21/04/2010, 12:57

accessman

iyi günler
eklediğim örnekte
liste0 dan çoklu seçim ile liste2 süzme yapıyorum
ama biraz farklı
amacım liste0 da bulunan kelimelerden liste2 de olanların süzülmesi
görünşte farklı bir şey yok gibi

şöyle anlatayım
mesela liste0 da seçtiğimiz kelime
KAT
liste2 de içinde KAT kelimesi geçenler listelenecek

BODRUM KAT PANOSU (TB)
C BLOK 1. KAT DAĞITIM TABLOSU (TC.1)
B BLOK ZEMİN KAT ANA DAĞITIM TABLOSU (TBA)

seçtiğimiz kelimeler
KAT
BLOK
olduğunda liste2 de süzülenler

C BLOK 1. KAT DAĞITIM TABLOSU (TC.1)
B BLOK ZEMİN KAT ANA DAĞITIM TABLOSU (TBA)

seçtğimiz kelimeler
KAT
BLOK
ANA
olduğunda liste2 de sadece süzülen

B BLOK ZEMİN KAT ANA DAĞITIM TABLOSU (TBA)

olmalı.yani her üç kelimeninde içinde geçtikleri süzülecek

bunun için tip (K) oluşturup bu tipe string tanımladım (kel)
liste0 da seçtiğim elemanın Liste0.Column(1, v) değerini

K(v).kel = Liste0.Column(1, v)
şeklinde atayıp

metin6 da kriter olarak birleştirdimseçtiğim kelimeler arasına konması içinde kr2 tanımlayıp

kr2 = " & ""*"" and ""*"" & "

bunu like ile kullanmaya çalıştım
ama bir yerlerde hem mantık hemde teknik açıdan muhtemelen hata yapıyorum

nasıl yapmalıyım

amacım çoklu seçimle liste ikide seçtiğim her kelimenin birlikte bulunduğu elemanların listelenmesi
yardımlarınız için teşekkürler

bu bir çok arkadaşımızın işine yarayabilir diye düşünüyorum
21/04/2010, 13:32

Seruz

Kodunuzu aşağıdaki şekilde değiştirin.

Kod:
Private Sub Liste0_afterUpdate()
Dim v
     Me.Kriter = ""
    'EĞER LİSTE BOŞSA
    If Me.Liste0.ItemsSelected.Count = 0 Then
        Me.Liste2.RowSource = ""
        MsgBox "LÜTFEN LİSTEDEN SEÇİM YAPIN", vbExclamation, "DİKKAT"
        Exit Sub
    Else '
        'LİSTE KUTUSUNDAN KRİTER EKLEME
        For Each v In Liste0.ItemsSelected
            Id = Liste0.Column(1, v)
            If Me.Kriter = "" Then
                Me.Kriter = " Where Yer Like '*" & Liste0.Column(1, v) & "*'"
            Else
                Me.Kriter = Kriter & " And Yer Like '*" & Liste0.Column(1, v) & "*'"
            End If
        Next v
        Liste2.RowSource = "Select Yerkod, Yer From Yer" & Me.Kriter
    End If
End Sub
21/04/2010, 13:43

assenucler

Sayın Seruz;

Hocam merhaba.. Bizlere de örnek olacak bir dosya..

Liste kutusunu ve kriter alanını boşaltmak için ne yapmalıyım?

İlgi ve yanıtınız için önceden teşekkür ederim.

Sevgi ve saygılar..
21/04/2010, 13:56

Seruz

Soldaki kelimelerden herhangi bir şey seçmezseniz, liste kutusu otomatik olarak boşalacaktır.
Kriter'i silmek için
Kodda
Me.Kriter = ""
ifadesini en başa almak gerekiyor.
Üstteki yazdığım kodu tekrar düzenledim. Onu kopyalayabilirsiniz.
21/04/2010, 14:02

accessman

sn.seruz
tek kelimeyle süper tam da istediğim gibi
ben kodlar arasında kopyala yapıştır ile boğuşurken siz çok güzel ve kısa bir şekilde hallettiniz

birde
şöyle bir şey olsa
liste0 tıklandığında ilk tıkladığımız ile ilgili seçilebilecek elemanlar kalsa
nasıl mı şöyle ki
ilk seçtiğimiz
ANA
liste2 de mesela
DATA
kelimesi hiç bir arada kullanılmamış ozaman bu artık gözükmesin
böylece her seçimden sonra liste giderek kısalacak ve ancak birlikte seçebileceklerimiz kalacak

teşekkürler
Where Yer Like '*ANA*' And Yer Like '*KUVVET*'
ile
(((yer.yer) Like "*" & [m] & "*" And (yer.yer) Like "*" & [mm] & "*"))
arasında
nasıl benzerlik ve fark var teşekkürler
21/04/2010, 14:49

Seruz

(21/04/2010, 14:02)accessman yazdı: birde şöyle bir şey olsa
liste0 tıklandığında ilk tıkladığımız ile ilgili seçilebilecek elemanlar kalsa
nasıl mı şöyle ki, ilk seçtiğimiz ANA liste2 de mesela DATA
kelimesi hiç bir arada kullanılmamış ozaman bu artık gözükmesin
böylece her seçimden sonra liste giderek kısalacak ve ancak birlikte seçebileceklerimiz kalacak

Yapılmasına yapılır da, farklı bir kodlama ile listedeki tüm satırların içindeki kelimeleri tek tek tespit edip, tablodaki alanlarla karşılaştırmak ve gruplamak falan lazım.
Satırdaki boşluklara göre kelimeler ayrılabilse daha kolay olurdu ama sizin örnekte farklı kelimeler var. Mesela kelime listesinde PANO adlı kelime var ama satırlarda PANOSU olarak geçiyor.
Bu nedenle her harfi tek tek ele alıp, oluşan kelimeleri tabloyla karşılaştırmak falan lazım, yapılır tabii ki ama bu uzun iş, maalesef o kadar boş vaktim yok.
(21/04/2010, 14:02)accessman yazdı: Where Yer Like '*ANA*' And Yer Like '*KUVVET*'
ile
(((yer.yer) Like "*" & [m] & "*" And (yer.yer) Like "*" & [mm] & "*"))
arasında nasıl benzerlik ve fark var teşekkürler
Genel olarak benziyor ama Metin ifadelerinde tırnaklar çok önemli, onlar farklı.
1 2