MS Access recordsource kullanımı

| 18 Temmuz 2011 |






MS ACCESS

Recordsource yani kayıtkaynağının pratik kullanımı

Ms Access içersinde sihirbazla oluşturduğunuz form aslından bir tablo yada query kaynağına bağlıdır. Bu alan Formun Recordsource   alanı olarak geçer. Özellikler penceresinden bunu görebilirsiniz. Eğer form üzerinde bir değişkene bağlı olarak bu kaynağı değiştirirsek,   form üzerinde kayıtları filtreleyebiliriz. Bunu yapmak için basitçe me.recordsource =” “ de tırnak içinde alana SQL cümleciğini yazmak ve bunuda bir filtre kriterine yada bir butona bağlamak yeterli olacaktır.

Uygulamada nasıl oluyor?

Burada yazdıklarımı kısaca uygulayalım. Ben Veritabanı9 adından bir database   içinde Tablo1 adında bir table oluşturup, takip eden penceredeki alanları oluşturdum. Primarykey “unique” bir alan olup, aslında bu tabloda Kimlik adındaki otomatik alandır. Fakat ÖgrenciNo da benzersiz bir alan olduğundan , Kimlik alanının bu tabloda yer alması ilerde database hacmini büyütmekten başka bir işe yaramayabilir. Bu alanı bunu vurgulamak amacıyla oluşturdum. MS Access de de pek çok database gibi alanlarımızı ekonomik olarak planlamamızda fayda vardır. Mesala Ögrenci No 5 hanelik bir veritipi ve sayı ise oluştururken bunu tam sayı seçmemiz   Ad soyad alanlarını default olarak gelen 255 hane yerine en fazla 25 hanelik metin veritipi seçmemiz mantıklı olacaktır. Daha sonra Tablo2 ve Tablo3 şeklinde tabloları oluşturdum.

Tablo1 bize ögrenci kartlarını gösteren yapıdır. Burada primarykey yani anahtarımız OgrenciNo ‘dur.

Tablo 2 ise ögrencilerin notları takip edeceğim yapıyı oluşturuyorum. Bunu oluşturuken simdilik kullanmayacak olsamda Kimlik adında bir anahtar ekliyorum.   Bu yapıda kritik nokta OgrenciNo alanımın değerleri ilk Yaptığım Tablodan gelecek,   bunun içinde OgrenciNo Veri türünü seçtikten sonra aşağıdaki pencerede Arama sekmesindeki satırkaynağını seçip satır sonundaki üç noktayı seçip, Tablo1 in ilgili alanlarını manuel olarak ekliyoruz. Yada basitçe üç noktadan önceki açılır kutudan Tablo1 ‘i seçiyoruz.

İlişkili sütun tablo1 deki ilk alanı ilişkilendireceğimiz gösterir, yani OgrenciNo. Ben seçim sırasında OgrenciAdı ve OgrenciSoyadi görebilmek için Sütun sayısını 3 yaptım. Sutun genişliklerini ve liste genişliğini manuel olarak girip, Tablo2 de OgrenciNo alanına gireceğim bilgilerin sadece Tablo1 den gelmesi için bunu listeyi sınırla “Evet”   yaparak gerçekleştirdim. Tablo2 de birden fazla Dersi takip edeceksem Birden çok değere izin ver seçeneğini “Hayır” olarak bırakmam lazım.

Yine bu Tablo2 de yer alan DersAdi alanını benzeri şekilde Tablo3 ile ilişkilendiriyorum. Anahtar olarak bu sefer metin tipinde bir veri kullanıyorum. Bu Tablolarıma Herhangi bir veri girişi yapmadan üst menu çubuğunda veritabanı araçlar sekmesindeki ilişkiler butonuna basıp, tablo göster düğmesi yardımıyla tüm tablolarımı ilişkilendiriyorum.

MS Access ‘de veritabanlarında tekrarlı alanlar oluşturmadan aşağıdaki gibi bir relationship yani ilişki yapısı oluşturmuş olduk. Bu noktadan sonra verilerimizi girmek için form oluşturacağız.

Bu yapı içersinde bizim ana tablomuz Tablo2 dir. Diğer Tablolar bu tabloya hizmet eden yardımcı tablolardır. Tablo 2 üzerinden wizard kullanarak bir form oluşturalım.

devam edecek…

 Tablo2 yi seçip oluştur sekmesinden birden çok öge oluştur butonuna basarak Formu oluşturuyorum. Öncesinde daha hızlı anlatım için Tablo1 ve Tablo3 bazı veriler girdim. Tablo2 Form yapısında gördüğümüz gibi OgrenciNo kısmı ve DersAdi alanları ilgili tablolardan liste halinde gelmiş oldu.

Tablo 2 Formuna ait   kayıt kaynağını takip eden ekran görüntüsünden bulabilirsiniz.   Simdi DersAdi Alanını tasarım modunda kopyalayıp üst alana yapıştıryorum ve bu alanın özellik sayfasına girip veri sekmesindenki denetim kaynağını yani DersAdi nı siliyorum ve ilişkisiz bir alan yapıyorum. Daha sonra yine özellik sayfasında Günceleştirme sonrasında kısmını tıklatıp buraya bir kod oluşturucu seçeneği ile   VBA macro yazacağız Bu oluşturduğum alananın adı AçılanKutu12 o halde;

Private Sub Açılan_Kutu12_AfterUpdate()
DoCmd.RunCommand acCmdRefresh
If Me![Açılan Kutu12] = “Hepsi” Then
Me.RecordSource = “SELECT Tablo2.* FROM Tablo2”
Else Me.RecordSource = “SELECT Tablo2.* FROM tablo2 WHERE (((Tablo2.DersAdi)=[forms]![tablo2]![Açılan Kutu12]))
End If
End Sub

Bu yeni eklediğim Ders Seçim alanı güncelleştirdiğimde Form bu alana göre filtre edilmiş oldu. yani Edebiyat dersini seçtiğimde sadece bu alanı oluşturan kayıtlar formda gözükecektir. Hepsi diye bir kayıt ekledim Tablo3 içersine macrodan da görüldüğü gibi bu alan seçildiğinde Kaynak filtre edilmeden tüm kayıtları göstermektedir. Çok farklı çözümler de   oluşturulabilir. Umarım faydalı olmuştur.



Kategori: Yazılım

Bora M. Deniz ()

Teknoloji, internet, ve bilişim gibi konularda paylaşımlarım ve yazılarımla 2011 den beri teknorapor.com dayım. Sosyal medya da yararlı bulduğunuz yazılarımı paylaşmanız dileklerimle... The author shares and writings IT, internet and technology news blog offering

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir