Access de Class Modül Kullanımı
Tarih
25/11/2008 15:18
Konu Sahibi
Kur@l
Yorumlar
2
Okunma
3922
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy



Kur@l
AccessTR.Net
Kullanici Avatari
Uzman
2.029
05/11/2008
KONYA
Ofis 2010
15/11/2016,02:32
Çözüldü 
Accessde Class Modül Kullanımı ile ilgili örnek ararım...
elinde örnekleri olan varsa tarif edebilecekler varsa çok memnun olurum
komşuda dülger mi var geliyor keser sesi,
ustalar konuşunca çıraklar keser sesi.
Cevapla


Bilgisayarcı
Atçalı
Kullanici Avatari
Onursal
657
29/01/2008
410
Antalya
Ofis 2003
01/11/2011,15:17
Çözüldü 
Class Modulleri konu olarak ileri düzey programlama bilgisi gerektirir. Uzun yıllar programcılık yapıp hala class mantığını tam olarak kullanamayan insanlar tanıyorum.
Ya da adına class denilen bir çok örnek görüyorum alakası olmayan...
Tek bir örnekle ya da sadece tarifle bunu anlamaya çalışmak kulağa uzak ihtimal gibi geliyor.

Bir önceki sorunuza da buna benzer bir konu ile başlamıştınız. Class olmadan yardımcı olduk sanırım. Bence siz tam olarak ne yapmak istiyorsunuz onu anlatın class olmadan çözebilecek miyiz ona bakalım...
Bana işe yarayan bir müdür göster,sana dünyayı yerinden oynatayım.
                                                                                        Descartes


Cevapla


Puletin
Uzman
Kullanici Avatari
Uzman
1.716
01/11/2008
416
Ülke Dışı
Ofis 2003
29/10/2016,20:35
Çözüldü 
Access'te Sınıf Modülleri

Class modülleri (Sınıf Modülleri) ayrı nesneler olarak kullanır, onlara istediğimiz gibi işlemler yaptırabilir ve onları çağırıp tekrar kullanabiliriz. Sıkça kullanacağımız bir işlemi sınıf modülüyle kolayca yapabiliriz. Bu konunun aslında doğrudan Visual Basic (VBA) ile ilgili olmasından dolayı biz biraz daha Access’e yaklaştırmaya çalışacağız. O yüzden okuyucunun sınıf modüllerini temel olarak bildiğini, en azından bu yazıdan bunun kısmen anlaşılabileceğini varsayıyorum.


Sıkça kullandığımız “Recordset” tanımı Sınıf yani bir Class’tır. Nesne Gözatıcısı (Object Browser) öyle söylüyor:

Class Recordset
Member of DAO
A representation of the records in a base table or the records that result from


Dim RS As Recordset
Set RS = CurrentDb.OpenRecordset("tablo1", dbOpenDynaset)
RS.AddNew
RS.Fields("isim") = "Hasan Baltacı"
RS.Update
RS.Close

Dim ile RS adlı değişkenin Recordset sınıfından olmasını sağladık. Addnew bu sınıfın metotlarından biri. Bu metot, RS’nin kayıt ekleme moduna geçmesini sağlıyor. Fields ise sınıfa ait bir özellik. Update ve Close ise diğer metotlardan.


LİSTE ÖZELLİKLİ BİR SINIF MODÜLÜ

Bizim sınıf modülümüz virgülle ayrılmış metinleri çözüp listeleyebiliyor ve sıralayabiliyor.
Veritabanı penceresinde (Database Window) Modül (Module) sayfası açıkken Insert/ Class Module (Ekle/ Sınıf Modülü) menüsünü seçip ilk sınıf modülümüzü ekleyelim.

İlk bakışta herhangi bir modülden farkı yok.

Aşagıdaki kodu yeni bir sınıf modülü (Class Module) açıp yazın. Sonra bunu MyListBoxComma adı ile kaydedin. Unutmayın, modülü her zaman bu adla çağıracağız.
‘SINIF MODÜLÜ: MyListBoxComma

Option Compare Database
Option Explicit

Private Dizi() As String
Private Toplam As Integer
Private Ayirac As String * 1

Private Sub Class_Initialize() ‘Sınıf yükleniyor.
Toplam = 0
Ayirac = ","
End Sub

