MS Access recordsource kullanımı | Teknoloji Raporu
Ana Sayfa » Yazılım » MS Access recordsource kullanımı
MS Access recordsource kullanımı
Bora M. Deniz | 18 Temmuz 2011	|
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.
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()
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]))
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.
« Sayfam çalındı mı ?
TV 3D Neler Getiriyor ! »