• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

ADO - Select cümle sorunu

  • Konbuyu başlatan Konbuyu başlatan ftekin
  • Başlangıç tarihi Başlangıç tarihi
Katılım
12 Mart 2006
Mesajlar
124
Excel Vers. ve Dili
MS Office 2003 Türkçe
Arkadaşlar merhaba,

Aşağıdaki KOD:2 bölümünde yapmak istediğim işlemi for-next döngüsü ile yapıyorum. Ancak çok yavaş çalışıyor. Bunu ADO ile yapmak istiyorum.

KOD:1 - Sorunsuz çalışıyor.
'Bu şekilde yazdığımda çalışanın, girilen 2 tarih aralığındaki ürün türleri bazında adetlerini listeletiyorum.
Set rs = CreateObject("adodb.recordset")
EVNText = "SELECT * FROM [data$] "
EVNText = EVNText + " WHERE"
EVNText = EVNText + " CLng(CDate(islem_Tarih))>=" & CLng(CDate(Sheets("Rapor").Cells(1, 3))) & " AND CLng(CDate(islem_Tarih))<=" & CLng(CDate(Sheets("Rapor").Cells(2, 3)))
rs.Open EVNText, con, 1, 1


KOD:2 - "Öğe, istenen ad veya sıra sayısı ile ilişkili derleme içinde bulunamıyor" hatasını alıyorum.
'Bu şekilde yaptığımda çalışanın girilen 2 tarih aralığındaki ürün türlerinin toplam adetlerini listeletemiyorum. Yani kişi her tarih için görüntülenmeyip 1 kere görüntülenecek, ve ürünlerinde toplamı görüntülenecek.

Set rs = CreateObject("adodb.recordset")
EVNText = "SELECT SUM(Ceket), SUM(Pantolon), SUM(Gomlek), SUM(Hirka), SUM(Kravat) FROM [data$] "
EVNText = EVNText + " WHERE"
EVNText = EVNText + " CLng(CDate(islem_Tarih))>=" & CLng(CDate(Sheets("Rapor").Cells(1, 3))) & " AND CLng(CDate(islem_Tarih))<=" & CLng(CDate(Sheets("Rapor").Cells(2, 3)))
EVNText = EVNText + " GROUP BY Adi_Soyadi "
rs.Open EVNText, con, 1, 1


Umarım anlatabilmişimdir.
 

Ekli dosyalar

Son düzenleme:
Merhaba,

"GROUP BY Adi_Soyadi" dediğinize göre,

SELECT Adi_Soyadi, SUM(.... FROM [data$]

olarak deneyin.
 
Dediğiniz şekilde yaptığımda aşağıdaki bölümde "v11 = rs("Ceket").Value" olan satırda hata alıyorum.

If rs.RecordCount > 0 Then

rs.MoveFirst

Do While Not rs.EOF

If rs("Adi_Soyadi").Value <> "TOPLAM" And rs("Adi_Soyadi").Value <> "DİĞER" Then

v11 = rs("Ceket").Value
....................


End If

rs.MoveNext
Loop
 
Çünkü o isimde seçili alan yok. Bir matematik fonksiyonu kullandığınızda ona takma isim vermeniz zorunludur. Vermezseniz otomatik atandığından ne olduğunu bilemezsiniz.

Buna göre;

SUM(Ceket) AS [Ceket Toplamı]

şeklinde bir isim atamanız gerekir.

Bunu döndürürken de,

v11 = rs("Ceket Toplamı")

kullanırsınız.

Kolay gelsin.
 
Evet dediğiniz takma isim olayından dolayıymış, halloldu. Teşekkürler.
 
Geri
Üst