Ado Pivot Tablo Sütun Başlık Problem

1 2
11/11/2020, 00:51

feraz

Merhaba.
Sayfa1 deki sütun başlıklar sonuç sayfasına gelmiyor.
Ado ilepivot olayını ilk defa kullandığım için tecrübem yok.
Çözüm nedir?
Saygılar.

Private Sub CommandButton1_Click()
    Dim Con As Object, Rs As Object, Sorgu As String
    Application.ScreenUpdating = False
    With ThisWorkbook.Sheets("Sonuc")
        .Cells.ClearContents
        son = .Range("A" & Rows.Count).End(3).Row
        Set Con = CreateObject("ADODB.Connection")
        Set Rs = CreateObject("ADODB.RecordSet")
        Con.Open "Provider=Microsoft.Ace.Oledb.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;Hdr=Yes;Imex=1"""
        Sorgu = " TRANSFORM sum([Sayi]) AS 'Sayi' SELECT [Baslik1],[Baslik2],[Baslik3] FROM [Sayfa1$A3:I65536] " & _
                "GROUP BY [Baslik1],[Baslik2],[Baslik3] PIVOT year([TARÝH])"
   
        Rs.Open Sorgu, Con, 3, 1
        .Range("A2").CopyFromRecordset Rs
        Rs.Close: Con.Close
        Sorgu = vbNullString: Set Rs = Nothing: Set Con = Nothing
    End With
    Application.ScreenUpdating = True

End Sub
11/11/2020, 10:16

alicimri

Aşağıdaki gibi bir dçngü ile alabilirsiniz.
Kod:
Private Sub CommandButton1_Click()
    Dim Con As Object, Rs As Object, Sorgu As String
    Application.ScreenUpdating = False
    With ThisWorkbook.Sheets("Sonuc")
        .Cells.ClearContents
        son = .Range("A" & Rows.Count).End(3).Row
        Set Con = CreateObject("ADODB.Connection")
        Set Rs = CreateObject("ADODB.RecordSet")
        Con.Open "Provider=Microsoft.Ace.Oledb.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;Hdr=Yes;Imex=1"""
        Sorgu = " TRANSFORM sum([Sayi]) AS 'Sayi' SELECT [Baslik1],[Baslik2],[Baslik3] FROM [Sayfa1$A3:I65536] " & _
                "GROUP BY [Baslik1],[Baslik2],[Baslik3] PIVOT year([TARİH])"
   
        Rs.Open Sorgu, Con, 3, 1
        For i = 0 To Rs.fields.Count - 1
        .Cells(1, i + 1).Value = Rs.fields(i).Name
        Next
        .Range("A2").CopyFromRecordset Rs
        Rs.Close: Con.Close
        Sorgu = vbNullString: Set Rs = Nothing: Set Con = Nothing
    End With
    Application.ScreenUpdating = True

End Sub
11/11/2020, 10:28

berduş

recordsette sadece veriler aktarılır başlık aktarılmaz diye biliyorum
11/11/2020, 12:14

feraz

(11/11/2020, 10:16)alicimri yazdı: For i = 0 To Rs.fields.Count - 1       
.Cells(1, i + 1).Value = Rs.fields(i).Name
 Next
Elinize sağlık abey.Bu döngüyü aslında biliyordum lakin dosyadaki gibi tarih için 2019,2020,2021 diye yan yana sütunlara getireceğini tahmin etmemiştim.Zayen bu pivotu başka konuda siz yazmıştınız(Açık-Kapalı olan konu) ben değiştirdim verileri.
Orda Böyle bir döngü ile başlık almadan başlıkları otomatik eklemişti.
Tekrar danke abey.

Düzeltme Neyse sağolunun,konu çözüldü.Sql serverde video izlemiştim oda kod yapısı farklıydı.
Son soru olarak pivot için sadece Transform ilemi kullanılıyor zira Sql videolarında göremedim.

(11/11/2020, 10:28)berduş yazdı: recordsette sadece veriler aktarılır başlık aktarılmaz diye biliyorum
Sağol abey.Pivot olayı olduğu için aktarma olrur diye düşünmüştüm.
12/11/2020, 09:43

alicimri

Yeni önerimden vaz geçtim, bayağı çetrefilli bir işmiş.
12/11/2020, 12:21

feraz

Sağol ali abey.
Sanırım power query ile yapılmış kod olayı.
Resimdeki gibi şekillde kalıyor.


1 2