DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Ben de aynı mantıkla böyle yapmayı denemiş ama hata alınca vazgeçip, mecburen biraz daha uzun yola gitmiştim..... Herhalde bir syntax hatası falan bir şey yapmışımdır.....Haluk Beyin müsadesiyle iki sorgusunun birleştirilmiş hali ve PQ çözümü
Sub getReport2()
' Veysel Emre 14/03/2024
' Alternatif kod
Dim objConn As Object, RS As Object, SQLdata As String, strSQL As String, strArgs As String
Sheets("Report").Range("A2:F" & Rows.Count).ClearContents
Set objConn = CreateObject("ADODB.Connection")
strArgs = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; Readonly=False; DBQ=" & ThisWorkbook.FullName
objConn.Open strArgs
SQLdata = " Select [STOKKODU] AS SK, [MALINCINSI] AS MC, [URUN KATEGORI] AS UK, [URUN GRUPLARI] AS UG, Sum([NETCIKIS]) AS NC, 2023 As Year" & _
" From [2023$] Where [STOKKODU] Is Not Null " & _
" Group By [STOKKODU], [MALINCINSI], [URUN KATEGORI], [URUN GRUPLARI] " & _
" Union All " & _
" Select [STOKKODU] AS SK, [MALINCINSI] AS MC, [URUN KATEGORI] AS UK, [URUN GRUPLARI] AS UG, Sum([NETCIKIS]) AS NC, 2024 As Year" & _
" From [2024$] Where [STOKKODU] Is Not Null" & _
" Group By [STOKKODU], [MALINCINSI], [URUN KATEGORI], [URUN GRUPLARI]"
strSQL = " Select SK, MC, UK, UG, Sum([NC2023]), Sum([NC2024]) From " & _
" ( " & _
" Select SK, MC, UK, UG, IIF(Year= 2023, NC) AS [NC2023], IIF(Year= 2024, NC) AS [NC2024] From " & _
" ( " & _
SQLdata & _
" )" & _
" )" & _
" Group By SK, MC, UK, UG"
Set RS = objConn.Execute(strSQL)
Sheets("Report").Range("A2").CopyFromRecordset RS
objConn.Close
Set objConn = Nothing
End Sub
@Haluk Bey emeğe gösterdiğiniz saygı için teşekkür ederim. Fakat burda asıl gayreti gösteren sizsiniz. Burada önemli olan 2 tablonun birleştirme fikri. Benim de daha önce forumda yaptığım örnek var fakat aklıma gelir miydi bilmiyorum. O yöntemle ilk çözümü sunmuşsunuz. Pivot fikri benim aklıma hiç gelmezdi. Bence en orjinal çözüm o fakat ağır çalışan bir yöntem.Alternatif icin Veysel Beyin eline saglik, ben sadece araciyim....
Sub getData3()
Sheets("Report").Range("A2:F" & Rows.Count).ClearContents
With CreateObject("ADODB.Connection")
.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; Readonly=False; DBQ=" & ThisWorkbook.FullName
Sheets("Report").Range("A2").CopyFromRecordset .Execute( _
" SELECT SK, MC, UK, UG, SUM(NC2023) AS NC23, SUM(NC2024) AS NC24 FROM " & _
" ( SELECT STOKKODU AS SK, MALINCINSI AS MC, [URUN KATEGORI] AS UK, [URUN GRUPLARI] AS UG, NETCIKIS AS NC2023, 0 AS NC2024" & _
" FROM [2023$] WHERE STOKKODU IS NOT NULL " & _
" UNION ALL " & _
" SELECT STOKKODU AS SK, MALINCINSI AS MC, [URUN KATEGORI] AS UK, [URUN GRUPLARI] AS UG, 0 AS NC2023, NETCIKIS AS NC2024" & _
" FROM [2024$] WHERE STOKKODU IS NOT NULL " & _
" ) GROUP BY SK, MC, UK, UG ")
.Close
End With
End Sub
Bence yanılıyorsunuz... Kaynak var mı?..... Zaten SQL de gelecekte pek kullanılmayacak gibi. Sadece eskiye bağımlılıktan kullanılıyor. Bu konuda geliştirme yapan yok.....
Benim düşüncem bu. Halen 50 yıl öncesinin txt dosyalarının kullanıldığı bir dünyada SQL de kalkmaz ama ağırlığı gittikçe azalacak.Bence yanılıyorsunuz... Kaynak var mı?
Her database sisteminin kendi dil takımına ihtiyacı vardır ve olmak zorundadır. Bunları low-level native code gibi düşünün. Bir de basit kullanıcılar için, native code ile zor gelen işleri no-code veya high-level kodlama kullanan Power Query vs var. Sanırım kastettiğiniz bu...
Aslında bu kadar çok yazmayacaktım ama, SQL sever biri olarak, cümlelerinizi düzeltme gereği duydum.
.