Yazdır

Ms Access 2010 Örnekleri : Liste Kutusunda Bir Sütundaki Değerlerin Toplamını Almak

on .

Microsoft Access 2010 derslerine devam ediyoruz. Ms Access ile en çok kullanılan kontrollerden biriside "Liste Kutusu"dur. Liste kutusu genellikle müşterileri, ürünleri vb. topluca görüntülemek için kullanılır. Şimdi Access 2010 derslerinde liste kutusunun bir sütunundaki değerlerin toplamını aldıralım.

Öncelikli olarak tablomuzu tasarlayalım. Örnek tablomuzun alanlarını 3 tane olacak kadar çok az tutuyoruz. Alanlarımız ve alan türü şu şekilde olacak : musteri_no ( Otomatik Sayı ), musteri_adi ( Metin - 30 karakter ) ve siparis_adedi ( Sayı - Tam Sayı ).

Microsoft Access 2010 Dersleri Tablo Yapısı

Tablomuza isim olarak "musteriler" verildi. musteriler isimli tablomuza örnek veriler girdik:

Microsoft Access 2010 Dersleri Örnek Veri Girişi

Tablomuz ile işimiz bitti. Şimdi boş bir form ekliyoruz ve tasarım modunda üç adet kontrol ekliyoruz. Buton ( btn_toplam_al ), metin kutusu ( txt_toplam ), liste kutusu ( list_siparisler ). Resimdeki gibi yerleşimini yapıyoruz:

Microsoft Access 2010 Dersleri Form Tasarım Görünümü Halinde

Liste kutumuzu eklerken Access Form Sihirbazı bize bilgileri nereden almak istediğimizi sorduğu zaman tablo/sorgu seçeneğinden musteriler tablosunun tüm alanlarını seçiyoruz. Yukarıdaki resimde formumuz tasarım modundayken Form Görünümü moduna geçtiğimizde aşağıdaki gibi bir sonuç elde ederiz:

Microsoft Access 2010 Dersleri Form Görünümü Halindeyken

Şimdi artık kodlarımızı yazmak için tekrar Form Görünümünden Tasarım Moduna geçelim ve btn_toplam_al isimli butonumuza çift tıklayarak Özellikler penceresine geçelim. Olay sekmesin altında yer alan Tıklatıldığında olayının sağındaki üç nokta butonuna Microsoft Access Kod Oluşturucusu Butonu (Üç Nokta) tıklayarak Oluşturucu Seç penceresinden Kod Oluşturucusunu seçip Tamam butonuna tıklayalım.

Microsoft Access Oluşturucu Seç Penceresi

Karşımıza VBA Editör penceresinde btn_toplam_al butonunun Click olayı kodları gelecektir.

Microsoft Access 2010 Dersleri Vba Editörü Buton Tıklama Olayı

Butona tıklatıldığında liste kutusunun 2. sütünunda yer alan sipariş adetlerinin hepsinin toplanarak txt_toplam metin kutusunun içerisine yazılmasını istiyoruz. Öncelikli olarak programımızda lazım olan değişkenlerin isimleri ve tiplerini tanımlıyoruz. Bize lazım olacak olan iki adet değişkenin birisi For - Next döngüsünde sayaç olacak olan i isimli değişken. Bu i değişkeni aynı zamanda bize satır numarasını vermiş olacak. İkinci değişkenimiz ise her satırdaki sipariş adetlerini toplayıp atayacağımız toplam isimli değişken.

i değişkeninin tipini Integer olarak verdim yani yaklaşık olarak 32 bin adet satırı toplatabilirsiniz. Eğer daha fazla kayıt olacaksa daha geniş aralığa sahip değişken türlerinden birisi verilebilir. toplam isimli değişkenimizin türü ise Long olarak verdik farklı olsun diye ancak Integer verebilirdik. Tabi böyle bir durumda satırlardaki sipariş adetlerinin toplamı 32 binden fazla olursa program hata verecektir. Burada vermiş olduğumuz değişken tipi örnek olarak verildiği için çok önemli değil ancak siz programınızdaki verilerin aralığını iyi hesap etmeniz gerekmektedir. Gereğinden büyük değişken tipi gereksiz alan ve hafıza harcanmasına sebep olabileceği gibi performansa olumsuz etkide bulunur. Eğer gereğinden küçük aralıkta değişken kullanacak olursanızda bu aralığın üst sınırını geçen değerlerde programınız hata verip kapanacaktır. Bu elbette çok daha ciddi bir sorun olabilir. Değişkenlerimizi tanımladıktan sonraki durum şu şekilde olacaktır:

Microsoft Access 2010 Dersleri Değişkenleri Tanımladık

Ms Access 2010 Liste Kutusunda Kullanılacak Değişkenlerin Tanımlanması
1
2
3
4
5
6
7
8
9
Private Sub btn_toplam_al_Click()
Dim i As Integer
Dim toplam As Long
 
 
 
 
 
End Sub

Yukarıda bahsi geçtiği gibi iki adet değişken ( i ve toplam ) tanımlıyoruz. Liste kutusunun içindeki satırlarda yer alan sipariş adetlerini tek tek toplamak için For Next döngüsü kullanacağız.

