ADO-SQL distinct ve sum birlikte kullanımı
#1
Arkadalşlar.
Aşağıdaki dosyada yazdığım sql kod ile A sütununda benzersiz kayıtların B sütununda toplamlarını alıyorum.(EXCEL-2003)
Yalnız bu işlemi 2 tane sql cümlesi ile yapıyorum.
Bir sql cümlesi ile ayni işlemi yapabilirmiyim?
Teşekkür ederim.


Visual Basic
  1. Sub benzersiz_ado_sql_59()
  2. Dim conn As Object, rs As Object
  3. Set conn = CreateObject("AdoDb.Connection")
  4. Set rs = CreateObject("AdoDb.Recordset")
  5. Application.ScreenUpdating = False
  6. Range("C2:C65536").Clear
  7. conn.Open ("Provider=microsoft.jet.oledb.4.0;data source=" & _
  8. ThisWorkbook.FullName & ";extended properties=""Excel 8.0;hdr=yes""")
  9. Set rs = conn.Execute("Select distinct(baslik) from[Sayfa1$];")
  10. Range("C2").CopyFromRecordset rs
  11. Set rs = conn.Execute("Select sum(sayi) from[Sayfa1$] group by baslik;")
  12. Range("D2").CopyFromRecordset rs
  13. Set rs = Nothing
  14. conn.Close
  15. Set conn = Nothing
  16. Application.ScreenUpdating = True
  17. MsgBox "Benzersizler C sütununa çıkarıldı" & vbLf _
  18. & "evrengizlen@hotmail.com", vbOKOnly + vbInformation
  19. End Sub




Eklenti Dosyaları
.rar   Benzersiz_ado-sql_59.rar (Boyut: 9,41 KB / İndirilme: 9)



  Alıntı
Bu mesajı beğenenler:
#2
Merhaba..

Bu şekilde kullanabilirsiniz..:

Visual Basic
  1. .....
  2. ...............
  3. .................
  4. conn.Open ("Provider=microsoft.jet.oledb.4.0;data source=" & _
  5. ThisWorkbook.FullName & ";extended properties=""Excel 8.0;hdr=yes""")
  6. Set rs = conn.Execute("Select baslik, sum(sayi)from[Sayfa1$] group by baslik")
  7. Range("C2").CopyFromRecordset rs
  8. Set rs = Nothing
  9. conn.Close
  10. ..........
  11. ...............
  12. ......................





  Alıntı
Bu mesajı beğenenler:
#3
(15-08-2010, 14:22)Taruz demiş ki: Merhaba..

Bu şekilde kullanabilirsiniz..:

Visual Basic
  1. .....
  2. ...............
  3. .................
  4. conn.Open ("Provider=microsoft.jet.oledb.4.0;data source=" & _
  5. ThisWorkbook.FullName & ";extended properties=""Excel 8.0;hdr=yes""")
  6. Set rs = conn.Execute("Select baslik, sum(sayi)from[Sayfa1$] group by baslik")
  7. Range("C2").CopyFromRecordset rs
  8. Set rs = Nothing
  9. conn.Close
  10. ..........
  11. ...............
  12. ......................


Tarruz bey teşekkür ederim.
Birde renk sütunu ekledim.
Renk sütununda ayni koşullar içinde alabilirmiyiz.
Dosyayı ekledim.


Eklenti Dosyaları
.rar   Benzersiz_ado-sql_59.rar (Boyut: 10,26 KB / İndirilme: 8)



  Alıntı
Bu mesajı beğenenler:
#4
Koşul nedir?

Başlık gruplandıralacak, sayı toplanacak, renk ne olacak? Örneğin hasan hem beyaz hem de bej renge sahip.. Mantık nedir?



  Alıntı
Bu mesajı beğenenler:
#5
(15-08-2010, 14:45)Taruz demiş ki: Koşul nedir?

Başlık gruplandıralacak, sayı toplanacak, renk ne olacak? Örneğin hasan hem beyaz hem de bej renge sahip.. Mantık nedir?
Sadece önceki 2 koşul sağlanacak.Renk alanı ne ise o olacak.Yani onun için sorgu yok.sadece diğerleri ile beraber listelenecek.
Teşekkür ederim.



  Alıntı
Bu mesajı beğenenler:
#6
İyi de renk alanı, başlık alanındaki tekrar eden kayıtlara göre farklı.. Renk alanını gruplandırsak ilk alandaki grup bozulur..:

Visual Basic
  1. Set rs = conn.Execute("Select baslik, sum(sayi),renk from[Sayfa1$] group by baslik, renk;")



Demek istediğim buydu.. Ama derseniz ki "benzersiz ilk kaydın karşılığı rengi alsın" o zaman bu olur..:

Visual Basic
  1. Set rs = conn.Execute("Select baslik, sum(sayi),first(renk) from[Sayfa1$] group by baslik;")





  Alıntı
Bu mesajı beğenenler:


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi