Skip to main content

AccessTr.neT


Listviewden Excele Aktarımda Sumıf Kullanımı

Listviewden Excele Aktarımda Sumıf Kullanımı

#7
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
Cevapla
#8
@berduş hocam tekrar merhaba,

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

Saygılar, sevgilerimi iletiyorum Img-grin
Cevapla
#9
(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.
Cevapla
#10
(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ı]);
Cevapla
#11
(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.
Cevapla
#12
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
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da