Sql Sorgusunda karakter sayısına göre filtreleme

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,044
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Kanak dosyada ilk sütununun satırlarında aşağıdaki gibi veriler bulunuyor

burada karakter sayısına göre filtreleme yaptırabilir miyiz?

Örnek: satırdaki veri içeriğinde 4'den fazla "0" olanları getir gibi....
aşağıda koyu olarak işaretlenen veriler....

@120001223001110
@120001223111112
@120001223102212
@100111223001012
@021001223111102
@122201223112210


Kod:
Set WB = ThisWorkbook

myPath = WB.Path

yol = myPath & "\Data.xlsx"

Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;Hdr=No"""

    sorgu = "Select F1 From [Rapor$] Where F1 ......"

    RS.Open sorgu, Con, 3, 1
teşekkürler,
iyi Çalışmalar.
 
Son düzenleme:

MusaPEKEL

Altın Üye
Katılım
29 Ağustos 2016
Mesajlar
65
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
16-01-2027
Merhaba,
Kanak dosyada ilk sütununun satırlarında aşağıdaki gibi veriler bulunuyor

burada karakter sayısına göre filtreleme yaptırabilir miyiz?

Örnek: satırdaki veri içeriğinde 4'den fazla "0" olanları getir gibi....
aşağıda koyu olarak işaretlenen veriler....

@120001223001110
@120001223111112
@120001223102212
@100111223001012
@021001223111102
@122201223112210


Kod:
Set WB = ThisWorkbook

myPath = WB.Path

yol = myPath & "\Data.xlsx"

Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;Hdr=No"""

    sorgu = "Select F1 From [Rapor$] Where F1 ......"

    RS.Open sorgu, Con, 3, 1
teşekkürler,
iyi Çalışmalar.
Kod:
Set WB = ThisWorkbook

myPath = WB.Path

yol = myPath & "\Data.xlsx"

Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;Hdr=No"""

sorgu = "SELECT F1 FROM [Rapor$] WHERE LEN(F1) - LEN(REPLACE(F1, '0', '')) > 4"

RS.Open sorgu, Con, 3, 1
 
Katılım
2 Temmuz 2014
Mesajlar
145
Excel Vers. ve Dili
2021 Türkçe, 64bit
alternatif olarak
sorgu = "Select F1 From [sayfa1$] Where F1 like '%0%0%0%0%0%'"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,044
Excel Vers. ve Dili
Office 2013 İngilizce
Kod:
Set WB = ThisWorkbook

myPath = WB.Path

yol = myPath & "\Data.xlsx"

Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;Hdr=No"""

sorgu = "SELECT F1 FROM [Rapor$] WHERE LEN(F1) - LEN(REPLACE(F1, '0', '')) > 4"

RS.Open sorgu, Con, 3, 1
Musa Hocam çok teşekkürler,
kayıtları hücreye aldıktan sonra;
WST.Range("A1").CopyFromRecordset RS
satırında ekli görseldeki hata mesajını veriyor.
aslında hücrelere satırları kopyalıyor, ondan sonra hata mesajını veriyor.
bunun sebebi ne olabilir?

iyi çalışmalar.
 

Ekli dosyalar

MusaPEKEL

Altın Üye
Katılım
29 Ağustos 2016
Mesajlar
65
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
16-01-2027
Musa Hocam çok teşekkürler,
kayıtları hücreye aldıktan sonra;
WST.Range("A1").CopyFromRecordset RS
satırında ekli görseldeki hata mesajını veriyor.
aslında hücrelere satırları kopyalıyor, ondan sonra hata mesajını veriyor.
bunun sebebi ne olabilir?

iyi çalışmalar.
Kod:
Sub CopyDataToWorksheet()
    Dim WB As Workbook
    Dim Con As Object
    Dim RS As Object
    Dim WST As Worksheet
    Dim myPath As String
    Dim yol As String
    Dim sorgu As String
    Dim rowCounter As Integer
    
    ' Set reference to the workbook and worksheet
    Set WB = ThisWorkbook
    Set WST = ActiveSheet
    
    ' Set the path to the Excel file
    myPath = WB.Path
    yol = myPath & "\Data.xlsx"
    
    ' Create and open the connection
    Set Con = CreateObject("ADODB.Connection")
    Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
             yol & ";Extended Properties=""Excel 12.0;HDR=No"""
    
    ' Create and execute the SQL query
    sorgu = "SELECT F1 FROM [Rapor$] WHERE LEN(F1) - LEN(REPLACE(F1, '0', '')) > 4"
    Set RS = CreateObject("ADODB.Recordset")
    RS.Open sorgu, Con, 3, 1
    
    ' Clear the target range before copying data
    WST.Range("A1").Clear
    
    ' Copy data row by row
    rowCounter = 1
    Do Until RS.EOF
        WST.Cells(rowCounter, 1).Value = RS.Fields(0).Value
        rowCounter = rowCounter + 1
        RS.MoveNext
    Loop
    
    ' Close the recordset and connection
    RS.Close
    Con.Close
End Sub
denermisiniz.
 
Üst