Döngünün başlangıç değeri i = 0 olarak tanımlı çünkü 1 diyerek başlayacak olsak ilk satırdaki değeri almayacaktır. Döngünün bitiş noktası olarak list_siparisler içindeki satır adedi olması lazım. Liste kutusunda yer alan satır sayısını almak için gerekli komut şu şekilde:

Ms Access Liste Kutusundaki Satırların Sayısı
1
(Liste Kutusunun Adı).ListCount


Bu şekilde satır sayısını yani 4 rakamını alırız ancak For Next döngüsünün bitiş noktası olarak bu komutu yazacak olursak hata alırız. Çünkü listenin 1. satırını aldırmak için sıfırdan başlatınca 0,1,2,3,4 olacaktır ve bir satır fazladan saydırmış olurduk. Dolayısıyla gerçekte 4 satır olması gerekirken 5 satır gibi olmuş oldu ve toplama işlemi için 5. satır aranıpta bulunamayacağından program kırılacaktır. Kodlarımızı aşağıdaki gibi yazıyoruz:

Microsoft Access 2010 For Next Döngüsü
1
2
3
4
5
6
7
8
9
10
Private Sub btn_toplam_al_Click()
Dim i As Integer
Dim toplam As Long
 
For i = 0 To (list_siparisler.ListCount) - 1
....................
Next i
 
 
End Sub

5. satırda For döngüsünü başlatıyoruz. i = 0 ile başlangıç değerini veriyoruz yani sıfırdan başlayacak. Peki neyin sıfırından başlayacak sorusu aklınıza gelmesi lazım. Başlangıç değeri liste kutusundaki satırların başladığı ilk satır olacaktır. To anahtar kelimesi başlangıç ve bitiş değerlerinin arasına sabit olarak yazılır. To anahtar kelimesinden sonra bitiş değerinin ne olacağını yazacağız. Bitiş değeri ne peki? Ben toplama işlemini satır satır yapacaksam bitiş değerim son satırın değeri olması lazım. Aslında istersem başlangıç değeri olarak olarak 2. satır bitiş değeri olarakta 3. satır diyebilirimde. Tüm satırları toplamak istediğim için ilk satır ile son satırı değer olarak veriyorum.

Microsoft Access 2010 Dersleri For Next Döngüsü

Resimdeki döngüde yapacağı tek şey sıfırdan başlayıp listedeki satır sayısı yani 4 -1 = 3 ' e kadar saymak olacaktır. Böylelikle 0, 1, 2, 3 olmak üzere toplamda satır sayısı yani 4 defa döngüyü çalıştırmış olduk. Döngüyü çalıştırmakla kalmayıp döngü içinde satır sayılarını okutup toplatmak lazım. Tanımlamış olduğumuz toplam değişkenini bu iş için kullanacağız. Kodumuz aşağıdaki gibi olacaktır:

Ms Access 2010 Dersleri : Liste Kutusunda Bir Sütundaki Değerlerin Toplamı
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub btn_toplam_al_Click()
Dim i As Integer
Dim toplam As Long
 
For i = 0 To (list_siparisler.ListCount) - 1
toplam = toplam + list_siparisler.Column(2, i)
Next i
 
txt_toplam = toplam
  

End
Sub


Microsoft Access 2010 Dersleri Liste Kutusundaki Bir Sütundaki Tüm Değerlerin Toplamını Aldırma

Yukarıda 6. satıra "toplam = toplam + list_siparisler.Column(2,i)" ekledik. Peki neden toplam = toplam + ...... şeklinde kullandık? Çünkü toplam + .... şeklinde yazmaz isek döngüye her girdiğinde sadece o satırın değerini toplam değişkenine eşitler. Döngüden çıkınca toplam değişkeni sadece son satırda yer alan Deneme.com 'un 3 değerini verir. Her döngüdeki elde edilen satır değerini toplam değişkenine atıyoruz. Döngüden çıkınca elimizde toplam değişkeninde geçtiğimiz satırın değeri kalıyor. O halde yeni satır için döngüye girdiğimde toplam değişkeni ile o satırın değerini toplayıp tekrar toplam değişkenine atarsam son döngüden çıkınca elimde tüm satırların toplamı kalmış olur. Elimdeki toplam değişkenini ise txt_toplam = toplam diyerek formdaki metin kutusunda gösteririm.

Yukarıda anlatılan konunun Microsoft Access 2010 ile yapılmış örnek dosyasını aşağıdaki linkten indirebilirsiniz:


Yorumlar   

 
0 #2 sabiha 24-03-2011 10:23
slm kodunuzu hem 2007 hemde 2010 da denedim ama sonuç yok. verilen hata Invalid use of Null error 94 olarak veriyor.cevabın ız bekliyorum.nere de hata yapmış olabilirim?teşe kkürler..
Alıntı
 
 
0 #1 film izle 27-02-2011 21:21
perfect....
Alıntı
 

Yorum ekle


Güvenlik kodu
Yenile

Tags: access, 2010, kutusu, liste, toplamını, değerlerin, ürünleri, genellikle, topluca, müşterileri, derslerinde, sütunundaki

Share:Del.icio.us!Digg!Facebook!Google!Live!Reddit!

Benzer Konular