Skip to main content

AccessTr.neT


DSum ve Sum İşlevi

tdsharun
tdsharun
18
26082

DSum ve Sum İşlevi

#1
DSUM ve SUM İşlevi
Kod:
DSum(ifade, etkialanı, [ölçütler])
Belirtilen bir kayıt kümesinde (etki alanı), bir değer kümesinin (ifade) toplamını hesaplamak için kullanılırlar.

Şimdi işlevimizin sözdiziminin ne anlama geldiğine bakalım:

İfade: Tabloda bir alanı, Sorguda bir alanı veya deyimi, VBA’da bir alanı veya değişkeni, Form, Rapor ve Makro’da da yine aynı şekilde bir tablo veya sorgu kullanılacağından bir alanı veya deyimi tanımlar.

Etki Alanı: İfadenin ait olduğu elamanı ifade eder. Daha net yazmak gerekirse Tablo veya Sorgu adını ifade eder. VBA’da bir değişken de tanımlanabilir. Sorguda tablonun bir alanı olabileceği gibi sanal alan (Deyim) de olabilir. Form ve Raporda ise Kayıt Kaynağı olan tablodaki veya sorgudaki alan adını ifade eder.

Ölçütler: En çetrefilli kısım da burasıdır. Burada birden fazla hususa dikkat etmek gerekir. Genelde en çok hata yapılan bölüm Ölçüt bölümüdür. Ölçüt, adından da anlaşılacağı üzere Dsum işlevinin uygulandığı veri aralığını sınırlandırmak için kullanılır.

Şimdi hepsini tek bir örnek üzerinde görelim. Daha sonra ayrıntılarına geçeceğiz. Formdaki bir Metin Kutusunun Denetim Kaynağı’nda Dsum işlevinin kullanımına bakalım:
Kod:
=DSum("[Nakliye]"; "TblSiparisler"; "[SevkedilenÜlke] = 'TR'")
Burada, [Nakliye] ifademiz, “TblSiparisler” etki alanımız, "[SevkedilenÜlke] = 'TR'" ise ölçütümüzdür.

Aşama aşama gidecek olursak:

=DSum([Nakliye]) ifadesi Nakliye alanındaki değerlerin toplamını görüntüler. Ancak bunu tek başına kullanabilmek mümkün değildir. Etki alanı kullanılmadan ifade tek başına kullanılamaz. Sadece Nakliye alanının değerleri toplamını almak için sorgu, rapor ve formda Sum([Nakliye]) şeklinde kullanmak gerekir. VBA'da ve bazı durumlarda sorguda (güncelleştirme sorgusu gibi) şu şekilde kullanmak gerekir:

=DSum([Nakliye]; “TblSiparisler”) ifadesi TblSiparisler tablosundaki Nakliye alanının değerlerinin toplamını görüntüler.

İfadenin tamamı ise bize; TblSiparisler tablosundaki Türkiye’ye sevk edilen siparişler için Nakliye alanındaki değerlerin toplamını verir.

Gördüğünüz gibi Ölçüt alanında Türkiye’yi seçtik ve sadece Türkiye’ye sevk edilen siparişler için Nakliye alanındaki değerlerin toplamını aldık.

Şimdi daha akılda kalıcı olması için ifademizi şu şekilde değiştirebiliriz:

Kod:
Dsum("Alan Adı","Tablo veya Sorgu Adı","İsterseniz Kriter")
Burda kısaca değinmek istediğim bir nokta var:
Yapılmaması Gereken Ölümcül Hatalar konumuzu inceleyin. İlgili konuda da göreceğiniz üzere, tablo ve alan adlarını yazarken uyulması gereken bazı kurallar var. Burda belirtilen kurallara uyulmadan, gelişi güzel yapılmış bir veritabanı ile çalışırken arada boşluklar olan alan adları kullanacaksanız, ilgili alan adlarını köşeli parantez [] içine alarak yazın. Örnek: Dsum ("[Alan Adı]", "Tablo Adı")
Tablo adında kullanmak zorunda değilsiniz, çünkü bir tane tablo adı kullanılıyor. Ancak birden fazla alan kullanılabiliyor. Bu sebeple alan adlarında köşeli parantez kullanmazsanız hata alırsınız.

Ölçüt alanında dikkat edilmesi gereken hususlar nelerdir?

