Çözüldü Ado ile Textboxdaki yazılana göre sadece Rakamları bulma.

Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Merhaba.

Ekteki dosyada userformda listbox ve textboxlar var.

Örneğin Textbox1 e a yazarsam sadece a olanlar listeleniyor.a% olarak yazarsam a ile başlayanlar listeleniyor.

Benim öğrenmek istediğim Textbox1 e hangi karakter girersem % gibi sadece sayılar listelensin.
Kodlarda aşağıda.Önceden like yerine = kullanıyordum ve % işareti girsem bile içerenler vs... listelenmiyordu.
Tesadüfen yaptım onuda :)

Teşekkürler.

Rich (BB code):
Private Sub TextBox1_Change()
     Call Me.listele
End Sub

Private Sub TextBox2_Change()
     Call Me.listele
End Sub

Private Sub TextBox3_Change()
     Call Me.listele
End Sub

Private Sub TextBox4_Change()
     Call Me.listele
End Sub

Private Sub TextBox5_Change()
    Call Me.listele
End Sub

Private Sub TextBox6_Change()
     Call Me.listele
End Sub


    Sub listele()
    Dim s As String
    Me.ListBox1.Clear
    DoEvents
    Dim con As Object
Application.ScreenUpdating = False
    Set con = CreateObject("adodb.connection")
    con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;Imex=1"""
    
With Me
    s = "select f1,f2,f3,f4,Format(f5,'dd.mm.yyyy'),f6 from [Sayfa1$A2:F65000] where not isnull(f1)"
    If .TextBox1.Text <> "" Then s = s & " and f1 like '" & .TextBox1.Text & "'"
    If .TextBox2.Text <> "" Then s = s & " and f2 like '" & .TextBox2.Text & "'"
    If .TextBox3.Text <> "" Then s = s & " and f3 like '" & .TextBox3.Text & "'"
    If .TextBox4.Text <> "" Then s = s & " and f4 like '" & .TextBox4.Text & "'"
    If .TextBox5.Text <> "" Then s = s & " and  Format(f5,'dd.mm.yyyy') like '" & .TextBox5.Text & "'"
    If .TextBox6.Text <> "" Then s = s & " and f6 like '" & .TextBox6.Text & "'"

On Error Resume Next
     .ListBox1.ColumnCount = 120
     .ListBox1.Column = con.Execute(s).getrows
    
End With

Application.ScreenUpdating = True
    
    Set con = Nothing
    End Sub


Private Sub Sil_Click()

With Me
    .TextBox1 = ""
    .TextBox2 = ""
    .TextBox3 = ""
    .TextBox4 = ""
    .TextBox5 = ""
    .TextBox6 = ""
End With


End Sub


Private Sub Userform_Activate()
    Call Me.listele
End Sub

https://www.dropbox.com/s/v5dy6kyit1qcbss/ADO ile Textbox ve Listbox.xlsm?dl=0
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Yanlış anlamadıysam, içeriğinde en az bir tane sayı olanları filitrelemek istiyorsunuz.
PHP:
field like '%[0-9]%'
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Teşekkürler Zeki hocam çalıştı.
Aslında konu açmadan önce verdiğiniz yöntemi denemiştim heralde eksik yapmışım :)

 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

@ gibi bir özel karakter kullanarak işlemin kullanımını kolaylaştırmak mümkün sanırım.
TextBox1'e @ yazıldığında Sayın GÜRSOY'un belirttiği şekilde işlem gördürülebilir.
1551047771242.png
Rich (BB code):
...............
With Me
If .TextBox1.Text = "@" Then krtr = "%[0-9]%"
If .TextBox1.Text <> "@" Then krtr = TextBox1.Text
    s = "select f1,f2,f3,f4,Format(f5,'dd.mm.yyyy'),f6 from [Sayfa1$A2:F65000] where not isnull(f1)"
    If .TextBox1.Text <> "" Then s = s & " and f1 like '" & krtr & "'"
...............
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Merhaba.

@ gibi bir özel karakter kullanarak işlemin kullanımını kolaylaştırmak mümkün sanırım.
TextBox1'e @ yazıldığında Sayın GÜRSOY'un belirttiği şekilde işlem gördürülebilir.
Ekli dosyayı görüntüle 203406
Rich (BB code):
...............
With Me
If .TextBox1.Text = "@" Then krtr = "%[0-9]%"
If .TextBox1.Text <> "@" Then krtr = TextBox1.Text
    s = "select f1,f2,f3,f4,Format(f5,'dd.mm.yyyy'),f6 from [Sayfa1$A2:F65000] where not isnull(f1)"
    If .TextBox1.Text <> "" Then s = s & " and f1 like '" & krtr & "'"
...............
Teşekkürler Ömer hocam elinize sağlık süper düşünce.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Birde şöyle sorsam içerisinde sayı varsa yani aa4hh burda sayı var.
Bu tipler için nasıl olabilir?
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Benim yaptığım öneri ( @ gibi bir özel karakter ) belirttiğiniz gibi olan veriler için de işlem yapmıyor mu acaba?
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Benim yaptığım öneri ( @ gibi bir özel karakter ) belirttiğiniz gibi olan veriler için de işlem yapmıyor mu acaba?
Akşam tam olarak bir test edeyim.
Sizinki sadece sayı olanlar için geçerli sanıyordum.
Tefarruatlıca bir test edip geri dönüş yaparım.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Denemeden cevap yazdığım pek vaki değildir.
Belirttiğim yöntemle sayı/metin karışımında da sonuç alınıyor, bilginiz olsun.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
O halde sadece rakam olanları verdiğiniz yöntem bulmuyor mu?
Dün eksik test etmişim o halde.
Aa
Bb66
44
55
Cc
Yani verdiğiniz yöntem bu örnekte 44 ve 55 bulunmalıydı diye sanıyordum karışık olarak test etmeyi akıl edemeden önce :(
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
ADO konusunda pek bilgim yok ama şunu belirteyim, zaten nesne TexkBox, sonucu METİN,
mevcut kod filtreyi SAYI değil METİN gibi yaptığından SAYI İÇERİR anlamına geliyor sanırım.

Zaten ADO olmasa bile; TextBox kullanarak filtre uygulanmak istenildiğinde,
ya veri alanındaki sayıları METİN'e dönüştürerek, ya da TextBox'a yazılan RAKAMları SAYIya dönüştürerek filtreleme yapılmak drumunda.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Aslında normal vba like kodunda # işaretiyle oluyordu bildiğim.
Dün denemiş ve çözüm alamamıştım.
Belkide # bunun sql karşılığı başkadır bilemiyorum.
Akşam tam test edeceğim herşeyi.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
ADO konusunda pek bilgim yok ama şunu belirteyim, zaten nesne TexkBox, sonucu METİN,
mevcut kod filtreyi SAYI değil METİN gibi yaptığından SAYI İÇERİR anlamına geliyor sanırım.

Zaten ADO olmasa bile; TextBox kullanarak filtre uygulanmak istenildiğinde,
ya veri alanındaki sayıları METİN'e dönüştürerek, ya da TextBox'a yazılan RAKAMları SAYIya dönüştürerek filtreleme yapılmak drumunda.
[0-9]% Böyle yapınca sadece rakam olanlar listelendi.
Tekrardan teşekkürler herşey için siz ve Zeki hocama.

Bir şartta ben ekledim :)


Rich (BB code):
    If .TextBox1.Text = "@" Then
        krtr = "%[0-9]%"
    ElseIf .TextBox1.Text = "@@" Then
        krtr = "[0-9]%"
    Else
        krtr = TextBox1.Text
    End If
 
Son düzenleme:
Üst