|
|
||||||||||||
|
|
İlk Eklentimiz
1) Hazırlamış olduğunuz Access programınızın içinde aşağıdaki gibi uSysRegInfo adlı bir tablo oluşturun ve listedeki 4 kaydı tabloya girin. 2) Tabii öncelikle Add-in’imizin bir adı olması gerektiği için bizimkinin adını “Edinim” koydum.
3) Type adlı alan sayı tipinde, diğer alanlar ise 255 uzunluklu metin alanları olmalı ve eğer Access2000 değil de Access97 kullanıyorsanız Subkey alanındaki değerlerde “9.0”ı değiştirip “8.0” yapmalısınız. 4) uSysRegInfo tablosundaki “=Edinim_Entry()” değeri bu add-in’in başlatılırken çağrılacağı işlevin adıdır. (Yani add-in başlarken ana formu açmak istiyorsanız, herhangi bir modülün içinde “Edinim_Entry” adlı parametresiz bir işlev (function) oluşturun ve kod kısmına ana formun açılmasını sağlayacak kodu yazın. Bu, add-in’in başlatılacağı yerdir.) 5) Kodlarımızın gizlenmesi ve programımızın bir EXE gibi hızlı çalışabilmesi için bu dosyayı önce MDE haline getirmeliyiz ve sonrasında dosyanın uzantısını MDA yapmalıyız. (Laf aramızda, MDB dosyalarının uzantısını MDA uzantılı yapmak da kâfi.) 6) Dosyayı uSysRegInfo tablosunda belirttiğiniz klasörün içine kopyalayın ve Access’i açıp Add-in yükleme kısmından bu dosyayı yükleyin. (Tools/Add-ins/Add-in Manager ile yapılıyor. Tahmin edeceğiniz gibi bu da Access’te yapılmış bir add-in.)
Add-in’lerin amacı Access programcısına kolaylık sağlamak. Önceki bilgilerimizi yoklayarak CodeDB ile CurrentDB’nin ne işe yaradıklarını hatırlayalım. Ek olarak fazla bir şey yapmaya gerek yok. Add-in ile normal bir Access programı ile yaptığınız her türlü işlemi yapabilirsiniz. Ama asıl amacı üzerinde çalışılan projeye yardımcı olmak. Örneğin geçen ay bahsettiğimiz Database Finder adlı ilk add-in’imiz, Access’te çalışırken diğer yandan bilgisayardaki tüm Access dosyalarını tarayarak aradığımız isimdeki nesneleri (tablo, form, sorgu, makro vs.) arkaplanda bulup listeliyordu. Aynı şekilde Access97’deki “SwitchBoard Manager” add-in’i Access içinden otomatik menü formları yapmamızı sağlıyordu. İP ÜSTÜNE UN SERMİŞ Bu ay ne ettiysem Hoca bana ipucu vermedi. Neymiş, ipin ucuna un sermiş. İş başa düşünce Bay Akses’inkileri aratmayacak ipuçları keşfettim, laf aramızda.
Diyelim ki bir adet liste formunuz ve bir adet bu listeden seçerek ayrıntısını göstermek için kullanmak istediğiniz ayrıntılı bilgi formunuz var. Haliyle bu iki form, kayıtlarını aynı tablodan almak zorunda. Tek fark birinin liste halinde, diğerinin sayfa halinde göstermesi. Bu durumda kod yazıp “FindFirst” gibi bir komutla ayrıntı tablosundaki kayda ulaşmak gerekiyor. Fakat şu yolu denerseniz, öyle aramayla, bulmayla neyin uğraşmanıza gerek kalmayacak. Kisiler adlı formda bir kayıt seçip detayını görmek için Kisiler_Detay adlı formu açmak istediğinizi varsayarsak şu kodu bir defalık çalıştırmanız yeterli: DoCmd.OpenForm "Kisiler_Detay", , , , , acHidden
Her ne olursa olsun Recordset sınıflarının adresleri eşit olduğu sürece zaten açık olan kaydı bir daha aramaya gerek kalmıyor.
Access dosyalarının olduğu yerde aynı önadı taşıyan LDB uzantılı dosyayı hepiniz farketmişsinizdir. Birçoğumuz acaba Access dosyamıza başka kimler bağlı diye bulmak istemişizdir en az bir kere. Velhasıl, bizim aradığımız şey tam tamına LDB dosyasının kendisidir. Çalışma anında bunun kopyasını alarak içini okumayı deneyin ve bu dosyayı salt-okunur açmayan tüm bilgisayar adlarını ve kullanıcı adlarını orada görün.
Elinizde 10 adet boolean tipinde değişken var. Bunlardan kaçının TRUE olduğunu nasıl bulursunuz? Siz hiç düşünmeden bunların değerlerini toplamanızı öneriyorum. Dim a as boolean, b as boolean .... f as boolean Zira TRUE değerinin VBA'daki sayısal karşılığı -1, FALSE değerininki ise 0'dır. Bu haliyle TRUE olanları toplayıp -1 ile çarpmak yeterli oluyor. Eşit mi, değil mi sorularının çok olduğu kodlarda işinize yarayabilir. Mesela 10 adet seçim kutusundan en az 3 tanesinin seçilmesi gerektiğini karşımızdaki kişiye şöyle anlatabiliriz: If ( Check1 + Check2 + ... + Check10 ) > -3 Then _ Bir de şunu deneyin: If ( IsNull(Text1) + IsNull(Text2) ... + IsNull(Text10) ) = -10 Then _
Bu sorgu türü ile birbirinin aynı özelliklere sahip ya da birbirine benzer olan tabloları birleştirerek sorgu yapıp tek bir kayıt kümesi elde edebiliyorsunuz. Yeni bir sorgu oluşturup Sorgu/SQL Spesific menüsünün altındaki menüden en üsttekini seçin.
Sözgelimi aynı alanları içeren Adresler1 ve Adresler2 adlı iki tablonuz var. Ama siz herhangi bir kişinin adresini bulmak için ikisinden aynı anda arama yapmak istiyorsunuz. Şu kodu yazın, olsun bitsin: SELECT Ad, Soyad Sonrasında bu sorguyu tasarım moduna getirip üstünde çalışmak çok zevkli oluyor. Windows 2000'den sonra sonra Türkçe karakterler konusunda olayların ters
dönmeye başladığına sahit oluyorum. Artık yeni programlarda “i” ile “I”
ayrılıyor ve Türkçe’de nasılsa öyle oluyor. Yani “ID” adlı bir alanınız
olduğunda “id” yazdığınızda büyük ihtimalle hata oluşacak, şu an benimkinde
olduğu gibi. BAŞKA BİR DOSYADAKİ TABLOYU SORGULAMAK Ufak bir iş için bir tabloyu içeri bağlamayı içinize sindiremiyorsanız sizin için de ufacık bir çözümümüz var. Başka bir Access dosyasının içindeki bir tabloyu sorgu içinde kullanmak için şu iki örneği inceleyin: SELECT Kisiler.* SELECT Kisiler.* Birincisinde sorgunun tasarım anında tablo özelliklerinde dosya ismi seçilebiliyor. Bunu yapınca tasarım görünümünde tablonun özelliklerinde Source (Kaynak) değerinin, yazdığımız dosyanın adı olduğunu göreceksiniz. Sorgu içinde tablo seçili iken View/Properties (Görünüm/Özellikler) menüsü ile özellikler sayfasını açabilirsiniz. İkinci örnek ise eskiden beri kullanılagelen bir “IN” kalıbı.
Söz başka dosyalardan açılmışken başka bir Access uygulamasının nasıl yönetildiğine bakınız şimdi. Option Compare Database Yeni bir Access uygulaması açıp onda bir dosya açarak kendi dosyamızda
yapabileceğimiz herşeyi o uygulamada da yapabiliriz. Serkan Şahinoğlu | |||||||||||||||||||||