Soru Vba sql gruplama ve virgülle ayırma

Katılım
20 Mayıs 2016
Mesajlar
86
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
23-03-2024
Merhaba ekteki gibi bir excel dosyam mevcut,

sql kullanarak bir pivot tabloyu çekiyorum.

çektiğim hali sayfa1 de mevcut fakat çekerken gruplayarak çekiyorum grupladıktan sonrada grupladığım değerlerin bazılarının virgülle ayrılması mümkün müdür?

örnek sql kodumda sadece basit bir select sorgusu mevcut bunu gruplamak için nasıl bir yol izleyebilirim ?

Select çektiğim "ham hali" isimli sayfada birebir başlıklar(kolonlar) aynıdır.

Örnek dosyadaki A2:H10 arası ham hali dosyasıdır.

A13:H18 arası ise yapmak istediğim halidir.


Kod:
Sub enjeksiyon()


    Dim WB1 As String
    Dim strConnection As String
    Dim strQuery As String
    Dim objConnection As Object

    Dim RS As Object
    
    
    
    
    WB1 = ThisWorkbook.FullName
    
    strConnection = _
        "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "User ID=Admin;" & _
        "Data Source='" & ThisWorkbook.FullName & "';" & _
        "Mode=Read;" & _
        "Extended Properties=""Excel 12.0 Macro;"";"
    
     strQuery = "Select * " & _
     "FROM [" & WB1 & "].[HAM HALİ$A11:n5000] group by [Stok Kodu]"
    
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.CursorLocation = 3
    
    
    
    
    objConnection.Open strConnection
    Set RS = objConnection.Execute(strQuery)
    
        'A2 Başlıklarını Ekle
        'For i = 0 To RS.Fields.Count - 1
        '    Cells(1, i + 1) = RS(i).Name
        'Next
        'A2 Verilerini Ekle
        Sheets("de").Range("A2").CopyFromRecordset RS
        
        

End Sub
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,011
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Bu tarz bir işlemi bildiğim kadarıyla ADO ile yapamazsınız. Bunun yerine normal makro kodları kullanabilirsiniz. Fakat burada da gruplandırma kuralını belirlemek gerekir.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
ADO ile bir alternatif ekli dosyadadır...

.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,011
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Haluk bey ustalığını konuşturmuş.

Elinize sağlık..
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Estağfurullah Korhan Bey.

.
 
Katılım
20 Mayıs 2016
Mesajlar
86
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
23-03-2024
ADO ile bir alternatif ekli dosyadadır...

.

Hocam merhabalar, ellerinize sağlık süper yazmışsınız.

Ek sorularım olacak cevaplarsanız sevinirim.

Kod:
arrStok = Array("a", "b", "c", "d", "e")
burada ne kadar stok kodum varsa bu dizi içerisine tanımlamam mı lazım?


Kod:
If j <= 3 Then
                myArr = objRS.GetRows(, , j)
                Sheets("Rapor").Cells(i, j + 1) = Join(Application.Index(myArr, 0), ", ")
            Else
                Sheets("Rapor").Cells(i, j + 1) = objRS(j)
End If
burada j<=3 koşulunda 3'ten küçük eşit olan tekrara mı gruplandırıp virgülle ayırıyor.2 yapsam minimum 2 taneyi mi gruplandırıp virgülle ayıracak?


Vakit ayırdığınız için tekrar teşekkür ederim.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,398
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ek sorularım olacak cevaplarsanız sevinirim.

Kod:
arrStok = Array("a", "b", "c", "d", "e")
burada ne kadar stok kodum varsa bu dizi içerisine tanımlamam mı lazım?

Evet, aynen dediğiniz gibi......

Ancak, sonradan bir revizyon yapmıştım.... onu da aşağıdaki dosyada görebilirsiniz.

Bu revizyonda "Sayfa1" isimli sayfada "Stok Kodu" başlığı altındaki alandaki stok kodları otomatik olarak algılanıp diziye aktarılacak. Yani, sizin stok kodlarını VBA kodu içindeki diziye yazma ihtiyacınız kalmayacak.

Ekli dosyayı inceleyebilirsiniz....


.
 

Ekli dosyalar

Katılım
20 Mayıs 2016
Mesajlar
86
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
23-03-2024
Evet, aynen dediğiniz gibi......

Ancak, sonradan bir revizyon yapmıştım.... onu da aşağıdaki dosyada görebilirsiniz.

Bu revizyonda "Sayfa1" isimli sayfada "Stok Kodu" başlığı altındaki alandaki stok kodları otomatik olarak algılanıp diziye aktarılacak. Yani, sizin stok kodlarını VBA kodu içindeki diziye yazma ihtiyacınız kalmayacak.

Ekli dosyayı inceleyebilirsiniz....


.

Çok teşekkür ederim hocam. Büyüksünüz
 
Üst