Skip to main content

AccessTr.neT


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

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

Çözüldü #1
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
.rar Ado Pivot özet tablo.rar (Dosya Boyutu: 20,16 KB | İndirme Sayısı: 7)
Cevapla
#2
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

Cevapla
#3
recordsette sadece veriler aktarılır başlık aktarılmaz diye biliyorum
Cevapla
#4
(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üzeltmeLoliğer konudada otomatik başlık eklenmiyormuş Img-grin
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.
Cevapla
#5
Yeni önerimden vaz geçtim, bayağı çetrefilli bir işmiş.
Son Düzenleme: 12/11/2020, 21:02, Düzenleyen: alicimri.
Cevapla
#6
Sağol ali abey.
Sanırım power query ile yapılmış kod olayı.
Resimdeki gibi şekillde kalıyor.

[Resim: do.php?img=10592]
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da