1- Ölçütler’e eklenen her alanın aynı zamanda Etki Alanı içinde bir alan olması gerekir. Yani, tablo veya sorguda yer almayan bir alanı ölçütte kullanamazsınız. Kullanırsanız Dsum işlevi Null değer döndürür.
2- Ölçütte kullanılan alan bir metine eşitleniyorsa eşitlenen metin Tek Tırnak (') içine alınarak yazılır. Örnek: "[SevkedilenÜlke] = 'TR'"
3- Ölçütte kullanılan alan bir sayıya eşitleniyorsa işlevin kullanıldığı yere göre sayıyı yazma şekli değişiklik gösterir. Bazı durumlarda ölçütte kullanılan alan bir sayıya eşitlendiğinde sayı doğrudan yazılır.
Örnek: Güncelleştirme sorgusunda "[ÜrünNo] = "& [ÜrünNo] şeklinde kullanılırken VBA'da "[ÜrünNo]=" & "'" & Me![ÜrünNo] & "'" şeklinde belirtmek gerekmektedir. Doğrudan sayıya başvuru yapıldığı durumlarda ise Dsum ("Tutar";"Fatura";"FaturaNo=5") şeklinde kullanılır. Bununla ilgili ayrıntılı açıklama için Microsoft'un Bu makalesine bakabilirsiniz.
4- Ölçütte kullanılan alan bir tarihe eşitleniyorsa eşitlenen tarih Numara İşareti (#) veya ANSI-92'de tek tırnak (') işareti içine alınır. Örnek: "[SevkTarihi] > #1-1-95#" (Not: Access 2002 ve sonraki sürümler ANSI-92 uyumludur. Ancak tarih uyumluluğu bilgisayardan bilgisayara farklılık gösterebilir. Normal şartlarda kullanım şekli budur. Tarih formatı ile ilgili sorun yaşarsanız bilgisayarınızın tarih gösterim şekli ayarlarını inceleyin.)

DSum ve Sum arasındaki fark nedir?

Sum, bulunduğu yapı içinde (Form, Sorgu, Rapor) doğrudan bir alanın toplamını hesaplatmak için kullanılır. Bulunduğu yapı içinde doğrudan ifadeye başvuru yaparak ilgili ifadenin toplamını verir. Çünkü kullanıldığı form, sorgu veya raporda başvuracağı ifade, yani alan zaten mevcuttur. Bu sebeple Sum(ifade) şeklinde yazılarak ifadenin toplamı elde edilir. Örnek: Sum([Miktar])

DSum, sadece bulunduğu yapı ile sınırlı olmayan, bir etki alanında bulunan ifadesinin ve belirtilebilecek ölçütlere göre toplamını verir. Bu farklılık Dsum işlevini Sum işlevinden daha güçlü bir hale getirir. Çünkü Dsum , kullanılacağı yapıda belirtilen tablo ya da sorguyu kullanmak zorunda değildir. Ayrıca Dsum şartlı toplama işlevi olarak da bilinir.

DSum nerde, Sum nerde kullanılır?

Visual Basic for Application (VBA)'da Dsum ; SQL, Form ve Rapor ifadelerini yazarken hem Sum hem Dsum işlevi kullanılır.

Not: Bu işlevleri Veri Erişim Sayfalarında (Veri Erişim sayfası: Access'ten yayımlanan, bir veritabanına bağlantısı olan Web sayfası. Bir veri erişim sayfasında, veritabanında depolanan verileri görüntüleyebilir, verilere ekleme yapabilir, onları düzenleyebilir ve işleyebilirsiniz. Sayfa aynı zamanda Excel gibi başka kaynaklardan gelen verileri de kapsayabilir.) kullanamayacağınızı unutmayın. Buna ek olarak, Dsum işlevini Access projesinde (.adp) de kullanamazsınız.

Sözdizimi nasıl oluşturulur?

VBA’da:
Kod:
DSum(ifade, etkialanı, [ölçütler])
Bu kullanımda dikkat edilmesi gereken nokta, ifade ve etkialanının belirtilmek zorunda olduğudur. İfade tek başına kullanılamaz. Yani Dsum (ifade) şeklindeki bir kullanım hata verecektir. Bu sebeple tek bir alanın toplamları alınacak bile olsa Dsum (ifade) şeklinde değil, Dsum (ifade, etkialanı) şeklinde kullanılmalıdır.

SQL’da (Kullanıldığı duruma göre iki şekilde kullanılır):
Kod:
DSum(ifade, etkialanı, [ölçütler])
Kod:
Sum(ifade)
Bu kullanım farklılığı, sorguların ve yapılacak işlemin çeşitliliğinden kaynaklanmaktadır. Örneğin; bir güncelleştirme sorgusunun Güncelleştir bölümünde veya bir seçme sorgusunun bir deyim adına karşılık gelen hesaplamada Dsum (ifade, etkialanı, [ölçütler]) şeklinde kullanılırken, tek bir alanın hesaplanacağı durumlarda Sum(ifade) şeklinde kullanılır.

Form ve Raporda (Kullanıldığı duruma göre iki şekilde kullanılır): Eğer bir ölçüt belirtilecekse;
Kod:
=DSum(ifade; etkialanı; [ölçütler])
şeklinde kullanılır. Bir ölçüt belirtilmeksizin tek bir alanın toplam değeri alınacaksa
Kod:
=Sum(ifade)
şeklinde kullanılır.

Burada dikkat edilmesi gereken nokta, sadece VBA’da aralarındaki işaret Virgül’dür. Diğerlerinde Noktalı Virgül kullanılır. (Not: SQL’da iki farklı kullanım söz konusudur. Örneğin; bir güncelleştirme sorgusunda Güncelleştir alanına Dsum işlevi kullanılır ve aradaki işaret noktalı virgüldür. Ancak Sql kodlarına bakıldığında işaretin virgül olduğu görülür. SQL’da nerde Dsum nerde Sum kullanılacağını SQL’da Kullanımı anlatımındadır.)

ÖRNEKLER...

Kod:
Sum([BirimFiyat]*[Miktar])
BirimFiyat ve Miktar alanlarının çarpımının toplamını görüntüler. Burada dikkati çeken nokta Dsum işlevinin değil, Sum işlevinin kullanılmış olmasıdır. Kullanıldığı yapı hakkında bir fikir yürütmemiz gerekecek olursa BirimFiyat ve Miktar alanlarına sahip bir Tablo veya Sorgu olduğunu anlayabiliriz. Peki, kullanıldığı yer hakkında fikir yürütecek olsak? Yukarıda Sum işlevinin etki alanı belirtilmiş bir yapı içinde bulunması gerektiğini zaten söylemiştik. Buna göre bu Sum işlevinin kullanıldığı yapının bir sorgu veya form veya rapor olacağını söyleyebiliriz.

Kod:
DSum("[Miktar] * [BirimFiyat]", "Sipariş Ayrıntıları", "[ÜrünNo]=" &  [ÜrünNo])
Bir güncelleştirme sorgusunda Güncelleştir alanına yazılacak olursa Sipariş Ayrıntıları adlı tablodaki ÜrünNo değerleri, geçerli tablodaki ÜrünNo değerleri ile eşleşir; bu ifade Miktar adlı alandaki değerleri BirimFiyat adlı alandaki değerlerle çarparak satış toplamlarını güncelleştirir.

Kod:
DSum("[Nakliye]", "TblSiparisler", "[SevkedilenÜlke] = 'TR'")
Türkiye’ye sevk edilen siparişler için Nakliye alanındaki değerlerin toplamını görüntüler. Etki alanı TblSiparisler tablosudur.


DSum işlevini Vba kodunda kullanma
Aşağıdaki örneklerde, Dsum işlevinin Visual Basic for Applications (VBA) modülündeki kullanımı gösterilir. Aşağıdaki örnek, Ankara'ya gönderilen siparişlerin Ücret alanındaki değerleri toplar. Etki alanı bir TblSiparisler tablosudur. Ölçütler bağımsız değişkeni, sonuç kayıt kümesini SevkIli değeri Ankara’ya eşit olanlarla sınırlandırır.

Kod:
Dim curX As Currency
curX = DSum("[Nakliye]", "TblSiparisler", "[SevkIli] = 'Ankara'")

Sonraki örnek, iki ayrı ölçütü kullanarak toplamı hesaplar. Dizeler birleştirildiğinde dize hazır bilgisi tek tırnak işaretleri içinde ve tarih de sayı işaretleri içinde kalacak şekilde, dize ifadesine tek tırnak işaretlerinin (') ve sayı işaretlerinin (#) eklendiğine dikkat edin.

Kod:
Dim curX As Currency
curX = DSum("[Nakliye]", "TblSiparisler", "[SevkIli] = 'Ankara' AND [SevkTarihi] > #1-1-95#")


Yukarıda anlatılanlardan bazılarının yer aldığı örnek dosya ektedir.

Bu anlatım, tdsharun tarafından Accesstr.Net Ailesi için yapılmış olup "Kaynak Belirtilmeden" KULLANILAMAZ...

Kaynakça:
1- www.accesstr.net
2- http://office.microsoft.com/tr-tr/access...91055.aspx
3- http://office.microsoft.com/tr-tr/access...61055.aspx
.rar DSum_Islevi_Kullanimi_Ornegi_tdsharun.rar (Dosya Boyutu: 44,88 KB | İndirme Sayısı: 968)
NZ Fonksiyonunun (İşlevinin) Ayrıntılı Anlatımı İçin Tıklayın...
DSum ve Sum Fonksiyonunun (İşlevinin) Ayrıntılı Anlatımı İçin Tıklayın...
DLookup Fonksiyonunun (İşlevinin) Ayrıntılı Anlatımı İçin Tıklayın...
Son Düzenleme: 28/04/2009, 00:15, Düzenleyen: tdsharun.
Cevapla
#2
Paylaşım ve Bilgiler için teşekkürler hocam...
Kaplumbağa ya dikkat et...
Sadece  başını çıkartıp risk aldığında ilerleyebiliyor...
Cevapla
#3
teşekkürler tdsharun.
Cevapla
#4
paylaşımların için Teşekkürler hocam güzel anlatımlı ders olmuş
Cevapla
#5
Sayın tdsharun;

Hocam iyi akşamlar.

Yine her zaman olduğu gibi, hepimize yararlı olacak bir konuyu ayrıntılı işleyerek bizleri aydınlattınız.

Sağolun varolun... Sonsuz teşekkürler.

Selam ve sevgiler.
Cevapla
#6
Cidden cok isime yarayacak eline saglik ustad.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task