Sql sorgu boş hücre sorunu

Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Merhaba hocalarım alttaki sorgudaki hücre boşşa bütün veriyi çekmesi için ne yapılması gerekiyor

Kod:
 My_Veri_1 = Range("N1").Value
My_Veri_2 = Range("M1").Value

Select SIRA,TC,ISIM,AY,SUM([MIKTAR]),SUM([FIYAT]) From [Sayfa2$] Where ISIM = '" & My_Veri_1 & " ' and AY =  '" & My_Veri_2 & " '  Group By SIRA,TC,ISIM,AY
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,056
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi deneyin.

Kod:
My_Veri_1 = Range("N1").Value
My_Veri_2 = Range("M1").Value

Select SIRA,TC,ISIM,AY,SUM([MIKTAR]),SUM([FIYAT]) From [Sayfa2$] Where ISIM like  '" & My_Veri_1 & " %' and AY like  '" & My_Veri_2 & " %'  Group By SIRA,TC,ISIM,AY
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Merhaba levent hocam deniyorum teşekkür ederim
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
malesef hocam hiç veri getirmiyor bu sefer
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Örnek dosya eklemeniz gerekir..... yoksa doğru bir çözüm sadece tahmine dayalı olur.

.
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Örnek dosyayı ekledim yapmak istediğim veri çektiğim hücreler boş oldugunda verileri çekmesi M1 hücresi dolu ama n1 hücresi boşşa m1 deki veriyi baz alarak hepsini çekmesi yada ikisde boşşa bütün veriyi çekmesi
 

Ekli dosyalar

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
N1 hücresine eğer birşey yazılacaksa, ne yazılacak ?

.
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Ay sütunundaki [F sutunu] bilgiler hocam
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
C#:
Sub Rapor()
    Dim My_File As String, Process_Time As Double
    Dim My_Connection As Object, My_Recordset As Object
    Dim My_Veri_1 As String, My_Veri_2 As String
    Dim strSQL As String
    
    Process_Time = Timer
    
    Application.ScreenUpdating = False
    
    'Range("J7:N" & Rows.Count).Clear
    Range("P2:U" & Rows.Count).Clear
    
    Set My_Connection = VBA.CreateObject("AdoDb.Connection")
    
    My_File = ThisWorkbook.FullName
  
    My_Veri_1 = Range("M1").Value
    My_Veri_2 = Range("N1").Value
    
    My_Connection.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    My_File & ";Extended Properties=""Excel 12.0;Hdr=Yes"""
    
    If My_Veri_2 = "" Then
        strSQL = "Select ISIM From [Sayfa2$] Where ISIM = '" & My_Veri_1 & " '"
    ElseIf My_Veri_2 <> "" Then
        strSQL = "Select ISIM From [Sayfa2$] Where ISIM = '" & My_Veri_1 & "' And [AY]='" & My_Veri_2 & " '"
    End If
    
    Set My_Recordset = My_Connection.Execute(strSQL)
          
    Range("P2").CopyFromRecordset My_Recordset
    Range("P2").CurrentRegion.Borders.LineStyle = 1
    
    If My_Recordset.State <> 0 Then My_Recordset.Close
    If My_Connection.State <> 0 Then My_Connection.Close
    
    Set My_Connection = Nothing
    Set My_Recordset = Nothing
    
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır." & vbCrLf & vbCrLf & _
           "İşlem süresi ; " & Format(Timer - Process_Time, "0.00") & " Saniye"
End Sub
.
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Haluk hocam 2 hücrede boşşa bütün verileri getirmesi için ne yapılması gerekiyor. mesela N1 dolu m1 boş ozamanda getirmiyor
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,597
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Aşağıdaki örnek ile yapabilirsiniz.

Kod:
If ComboBox1.Value = "" Then
sk = "ŞK is not null "
Else
sk = "ŞK = '" & ComboBox1.Value & "'"
End If

If TextBox1.Value = "" Then
trh1 = " and tarih is not null "
Else
trh1 = " and tarih >= " & " " & CLng(CDate(TextBox1.Value)) & ""
End If

sorgu = "select * from data where " & sk & trh1 order by sk,tarih "
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
C#:
    If My_Veri_1 = "" And My_Veri_2 = "" Then
        strSQL = "Select * From [Sayfa2$A1:F] Where ISIM Is Not Null"
    ElseIf My_Veri_1 <> "" And My_Veri_2 = "" Then
        strSQL = "Select * From [Sayfa2$A1:F] Where ISIM = '" & My_Veri_1 & "'"
    ElseIf My_Veri_1 = "" And My_Veri_2 <> "" Then
        strSQL = "Select * From [Sayfa2$A1:F] Where [AY]='" & My_Veri_2 & " '"
    ElseIf My_Veri_1 <> "" And My_Veri_2 <> "" Then
        strSQL = "Select * From [Sayfa2$A1:F] Where ISIM = '" & My_Veri_1 & "' And [AY]='" & My_Veri_2 & "'"
    End If

