• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Sql sorgu boş hücre sorunu

  • Konbuyu başlatan Konbuyu başlatan mukoli
  • Başlangıç tarihi Başlangıç tarihi
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
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
 
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
 
Örnek dosya eklemeniz gerekir..... yoksa doğru bir çözüm sadece tahmine dayalı olur.

.
 
Ö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

N1 hücresine eğer birşey yazılacaksa, ne yazılacak ?

.
 
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

.
 
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
 
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 "
 
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:
Haluk hocam çok iyi çalıştı çok teşekkür ederim elinize sağlık
 
@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
 
Sayı alanında arama yapınca hata veriyor.başka şekilde olabiliyorsa alternatiflere açıgım teşekkür ederim
 
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.
 
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

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.
 
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
 
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.
 
Geri
Üst