|
Access'te Başvuru Kitaplığı Yazmak
Bu ay biraz derinlere inip Access’teki References
(Başvurular) listesine kendi başvuru kitaplığımızı ekleyeceğiz.
REFERENCE LIBRARY
Diğer Office uygulamalarında da olduğu gibi Access’te hem standart nesne
kütüphaneleri hem de Activex kütüphaneleri kullanılabiliyor. Bu yazıyı yazdığım
Word2000’de Visual Basic Editor’ü açtığımda Tools/ References menüsünden tüm
başvuruları görebiliyorum. Aynısı Access için geçerli olup Office’te
programlama anında tüm bu kütüphanelerden istediğimiz gibi faydalanabiliyoruz.
Access’te boş bir dosya açıp modül sayfasında yeni bir modül oluşturalım. Tools/
References (Araçlar/ Başvurular) menüsü ile başvuruların listelendiği pencereyi
görelim.

MSACC9.OLB dosyasının Microsoft Access 9.0 Object Library kütüphanesi
olduğunu öğreniyoruz. Visual Basic For Applications ile beraber bu ikisi tüm
Access uygulamalarında kullanılan dosyalar. Access bunları kaldırmamıza izin
vermiyor.
Örneğin Access projenizde müzik çalmak istiyorsunuz ve elinizde bir Wav dosyası
var. Bunun için eğer sisteminizde Microsoft Media Player yüklü ise büyük ihtimalle
başvurular listesinde buna ait
kütüphane görünecektir. O zaman çok kısa bir kodla müzik çalmayı başarabiliriz.
Başvurular listesinden Windows Media Player’i seçip alttaki dört satırı
çalıştırın.
On Error Resume Next
Dim muzik As New MediaPlayer.MediaPlayer
muzik.Open "c:\windows\media\ding.wav"
muzik.Play
Gördüğünüz gibi çok kolay. Ama listede onlarca kütüphanenin hangisinin nasıl
kullanıldığını nereden öğreneceğiz? Üstteki müzik çalma örneğini vermeden önce
başvurular listesinden hangisini örnek vereyim diye aradım. Hiçbirinin nasıl
kullanıldığını zaten bilmiyor idiysem bana sadık dostumuz Object Browser (Nesne
Gözatıcısı) yardımcı olmuş demektir. F2’yle onu açtıktan sonra sol üstten Media
Player’i seçerek içindekileri biraz incelemek gerekiyor.

