AccessTr.neT
Listviewden Excele Aktarımda Sumıf Kullanımı - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Excel (https://accesstr.net/forum-microsoft-excel.html)
+--- Forum: Excel Cevaplanmış Soruları (https://accesstr.net/forum-excel-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Listviewden Excele Aktarımda Sumıf Kullanımı (/konu-listviewden-excele-aktarimda-sumif-kullanimi.html)

Sayfalar: 1 2 3 4 5 6 7 8 9 10


RE: Listviewden Excele Aktarımda Sumıf Kullanımı - berduş - 29/12/2020

Bu da ADO yöntemi referanslardan ADO xx eklenmeli
Set ADO_RS = New ADODB.Recordset
Set ADO_CN = New ADODB.Connection

Sql = "SELECT deneme.[Sipariş No], Sum(deneme.Miktar) AS ToplaMiktar, Sum(deneme.Tutar) AS ToplaTutar " & _
"FROM deneme " & _
"GROUP BY deneme.[Sipariş No] " & _
"ORDER BY deneme.[Sipariş No];"

ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.Path & "\deneme.accdb"
ADO_CN.Open
ADO_RS.Open Sql, ADO_CN, 3, 1
'
' Eğer Hiç Kayıt Yoksa
If ADO_RS.RecordCount = 0 Then
MsgBox "Kayıt Bulunamadı.", vbCritical, "Veri Yok"
GoTo son
End If
ADO_RS.MoveLast
ADO_RS.MoveFirst

Sheets("sayfa1").Range("A5").CopyFromRecordset ADO_RS 'excelde

son:
ADO_RS.Close
ADO_CN.Close
Set ADO_RS = Nothing
Set ADO_CN = Nothing



RE: Listviewden Excele Aktarımda Sumıf Kullanımı - kanakan52 - 29/12/2020

@berduş hocam tekrar merhaba,

Deneyip bilgi vereceğim. Bir kez daha teşekkürlerimi sunuyorum..

Saygılar, sevgilerimi iletiyorum Img-grin


RE: Listviewden Excele Aktarımda Sumıf Kullanımı - feraz - 29/12/2020

(29/12/2020, 08:52)berduş yazdı: Bu da ADO yöntemi referanslardan ADO xx eklenmeli
Set ADO_RS = New ADODB.Recordset
Set ADO_CN = New ADODB.Connection

Sql = "SELECT deneme.[Sipariş No], Sum(deneme.Miktar) AS ToplaMiktar, Sum(deneme.Tutar) AS ToplaTutar " & _
      "FROM deneme " & _
      "GROUP BY deneme.[Sipariş No] " & _
      "ORDER BY deneme.[Sipariş No];"

ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.Path & "\deneme.accdb"
ADO_CN.Open
ADO_RS.Open Sql, ADO_CN, 3, 1
'
'  Eğer Hiç Kayıt Yoksa
If ADO_RS.RecordCount = 0 Then
    MsgBox "Kayıt Bulunamadı.", vbCritical, "Veri Yok"
    GoTo son
End If
ADO_RS.MoveLast
ADO_RS.MoveFirst

Sheets("sayfa1").Range("A5").CopyFromRecordset ADO_RS 'excelde

son:
ADO_RS.Close
ADO_CN.Close
Set ADO_RS = Nothing
Set ADO_CN = Nothing
Berduş hocam bende Ado ile denemiştim sizin kodlarının benzeriyle aynısıyla.
O kod ve sizin kod sanıyorum 6 sütunuda getirmiyor benimki getirmemişti çünkü.
Select içine tüm sütun başlıklarını yazıp group by ilede gelmeyip hata veriyordu.
6 sütunluk nasıl gelecek abeyimizin dosyasındaki gibi sonuç olarak?
Yani lazım olursa ileride diye sordum.


RE: Listviewden Excele Aktarımda Sumıf Kullanımı - berduş - 29/12/2020

(29/12/2020, 11:25)feraz yazdı: O kod ve sizin kod sanıyorum 6 sütunuda getirmiyor benimki getirmemişti çünkü.
Select içine tüm sütun başlıklarını yazıp group by ilede gelmeyip hata veriyordu.
6 sütunluk nasıl gelecek abeyimizin dosyasındaki gibi sonuç olarak?
yapmak istediğiniz şeyi tam olarak anlamadım @feraz bey 6 sütunu group by ile getirsek bile toplamı aldıramayız çünkü en basitinden Kimlik alanları farklı olduğu için hayıt sayısı kadar satır getirir. sipariş noya göre tek satırlık veri getirmek için toplam alınacak alanlarda Sum diğer alanlarda ise first, last kullanılabilir
SELECT deneme.[Sipariş No], First(deneme.Kimlik) AS İlkKimlik, First(deneme.[Firma Adı]) AS [İlkFirma Adı], First(deneme.[Stok Adı]) AS [İlkStok Adı], Sum(deneme.Miktar) AS ToplaMiktar, Sum(deneme.Tutar) AS ToplaTutar
FROM deneme
GROUP BY deneme.[Sipariş No]
ORDER BY deneme.[Sipariş No], First(deneme.Kimlik), First(deneme.[Firma Adı]), First(deneme.[Stok Adı]);



RE: Listviewden Excele Aktarımda Sumıf Kullanımı - feraz - 29/12/2020

(29/12/2020, 11:53)berduş yazdı:
(29/12/2020, 11:25)feraz yazdı: O kod ve sizin kod sanıyorum 6 sütunuda getirmiyor benimki getirmemişti çünkü.
Select içine tüm sütun başlıklarını yazıp group by ilede gelmeyip hata veriyordu.
6 sütunluk nasıl gelecek abeyimizin dosyasındaki gibi sonuç olarak?
yapmak istediğiniz şeyi tam olarak anlamadım @feraz bey 6 sütunu group by ile getirsek bile toplamı aldıramayız çünkü en basitinden Kimlik alanları farklı olduğu için hayıt sayısı kadar satır getirir. sipariş noya göre tek satırlık veri getirmek için toplam alınacak alanlarda Sum diğer alanlarda ise first, last kullanılabilir
SELECT deneme.[Sipariş No], First(deneme.Kimlik) AS İlkKimlik, First(deneme.[Firma Adı]) AS [İlkFirma Adı], First(deneme.[Stok Adı]) AS [İlkStok Adı], Sum(deneme.Miktar) AS ToplaMiktar, Sum(deneme.Tutar) AS ToplaTutar
FROM deneme
GROUP BY deneme.[Sipariş No]
ORDER BY deneme.[Sipariş No], First(deneme.Kimlik), First(deneme.[Firma Adı]), First(deneme.[Stok Adı]);
Elinize sağlık Berduş hocam.Sql sorgularını fazla kullanmadığım için teferrualıca bilmiyordum öğrenmiş olduk.
Devamlı Access ile uğraşsam aslında en iyisi Sql sorgu kullanmak lakin Excelde durum karışık.


RE: Listviewden Excele Aktarımda Sumıf Kullanımı - feraz - 29/12/2020

Berdduş hocam en son şunuda sorayım.
Firs olmasına rağmen resimdeki sarıya boyadığım 3 yerine 1,ghı yerine abc ve b379 yerine 123 neden gelmedi
Kodu attaki gibi geliştirdim verdiğiniz.Zamanım olmadığı için tam uğraşamadım.

[Resim: do.php?img=10653]


Sub test()
Set ADO_RS = New ADODB.Recordset
Set ADO_CN = New ADODB.Connection

Sql = "SELECT  First(Kimlik) AS ÝlkKimlik,[Sipariþ No],First([Firma Adý]) AS ilkFirmaAd," & _
      "First([Stok Adý]) AS ilkStokAd, Sum(Miktar) AS ToplaMiktar, Sum(Tutar) AS ToplaTutar " & _
      "FROM deneme " & _
      "GROUP BY [Sipariþ No] " & _
      "ORDER BY [Sipariþ No];"

ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.Path & "\deneme.accdb"
ADO_CN.Open
ADO_RS.Open Sql, ADO_CN, 3, 1
'
'   Eðer Hiç Kayýt Yoksa
If ADO_RS.RecordCount = 0 Then
    MsgBox "Kayýt Bulunamadý.", vbCritical, "Veri Yok"
    GoTo son
End If
ADO_RS.MoveLast
ADO_RS.MoveFirst
Sheets("Sheet1").Range("A10:F" & Rows.Count).Clear
Sheets("Sheet1").Range("A10").CopyFromRecordset ADO_RS 'excelde

son:
ADO_RS.Close
ADO_CN.Close
Set ADO_RS = Nothing
Set ADO_CN = Nothing
End Sub