SQL Sorguda aradaki değerlerin toplamı

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Aşağıdaki kod ile sütunda 2. karakter ile 3. karakterin toplamı 8 olan değerleri filtrelemek isterken;

yalnız bu işlemi yaparken eksik yapıyor, sadece değerlerden biri 0 diğeri 8 olanları getirmekte;

25373 değeri de (5+3)= 8 olmasına karşın bunu getirmiyor?
Sebebi ne olabilir?
desteğiniz için teşekkürler,
iyi Akşamlar.

Kod:
Sub sqlDataList()
Dim Con As Object
Dim RS As Object
Dim SH As Worksheet

Set SH = Sheets("DB")
SH.Cells.ClearContents

FileName = ThisWorkbook.FullName
    
Set Con = CreateObject("ADODB.CONNECTION")

    With Con
        .Open "Provider=Microsoft.Ace.Oledb.12.0;" & _
         "Extended Properties='Excel 12.0;" & _
         "HDR=NO;';Data Source=" & FileName
    End With

Set RS = VBA.CreateObject("ADODB.Recordset")
' ' - - - - - - - - - - - - - -
        SQL = "SELECT [F1] FROM [Data$A2:B] " & _
               "WHERE mid([F1],2,1)+mid([F1],3,1)=8"

              RS.Open SQL, Con, 1, 3
   
        If Not RS.EOF Then
          SH.Range("A2").CopyFromRecordset RS
        End If

   RS.Close
' ' - - - - - - - - - - - - - -
  SQL = ""
  Set RS = Nothing
  Set SH = Nothing
  
End Sub
 

Ekli dosyalar

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Deneme şansım yok ama aşağıdaki gibi deneyin.
SQL = "SELECT [F1] FROM [Data$A2:B] " & _
"WHERE (mid([F1],2,1)+mid([F1],3,1))=8"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Deneme şansım yok ama aşağıdaki gibi deneyin.
SQL = "SELECT [F1] FROM [Data$A2:B] " & _
"WHERE (mid([F1],2,1)+mid([F1],3,1))=8"
Veysel Hocam değişen bir durum olmadı
aradaki + işaretini sanki algılamıyor.
2. ve 3. karakteri 0 ve 8 olanları getiriyor.
teşekkürler,
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,191
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu olabilir mi..

C++:
strSQL = "SELECT F1 FROM [Data$A2:B] WHERE (VAL(MID(F1,2,1))+VAL(MID(F1,3,1))) = 8"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Bu olabilir mi..

C++:
strSQL = "SELECT F1 FROM [Data$A2:B] WHERE (VAL(MID(F1,2,1))+VAL(MID(F1,3,1))) = 8"
Korhan Hocam selamlar,
Bu konuda şöyle bir problem oldu, bazı satırlarda veri bulunmayınca hata verdi:
Aşağıdaki şekilde de denedim fakat bir çözüm olmadı,
burada boş olan verileri dikkate almayacak şekilde bir çözüm üretilebilir mi?
tekrar teşekkürler,
iyi Çalışmalar.

Kod:
strSQL = "SELECT F1 FROM [Data$A2:B] WHERE LEN(F1)>2 AND (VAL(MID(F1,2,1))+VAL(MID(F1,3,1))) = 8 "
 

Ekli dosyalar

Katılım
2 Temmuz 2014
Mesajlar
135
Excel Vers. ve Dili
2021 Türkçe, 64bit
VAL(MID(F1,2,1)) gibi yerleri asahidak gibi duzenleyip dener misiniz
VAL(MID(F1,2,1) & "")
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Kod:
SQL = "SELECT * FROM (SELECT [F1] AS SAYI FROM [Data$A2:B]) WHERE (VAL(MID(SAYI,2,1))+VAL(MID(SAYI,3,1)))=8"
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Kod:
        SQL = "Select XData From (Select IIF(Len(F1)>0,IIF(Val(Mid(F1,2,1))+Val(Mid(F1,3,1))=8,F1,'')) As XData From [Data$A2:A]) Where Len(XData)>0 "
.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Başka bir alternatif;

Kod:
        SQL = "Select F1 From [Data$A2:A] Where F1 <> 'Null' And Val(Mid(F1,2,1)) + Val(Mid(F1,3,1))= 8"
.
 
Üst