İlk olarak müziği çalacak nesneyi bulmak lazım. Bunu sol alt listeden
alıyoruz. İlk bakışta siz de aradığımız şeyin “Media Player” adında olduğunu
anlayacaksınızdır. Bunu seçince sağdaki listeden de Open, Play gibi şeyler
aramamız gerektiği de hemen aklımıza gelenlerden. Open’i seçtiğimizde alttaki
kısımda nasıl kullanılacağı gösteriliyor. Bir dosya adını parametre olarak
vermek gerekiyormuş. Sonra da Play’a bakacağız ve üstteki birkaç satırlık kodu
çok kısa bir sürede keşfederek oluşturacağız. Eğer Media Player’iniz MP3
çalıyorsa sizin de bu şekilde MP3 çalmanıza hiçbir engel yok. Hatta Access’te
kendi müzik listenizi bile yapabiliyorsunuz bununla. Tabii VB’ciler tüm bunların
VB’de de yapılabileceğini zaten biliyorlardır.
KENDİ BAŞVURU KÜTÜPHANENİ KENDİN YAP!
Geldik kendi başvuru dosyamızı yapmaya. Yeni bir Access dosyası açıp içine
birer adet tablo, form ve rapor yerleştirelim. Örneğimizde üçü de “Kisiler“
adında tablo, form ve rapor var. Sonra modül sayfasında yeni bir modül oluşturup
aynen şunları yazıyorum:
Option Compare Database
Option Explicit
Public Function Topla(sayi1 As Long, sayi2 As Long) As Long
Topla = sayi1 + sayi2
End Function
Public Sub KisilerFormunuAc()
DoCmd.OpenForm "Kisiler"
End Sub
Public Sub KisilerRaporunuAc()
DoCmd.OpenReport "Kisiler"
End Sub
Bir başvuru dosyasının içindeki bir formu, raporu veya diğer şeyleri açabilmek
için aynı dosya içinde bu işleri yapan kodlarımızın olması gerekiyor. Örnekte
rapor ve formu açabilmek için iki ayrı kod var. “Topla” adlı işlev ise
genel bir yardımcı işlev görevi üstlenecek. Yani biz bu başvuru dosyasını
nereye eklersek ekleyelim bu işlevi Access’in kendi işleviymiş gibi
kullanıp, form ve raporu da açabileceğiz. Bu dosyamızın adı Referans.mdb
olsun.
Zorunlu olmasa da bir ayar yapmamızda fayda var.
Başvurular kısmında bu
dosyanın görünen ismini belirlememiz gerekiyor. Yani projemizin adını.
(Visual Basic Editor'de Tools/Properties/ProjectName.)
Application.SetOption "Project Name", "İlk Referans Dosyamız"
Bunu yaparak başvurular kısmında dosyamızın adının “İlk Referans Dosyamız”
şeklinde görünmesini sağladık.

Şimdi bunu kullanmak için kapayıp yeni bir Access dosyası açıyoruz. Yeni bir
modül sayfası açarak Başvurular bölümünde bu dosyayı bulup seçelim. Sonra
Object Browser ile ilk başvuru kitaplığımızı inceleyelim.

İlk başvuru dosyamızdaki kullanılabilir işlevleri
Object Browser ile görebiliyoruz.
Şimdi alttaki satırları çalıştırmayı deneyelim.
KisilerRaporunuAc
KisilerFormunuAc
MsgBox topla(3, 5)
Böylelikle hem başka bir Access dosyası içindeki form ve raporu açabiliyoruz,
hem de kendi ortak işlevimizi yazmış oluyoruz.
Tüm bunlardan sonra yapılması önerilen son bir işlem daha var. Başvuru
dosyamızı derleyip kodlarını gizlemek ve kullanıma tam hazır hale getirmek.
Şimdi Referans.MDB dosyasını tekrar açıp MDE dosyası oluşturalım. Tools/
Database Utilities/ Make MDE File (Araçlar/ Veritabanı Hizmet Programları/ MDE
Dosyası Yap) seçeneği ile MDE dosyamızı oluşturduk. Bu şekliyle hem kimse kendi
özel kodlarımızı ve tasarımlarımızı göremeyecek ve değiştiremeyecek hem de bu
dosyamız normal bir EXE gibi hızlı çalışacak.
Dosyamız hazır. Kendisini belirtmek için uzantısını örneğin REF olarak
değiştirirelim. Şimdi asıl programımızdaki başvuru işaretini kaldırıp Referans.REF
dosyasını yeniden yüklememiz gerekecek.
Bu ilk kütüphanemizi Access içinden bir DLL ya da OCX gibi kullanabiliriz artık.
Başvurularla ilgili genel olarak anlatacaklarım bu kadar. Sonrasında bununla
ilgili birkaç ipucu vermekle yetineceğim. Bu özelliği kullanmaya karar
vereceğiniz zaman CodeDB ve CurrentDB adlı iki nesneyi hatırlamanız faydalı
olabilir. Bir başvuru dosyası içinde CurrentDB kullanırsanız bu, başvuruyu
kullanan dosyayı işaret eder. Ama CodeDB kullanıyor iseniz bu da kodun bulunduğu
dosyayı yani başvuru dosyasının kendisini işaret etmiş olur. Sıkça
kullandığımız CurrentDB yerine CodeDB kullanmamızın sakıncası yoktur aslında.
Halihazırda CodeDB zaten kodun yazılmış olduğu uygulamanın kendisini ifade
ediyor.
İPUÇLARINA DEVAM - Bir Formu Veya Raporu Birden Çok Kere
Açmak.
Access’te de VB ve diğer dillerde olduğu gibi bir formu ya da raporu aynı anda
istediğimiz kadar açma şansımız var. İşte örnek:
Global Frm1 As Form_Form1
Global Frm2 As Form_Form1
Sub AyniFormu3kereAc()
DoCmd.OpenForm "Form1"
Forms("Form1").Caption = "Bu, Form1'in orjinali"
Set Frm1 = New Form_Form1
Set Frm2 = New Form_Form1
Frm1.Caption = "Bu, Form1'in ilk kopyası"
Frm2.Caption = "Bu da Form1'in ikinci kopyası"
Frm1.Visible = True
Frm2.Visible = True
MsgBox "FORM1'in 2 adet kopyası açıldı."
End Sub
Burada kullandığımız Form_Form1 tanımlaması Form1 formuna ait sınıfın adıdır.
Geçen sayıda bahsettiğimiz sınıf modülleri konusunda bundan bahsetmek için acele
etmedik. Normalde form ve raporlara ait kodların bulunduğu modüller aslında
sınıftır ve bir sınıf ile yaptığımız herşeyi form ve raporlara ait modüllerle
de yapabiliriz. Burada şunu unutmamakta yarar var. Eğer FRM1 ve FRM2’yi aynı
yordam (SUB) içinde tanımlasaydık kod bitip bilgiler bellekten atılırken bu
formlar kapanacaktı. Bunu önlemek için onları "Global" deyimi ile tanımladık.
Şimdi yeni bir form veya rapor oluşturup onun üzerinde deneme yapmaya çalışırken
neden hata oluştuğunu sorabilirsiniz. Böyle bir durumda form veya raporunuza ait
bir modülün varolmadığından şüphelenin. O zaman bunun kod kısmına bir harf de
olsa birşeyler yazıp sınıf modülün oluşmasını sağlamalısınız. Çünkü kod olmadan
sınıf modülü olmaz.
Gelecek sefer gelişmiş sorgu (query – sql) örneklerini incelemek istiyorum.
Sadece Access’çilerin değil, SQL kullanan ve de kullanmak isteyenlerin bunu
kaçırmamasını öneririm. Sonrasında Add-In yazma konusuna başlayabilmek için kod
ile Access formlarının ve raporlarının nasıl düzenlendiğinin örneklerini
inceleriz. Ama ondan önce ODE Tools’tan bahsetmeyi planlıyorum.
Güneşli güzel günler...
ACCESS HİKAYELERİ
ODE TOOLS GÜNLERİM
Sevgili Günlük. Access97 için ODE Tools’u satın almış bulunuyoruz. Yanlışlıkla
getirdikleri yükseltme sürümünden sonra temiz bir sürüm elde ettik. Office97 Developer
Edition adlı bu kutu içinde hem Office97 Professional var, hem de Office
Developer Tools (ODE Tools). En önemlilerinden biri de Office programlama için
iki güzel kitap. Access’te ya da Office’te programlama yapmaya çalışırken neyi
yapıp neyi yapamayacağımızı bu kitaplar gayet iyi anlatıyor.
O güne kadar MDB dosyalarını EXE’ye dönüştürdüğünü zannettiğim Access Setup
Wizard’ının arayüzü de Access’te yapılmış. EXE’ye dönüştürmese de zaten MDE
dosyaları kısmen EXE’ler gibi çalıştığı için sorun yok. Artı ve eksiler şöyle:
- Setup Wizard ile güzel bir kurulum programı hazırlıyoruz ve programımızı
Access’in kendisi olmadan müşterimize kurabiliyoruz. Paket gerekli dosyaları
bizim için toparlıyor. İçine bizim programımızla birlikte Access Run-Time
modülünü koyuyor.
- Bir bilgisayarda sadece bir adet Run-Time modülü olması yeterli. Sonrasında
istediğimiz kadar MDB, MDE dosyasını kopyalarak bunları çalıştırabiliyoruz.
- Haliyle müşterimize Access kurmaya gerek kalmıyor.
- Türkçe Access’te hazırlanan bir kurulumu İngilizce Access olan makineye
kurduğumuzda maalesef onun dilini Türkçe’ye çeviriyor. Tersi de geçerli. Bir
bakıyoruz form tasarımlarındaki Properties penceresinde Özellikler yazmaya
başlamış. Çok acıklı değil ama neyse...
- Kurulum hazırlama yeteri kadar ayrıntılı. VB’dekinde olduğu gibi birçok
seçenek burada da var.
- Ayrıca kurulumda ODBC ve diğer veritabanı seçenekleri var. İstenirse grafik
(Chart), Outlook ve Exchange modülleri de dahil edilebiliyor.
- OCX kullanmış isek onu listeye kendimiz ekliyoruz ve Wizard, o OCX için
gerekli diğer dosyaları kendisi buluyor.
Gelgelelim bazan kafa karıştırıcı şeyler de oluyor. Bir tanesini denerken
kurulum sırasında bazı hatalar oluştu. Neden olduğunu zar zor anlayabildik.
Meğer ki ayarları yaparken klasör ismi sorulan yerlerde klasörün tam adı
yazılacak, ama isminin sonunda bölü işareti olmayacakmış. O kadar çok makine ve
sistemde test ettim ki rasladığım problemlerin altından kalkmam epey vaktimi
aldı. Sağolsun Microsoft’un destek sitesi böyle durumlarda ilaç gibi geliyor.
Epeydir, çözemediğim bir hata olduğunda en iyi yardımcılarımdan olan
Altavista’ya o hata mesajının aynısını soruyorum. Akıllı AV şimdiye dek en az on
adet büyük problemimin yarısından fazlasında, verdiği ilk cevapta çözüme
ulaştırmıştı beni. Bunlar da MS’nin destek sitesi oluyor çoğunlukla. Sonradan
Ask.com’u keşfettim. İlk sorduğum şey “where are you?” idi. Cevabı görünce
gözlerim yaşarmıştı. “.. at AskJeeves!”. Tabii bir de azar işittim. Soracak
doğru dürüst birşeyim yok muymuş!
Kurulum paketi hazırlamaya devam ederken bir yandan da deneylere devam ediyorum. Zira
paketi
hazırlamak azıcık uzun sürüyor. Acaba “D” sürücüsüne kurulu yepyeni bir
Windows’ta bu kurulumu çalıştırdığımda herşey yerli yerine oturacak mı? Cevap
evet oldu. Son olarak merak ettiğim iki şey vardı. Kendi başvurularımızı
eklediğimiz dosyalar sabit klasör adını arayacakları için başvuru problemleri
ile karşılaşabilir miyiz? Bunun da cevabı evetti, maalesef ki. (Tabii o zaman
bunun başka türlü çözebileceğini bilmiyordum.) Bir de Access 2000 yüklü
makinelerde Access 97 için hazırlanmış kurulum sorun çıkarmadığı için testler
dizisini sadece bir fireyle bitirmiş oldum.
Sonuç olarak Setup Wizard bize, dosyaları onarma (repair/compact) komutları
dahil Programlar menüsündeki kısayolları da ayarlayan ve gerekirse Registry’ye
kurulumla ilgili kayıtlar giren güzel bir kurulum paketi yapıyor.

EXE yapmasak da programlarımızı Access’e
gerek kalmadan kurabileceğiz şimdi.
Hoşçakal Günlük.
DOSYA:
AccessRef.rar
Serkan Şahinoğlu
(PC Magazine,
Temmuz 2000)
|