Public Sub AddItem(Strx As String) ‘Listeye eleman ekle.
Toplam = toplam + 1
ReDim Preserve dizi(1 To Toplam) As String
Dizi(Toplam) = Strx
End Sub

Public Property Get Seperator() As String ‘Ayıraç.
Seperator = Ayirac
End Property

Public Property Let Seperator(ByVal vNewValue As String)
Ayirac = vNewValue
End Property

Public Function Clear() ‘Listeyi temizle.
Erase Dizi
Toplam = 0
End Function

Public Property Get ListCount() As Integer ‘Listedeki eleman sayısı.
ListCount = toplam
End Property

Public Sub Sort() ‘Listeyi sırala.
...
...
End Sub

Private Function GetMin(sira As Integer) As Integer
‘Sıralamak için kullanılıyor. Sadece bu Class içinde
‘kullanılabilir. Çünkü Public olarak degil, Private olarak tanımlanmış.
...
...
End Function

Public Function SetComma(ByVal Strx As String)
‘CommaText olarak girilen metni listeye dönüştürür.
...
...
End Function

Public Function GetComma() As String
‘Tüm listeyi ayıraç kullanarak cümle haline getirir.
...
...
End Function
Bu modülden örneğin şu şekilde faydalanabiliriz:
Sınıfı MyListBoxComma adı ile kaydettiğimiz için bu adı kullanmalıyız.
‘New ekini de kendi yazdığımız sınıfları kullanabilmek için yazmak zorundayız.
Dim Liste As New MyListBoxComma
Liste.AddItem "ocak"
Liste.AddItem "subat"
Liste.AddItem "mart" ‘... Tüm ayları yazın.
MsgBox liste.ListCount & " adet eleman:" & Chr(13) & liste.GetComma
Liste.Sort
Liste.Seperator = Chr(13) 'Satirsonu işaretini(13) koyunca altalta listelenecek.
MsgBox "Listenin sirali hali:" & Chr(13) & liste.GetComma
Liste.Seperator = "-"
Liste.SetComma ("sonbahar-kis-ilkbahar-yaz")
MsgBox Liste.ListCount & " adet oldu simdi."


Modülü biraz inceleyince Private ve Public şeklinde iki tanım görüyoruz. Bildiğiniz gibi Private ve Public tanımlamaları yordamların dışardan kullanılıp kullanılamayacağını belirliyorlar. Bilmeyenler için Public kullanmadan dışarıdan okuma ya da değiştirme yapılamayacağını ve Private kullanırsak sadece modülün kendi içinden okuma ve yazma yapabileceğimizi de söyleyeyim.
Burada normal işlev (function) ve yordamlardan (sub) farklı olarak Property Get ve Property Let tanımları da kullanılmış. Örneğin Seperator (Ayıraç) özelliği için hem Get hem de Let yöntemi var. ListCount için ise sadece Property Get var. Bu durumda ListCount özelliği sadece okunabilir, Seperator ise hem okunur hem de değiştirilebilir olmuştur.

Class_Initialize yordamı da anlayacağınız üzere bu modülün ilk çalışmaya başladığı yerdir. Fakat kullanılması zorunlu değildir. Aynı şekilde sınıflar bellekten atılırken varsa Class_Terminate adlı yordam çağrılır.
Kaplumbağa ya dikkat et...
Sadece başını çıkartıp risk aldığında ilerleyebiliyor...
Cevapla







Konuyu Okuyanlar: 1 Ziyaretçi


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
  Access Aşırı CPU Kullanımı siyahca 17 357 02/12/2016, 17:11 siyahca
Brick Microsoft Access Yüklü Olmayan Bilgisayarlarda Access Kullanımı (Runtime) OFA 4 361 20/06/2016, 14:47 OFA
  iç içe if kullanımı Kardeşpayı 7 429 24/05/2016, 14:56 Kardeşpayı
  sorgu içinde koşul içeren ifade kullanımı uguruygar 4 294 20/05/2016, 00:09 ozanakkaya
  Sorguda DLookUp Kullanımı ! İfadelerle Üretilen Alandan Ardışık satır Verisi Çağırma Celalettin Uçar 10 534 11/05/2016, 16:43 atoz112


Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2016 MyBB Group.
DMCA.com Protection Status
© Desing by XSTYLED| Develops by ozanakkaya