.
 
Son düzenleme:
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Haluk hocam çok iyi çalıştı çok teşekkür ederim elinize sağlık
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
@Haluk hocam burda tc kısmındada arama yapması için nasıl kullanabiliriz ben ekledim ama hata veriyor
Kod:
Sub Rapor()
    Dim My_File As String, Process_Time As Double
    Dim My_Connection As Object, My_Recordset As Object
    Dim My_Veri_1 As String, My_Veri_2 As String
    Dim strSQL As String
    
    Process_Time = Timer
    
    Application.ScreenUpdating = False
    
    'Range("J7:N" & Rows.Count).Clear
    Range("P2:U" & Rows.Count).Clear
    
    Set My_Connection = VBA.CreateObject("AdoDb.Connection")
    
    My_File = ThisWorkbook.FullName
 
    My_Veri_1 = Range("M1").Value
    My_Veri_2 = Range("N1").Value
    
    My_Connection.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    My_File & ";Extended Properties=""Excel 12.0;Hdr=Yes"""
    
    
 If My_Veri_1 = "" And My_Veri_2 = "" Then
        strSQL = "Select * From [Sayfa2$A1:F] Where ISIM Is Not Null"
    ElseIf My_Veri_1 <> "" And My_Veri_2 = "" Then
        strSQL = "Select * From [Sayfa2$A1:F] Where ISIM = '" & My_Veri_1 & "'"
    ElseIf My_Veri_1 = "" And My_Veri_2 <> "" Then
        strSQL = "Select * From [Sayfa2$A1:F] Where [AY]='" & My_Veri_2 & " '"
    ElseIf My_Veri_1 <> "" And My_Veri_2 <> "" Then
        strSQL = "Select * From [Sayfa2$A1:F] Where ISIM = '" & My_Veri_1 & "' And [AY]='" & My_Veri_2 & "'"
    End If

    
    Set My_Recordset = My_Connection.Execute(strSQL)
          
    Range("P2").CopyFromRecordset My_Recordset
    Range("P2").CurrentRegion.Borders.LineStyle = 1
    
    If My_Recordset.State <> 0 Then My_Recordset.Close
    If My_Connection.State <> 0 Then My_Connection.Close
    
    Set My_Connection = Nothing
    Set My_Recordset = Nothing
    
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır." & vbCrLf & vbCrLf & _
           "İşlem süresi ; " & Format(Timer - Process_Time, "0.00") & " Saniye"
End Sub
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Sayı alanında arama yapınca hata veriyor.başka şekilde olabiliyorsa alternatiflere açıgım teşekkür ederim
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
TC Kimlik No alanı sayısal bir alansa sorgu satırında direkt yazılır. Yani başına ve sonuna tek tırnak eklenmez. METİNSEL ifadelerde ise tek tırnak eklenir. Bu kurala uyarak sorgu satırınızı düzenlemeniz gerekir.
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Korhan hocam dediğiniz gibi yapınca evet hata vermedi çalıştı. Fakat şöyle sıkıntı oldu sadece tc kısmında arama yapınca sıkıntı yok
fakat tc ve ay kısmıyla arama yapınca hata veriyor dosya ektedir.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bir önceki mesajımda bahsettiğim duruma dikkat ederek sorgu satırını düzenlerseniz çalışmaması için bir sebep yoktur.

Kriter bölümünde METİNSEL alanlar tek tırnak içinde yazılmalıdır. SAYISAL alanlar tek tırnak kullanmadan yazılmaldır.
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
MErhaba eklediğim dosyayı açıp bakarsanız dediğiniz gibi yaptım açıklamamdada zaten çalıştıgını ifade ettim . Sadece 2 kriter uygularken hata veriyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tablonuzda TC NO sayısal bir alan olarak görünüyor.

Ama siz üst satırlarda "Dim" ile değişken tanımlarken bu alanı METİN (String) olarak belirtmişsiniz. Bunlara dikkat etmeniz gerekir.

My_Veri_3 As String

Bold bölümü aşağıdaki gibi değiştirip deneyiniz.

My_Veri_3 As Long

Tabi bu düzeltmeyi yaptıktan sonra sorgu satırını oluştururken kullandığınız IF sorgularınıda revize etmeniz gerekecektir.
 
Üst