Eğer bana bilgisayar kullanımını haklı gösterecek tek bir şey şey derseniz, hemen “Veritabanı” derim. Veri-işlem. Ve ister telefon defterinizi oluşturun, ister firmanızın demirbaş envanterini tutun, Microsoft Access, her türlü veritabanı ihtiyacınızı karşılayacaktır ve daha fazlasını verecektir. Eskiden, PC’ye, IBM-uyumlu bilgisayar dendiği yıllarda, iş dünyasında satınalma görevlileri arasında yaygın bir söz vardı: IBM’den şaşma, kovulmazsın! Eğer kullanımını iyi bildiğiniz için her an iş bulabileceğiniz bir program varsa o da Access olmalı. Artık kime kelime-işlem programı kullanabiliyor diye kimseyi işe almıyor. Oysa Access, gerek bir çok işlemi otomasyona bağlayabildiği, bırakın otomasyonu program-içinde-program yazmaya elverişli oluşu ve çağımızın aracı Internet için gerekli ODBC uyumlu veritabanlarını oluşturabilmesi sayesinde, bilgiişlem alanında yeni bir gelecek vaad ediyor. Veritabanlarının en önemli özelliği ve onları bir kelime işlem programıyla yapabileceğiniz listelerden farklı kılan ön önemli özelliği bir veritabanında yer alan farklı tabloların birbiri ile ilişkilendirilmesidir. Bundan önceki sürümlerinde Access, her bir tablonun kendi içinde düzenlenmesine izin verirdi; oysa artık ilişkilendirilmş tabloların tümünü birarada sanki tek tablo imiş gibi düzenlemeniz (edit) ve güncelleştirmeniz mümkün. Access 2000 ile çalışmak daha kolay: Metin kutularınız ve diğer kontrolleriniz (düğmeler, grafikler, yollar) gruplanabilir ve böylece tek tek değil toplu olarak düzenlenebilir. Şartlı biçimlendirme yoluyla, verilerinizi belirli şartı karşılıyor ve karşılamıyorsa, dikkat çekici biçimlere sokabilirsiniz. Access bugüne kadar sadece kendi dosyaları için bir kullanım aracıydı. Artık değil: Access 2000 ile SQL uyumlu bütün veritabanlarına erişebilir, bu verilerle Acces dosyaları ile neler yapabiliyorsanız, yapabilirsiniz. Dışarıdan SQL-uyumlu veri satınalan firmalar, artık bir de bu verileri kullanabilmek için gerekli programları satın almak zorunda değiller. Ve Access ile oluşturacağınız verilerle hazırlayacağınız raporları artık bilgisayarında Access kurulu olmayan kişilere de rahatça verebilirsiniz; Access 2000 Snapshots, bu biçimi (.snp) destekleyen bütün işletim sistemlerinde ve programlarda görülebilir, basılabilir ve kullanılabilir. Access 2000 ile veri-işleme dünyasına yeni bir kavram geliyor: Veri erişim sayfaları. Bu, Internet’te gördüğünüz türden bir Web sayfası ve Microsoft Acces veritabanı dosyasında veya bir Microsoft SQL Server veritabanında yeralan verilerin görülmesini, bu verilere ek yapılmasını, değiştirtilmesini veya başka bir surette işlenmesini mümkün kılıyor. Bir 1 başka deyişle, Access’i kullanarak bir veri tabanı oluşturun, veya Access ile erişebildiğiniz bir SQL Server dosyasını alın ve bu verilere dayanan bir “veri erişim sayfası” hazırlayın. Sonra bunu ister Internet’te koyun, ister firmanızın dahili Internet’ine (Intranet). Bu sayfaya ulaşan herkes, verdiğiniz yetki çerçevesinde sayfanın veri çektiği veritabanındaki bilgileri alabilir, değiştirebilir, ekleyebilir. (Şu noktada, veri-yönlendirmeli Internet Uygulaması tasarım ve geliştirme işi için vereceğiniz 5 bin Dolar’ı tasarruf etmiş bulunuyorsunuz!) Access 2000’i kurduğunuz zaman gerekli unsurlardan ve araçlardan hemen hepsi kurulmakla birlikte, Acces ile hazırlayacağınız formlarda kullanabileceğiniz temalardan bazı, sık kullanılmayan bazı sihirbazlar, Microsoft’un armağanı Adres Defteri uygulaması, sağdan sola yazılan dil desteği, Görsel Tasarım Araçları denen özellikle veri erişim sayfası yapmakta kullanabileceğiniz programcıklar, tarayıcı ve kamera desteği, Visual Basic yardım desteği ve Windows’un yeni makro dili olmaya başlayan Windows Scripting’i oluşturmanızı ve kullanmasını sağlayacak Editör, kurulmayacaktır. Bu araçlar ve programlar ancak ilk kez ihtiyacınız olduğunda yüklenir. Bu arada veritabanlarınızda takvim desteği için gerekli dosyalar, denklem editörü, uluslararası destek dosyaları, Lotus desteği, Microsoft Photo Editor, (ve meşhuur Northwind proje dosyaları) siz istemedikçe kurulmayacaktır. Bu destek dosyalarına ihtiyacınız olup olmadığına siz karar vereceksiniz. Ama bu daha sonra. Bundan önceki Office 2000 ailesi programlarla ilgili kitapçıklarda belirttiğimiz gibi, Access dünyasına Access 2000 ile adım atıyorsanız, bu kitapçıkla Access’i derhal kullanmaya başlayacaksınız. Access zaten kullandığınız bir program ise bu kitapçık size sadece yeni Access araçlarını tanıtma açısından yararlı olabilir. Fakat, kimbilir, bugüne kadar el yordamıyla yaptığınız bir çok şeye yeni bir anlam kazandırabiliriz! Bu kitapçığın düzenlenmesinde, programın işlevsel özelliğine uygun bir ders kitabı ve daha sonra başvurulabilecek küçük bir hatırlatma kaynağı sağlama ilkesini güttüm. Ama Access, bu hacimde bir kitapla sadece tanıtılabilir. Diğer Office programlarının çehresini tanıyorsanız, Access 2000’in menü ve araç çubukları size hiç de farklı görünmeyecektir. Sadece Access dosyalarının veri-tabanı dosyası olmasının sonucu farklı bir kaç menü maddesi görebilirsiniz. Buna karşılık programın çalışma alanı diğer programlardan oldukça farklıdır. Access 2000, bütün Windows 95/98 programları gibi çeşikli yollarla başlatılabilir. Masaüstü’nde Access simgesi varsa, bu simgeyi iki kere tıklayarak programı açabileceğiniz gibi, Başlat menüsünden Programlar’ı ve 2 açılacak listede Microsoft Access’i seçebilirsiniz. Office 2000, Başlat menüsüne Yeni Ofis Belgesi ve Ofis Belgesi Aç maddelerini de koyar. Bu maddeleri kullanarak Ofis ailesine ait herhangi bir programı çalıştırabilirsiniz. Tabiî, Access’in oluşturduğu (uzatması “.mdb” olan) herhangi bir dosyayı iki kere tıklayarak da Access’i başlatmanız mümkündür. Access de bütün Windows programları gibi kendi penceresinde açılır ve bu pencereyi istediğiniz gibi bütübelir, küçültebilir, simge durumuna getirebilir veya tüm ekranı kaplatabilirsiniz. Access penceresinde kullanacağımız unsurları şöyle sıralayabiliriz: Menü Çubuğu: Access 2000’in bütün kontrol unsurları, komutları ve diyalog kutuları menülerden açılır. Bütün Office 2000 programları gibi Access’in menüleri de sizin kullanım tarzınıza göre biçimlenir. Menü maddelierini tıkladığınızda açılan listelerde önce en sık kullanılan maddeler yer alır. Bir menü açıldığında herhangi bir seçim yapmaz ve bir saniye beklerseniz, listenin uzadığını ve daha seyrek kullanılan maddelerin de görüntülendiğini göreceksiniz. Eğer beklemek istemiyorsanız, Mouse işaretçisini doğruca listenin, ortasında ucu aşağı bakan bir ok bulunan alt kenarına sürükleyin; liste derhal uzayacaktır. İlk açılan maddeler yerine daha sonra açılan maddeler arasında seçim yaparsanız, Access 2000 bu tercihinizi öğrenecek bir dahaki sefere bu maddeyi ilk açılan listeye koyacaktır. Sık kullandığınız maddeler ise listede yukarı doğru terfi ederler. Menü çubuğunda yer almasını istediğiniz bir komut varsa, bu komutu ayrı bir menü unsuru olarak olarak veya mevcut menülerden birine madde olarak ekleyebilirsiniz. Araçlar menüsünden Özelleştir maddesini ve açılacak kutuda Komutlar sekmesini seçin; Komutlar bölümünden menü çubuğunda olmasını arzu ettiğiniz komutu Mouse işaretçisiyle tutarak, menü çubuğunda arzu ettiğiniz yere bırakın. Bu komutun mevcut menülerden birinde yer almasını istiyorsanız, Mouse işaretçisini menü başlığıın üzerinde bir süre tutun, menü açıldığında leni komutu arzu ettiğiniz sıraya bırakın. Menüler “uzun” açılsın istiyorsanız.. Eski usul menülere alıştı iseniz ve menülerinizin ilk açıldığında bütün maddeleri ile birlikte açılmasını istiyorsanız, Araçlar menüsünden Özelleştir maddesini, ve açılacak kutuda Seçenekler sekmesini seçin: Burada, “Menüler Önce son kullanılanı gösterir” maddesinin önündeki işareti kaldırın. Son kullanılan menü maddelerinin yukarılarda yer almasını istiyor, fakat menünün iki aşamada tamamlanmasını 3 istemiyorsanız, “Kısa bir gecikmeden sonra tam menüleri göster” maddesinin işareti kaldırabilirsiniz Araç Çubuğu: Access 2000’in 23 ayrı araç çubuğu vardır ve hepsini açtığınızda muhtemelen veri penceresi için yer kalmayacaktır! Ayrıca araç çubuklarındaki simgeleri değiştirebilirsiniz. Sözgelimi, varsayılan olarak açılan “Menü çubuğu” adlı araç çubuğunda yer alan bir simgeyi hiç kullanmadığınız için istemiyorsanız veya yeni bir komutu simge halinede çubuğa almak istiyorsanız, Araçlar menüsünden Özelleştir maddesini ve açılacak kutuda Araç Çubukları sekmesini seçin. Kutu açıkken, araç çubuğunda istediğimiz simgeyi Mouse işaretçisiyle tutarak, çubuk dışında bir yere bırakın. Araç çubuğuna eklemek istediğiniz komut varsa, Özelleştir kutusu açıkken, Komutlar sekmesini seçin; Komutlar bölümünden araç çubuğunda olmasını arzu ettiğiniz komutu Mouse işaretçisiyle tutarak, araç çubuğunda arzu ettiğiniz yere bırakın. Bu suretle eklediğiniz yeni simgenin resmini değiştirmek de elinizdedir. Henüz oluşturduğunuz simge seçili iken, Komutlar sekmesindeki Seçimi Değiştir düğmesini tıklayarak ve açılacak menüden arzu ettiğiniz simgeyi seçebilirsiniz: Veritabanı Penceresi: Access’te açtığınız veritabanları, ana pencere içinde kendi pencerelerinde, kendi menüleri ve kendi komutları ile yer alırlar. Bu pencerenin ögelerini aşağıda ele alacağız. Durum Çubuğu: Access, programın işlemesine, Veritabanının durumuna ve yapmak istediğiniz işlere ilişkin mesajlarını size penceresinin elt çerçevesindeki durum çubuğunda bildirir. Access’e bir şey yaptırmak istiyorsanız ve Access bu komutu yerine getirmek istemiyorsa, muhtemelen sebebini Durum Çubuğu’nda belirtiyor olabilir. Bu çubuktaki bilgilerden yararlanabilirsiniz. Ofis Yardımcısı: Access 2000, Menü çubuğundaki Yardım menüsünün şirin ve kullanımı daha kolay temsilcisi olarak size 8 yardımcı sunuyor. Yardımcıyı her an tıklayarak soru kutusunu açabilirsiniz. Access 2000 Ofis yardımcısı, düzgün bir Türkçe soru cümlesini anlayıp, size doğru cevabı vereibilir. Ama bunun için önce sizin Ofis Yardımcısının anladığı soru tarzına biraz aşina olmanız gerekiyor. Klasik Windows yardım kutusu da Yardım menüsü vasıtasıyla açılabilir. Bu kutuda Dizin ve Ara sekmeleri bazen Ofis Yardımcısı’ndan daha hızlı sonuca ulaşmanızı sağlayabilir. (Veritabanı ile uığraşmaktan çok sıkıldığınız bir an, Ofis Yardımcısı sağ tıklayıp, Oynat maddesini seçebilirsiniz! Veritabanı Penceresi Access’de açık her veritabanı için bir veritabanı penceresi bulunur. Veritabanı, yaptığınız işe bağlı olarak bu pencerenin içinde veya dışında ayrı bir pencerede görüntülenebilir. Bu “görünümler” çoğu zaman 4 Veritabanı penceresi içinde yaptığınız tercihlere bağlıdır. Veritabanı penceresinin unsurlarını ele alalım. Veritabanı penceresinin kendi menü çubuğu vardır; ancak bu çubuktaki unsurlarla sadece ait olduğu veritabanına ilişkin işler yapabilirsiniz. Örneğin bu çubuktaki Aç simgesi, veritabanının seçilmiş olan nesnesini (tablosunu, formunu, raporunu, sorgusunu, sayfasını, sorgusunu veya modülünü) açar. Tasarla maddesiyle, mevcut nesnelerden birinin tasarımını değiştirebilirsiniz. Yeni maddesi ise bazı sihirbazları veya tasarım görünümünde yeni tablo ve rapor yapımını harekete geçirecek maddeler içeren bir diyalog kutusu açar. Sil simgesi ise seçilmiş nesneyi siler. Veritabanı penceresinin dört görünüm belirleme simgesi ise, veritabanı penceresinin içindeki nesnelerin büyük veya küçük simge halinde ya da kısa veya ayrıntılı liste olarak gösterilmesini sağlar. Yukarıdaki örnekte, ayrıntısız liste görünümü var. Ayrıntılı listede nesnenin adı, tanımı, oluşturma ve değiştirme tarihleri ile türü gösterilir. Silinen tablo ne olur? Veritabanı penceresindeki büyük X harfi görünümündeki simge, tablo, form, rapor gibi seçilmiş bir nesnenin silinmesini sağlar. Araçlar menüsünde, Seçenekler maddesini ve bu kutuda Düzen/Bul sekmesini tıklayarak ve buradaki Onayla bölümünde en azından “Belge silmeyi” maddesini işaretlemezseniz, silinen nesne, silinmiş olur. Bu yüzlerce kişinin aylarca süren emeği ile hazırlanmış ve her nedense yedeği bulunmayan bir tablo olabilir. Çoğu zaman kazayla silinen nesnelerin yer aldığı veri tabanlarının yedeği bulunmaz! Bir onay kutusunda Evet düğmesini tıklamak, böyle bir kayıpla karşı karşıya kalmaktan daha az zahmetli olsa gerek! Access içinde sildiğiniz nesnenin geri gelmeyeceğini unutmayın! Veritabanı dendiği zaman aklımıza genellikle sadece tablolar gelir. Oysa veritabanı, en azından veriler arasında seçme yapmayı sağlayan sorgu (query) araçları da içermelidir. Yoksa veritabanının bir kelime işlemciyle oluşturacağınız listeden farkı olamaz. Access 2000 veritabanı dendiğinde bir çok nesneyi birden anlar. Bu nesneler, birarada, veritabanını oluşkurular. Bir veritabanında bulunabilecek nesneleri ilerde ele alacağız. Fakat şimdilik veritabanını tablolar demeti olarak düşünün. Access tablosu, sizin tayin ettiğiniz sayıda sütun ve yine sizin bilgi girdiğiniz miktarda satırdan oluşur. Access’te veritablosu yapmayı da ilerde ele alacağız. Access size tablolarımıza bilgi girmek veya bu bilgileri düzenlemek için sorgu, form, modül ve makro adında araçlar 5 sunar. Tablolar ve bu araçları kullanarak oluşturacağınız sorgular, formlar, modüller ve makrolar, veritabanızın nesneleridir. Bir veritabanında şu nesneler bulunabilir: 1. Tablolar: Verilerinizin içinde bulunduğu listeler. Yeni bir veritabanı dosyası oluşturmak üzere Access 2000’i çalıştırdığınızda açılan boş veritabanı penceresinde, tablo oluşturmak üzere üç komut kısayolu veya araç görürsünüz. Bunlar, “Tasarım görünümünde tablo oluştur,” “Sihirbazı kullanarak tablo oluştur” ve “Veri girerek tablo oluştur” adını taşır. 2. Sorgular: Verilerinizi tablolar halinde ortaya çıkarttıktan sonra, bu verilerden yeni seçmeler yapmak, belirli bir ölçükü (kriteri) karşılaşılayan veya karşılamayanları seçmek ve benzeri veri-işlemlerini sorgu (Query) aracıyla yaparsınız. Access 2000, “Tasarım görünümünde sorgu oluştur” ve “Sihirbazı kullanarak sorgu oluştur” adlı iki araçla sorgu oluşturmanızı sağlar. 3. Formlar: Veri girme veya veri-işlem işlerinizi kolaylaştıran araçlardır. Formu, veritabanınızdaki bilgilere denk kutular içeren bir tür grafik arayüz sayabilirsiniz. Access 2000, “Tasarım görünümünde form oluştur” ve “Sihirbazı kullanarak form oluştur” adlı iki araçla form oluşturmanızı sağlar. 4. Raporlar: Verilerinizin bir bakıma ham liste halinde kurtarılıp, anlamlı diziler haline getirilmesine rapor çıkartma denir. Access 2000, “Tasarım görünümünde rapor oluştur” ve “Sihirbazı kullanarak rapor oluştur” adlı iki araçla rapor oluşturmanızı sağlar. 5. Sayfalar: Veri erişim sayfaları. Access 2000’in yeniliklerinden olan sayfalar bundan böyle veritabanı dosyalarınızın bir parçası olarak, veriye bağlı, vergi güncelleştirildikte yenilenen Web sayfaları hazırlama imkanı sunuyor. Access 2000, “Tasarım görünümünde veri erişim sayfası oluştur,” “Sihirbazı kullanarak veri erişim sayfası oluştur” ve “Zaten varolan Web sayfasını görüntüle” adlı üç araçla veri erişim sayfası yapmanızı veya varolan sayfayı yeniden düzenlemenizi sağlar. Makrolar, modüller: Tıpkı kelime işlem programlarında olduğu gibi, sık sık tekrar ettiğiniz işlemleri, makro ve modül haline getirebilir ve bunları uygun olan herhangi bir tablo, form veya sorguda kullanabilirsiniz. Makro ve modülleri geliştirme işi ya otomatik olarak Access tarafından yapılır; ya da siz Visual Basic for Applications (Uygulamalar için Görsel Basic dili) editörünü kullanarak kendiniz makro ve modül oluşturabilirsiniz. Görünümler Bir veri tablosu, Access’te çeşitli görünümlere sahip olabilir, veya başka bir deyişle veritabanınızı farklı biçimlerde görüntüleyebilirsiniz. 6 Access’te tablolarınız genellikle veritabanı görünümde bulunur; bununla birlikte tablolar form görünümünde de işlenebilir, doldurulabilir, düzenlenebilir. Veritabanı görümünde, bir Access tablosu ile sözgelimi bir Excel tablosunun farkını ayırt etmek zordur. Bu görünümde tablonun çerçevesinin üst kenarında adı yazılı olur; bunun hemen altında ise tablodaki alan adlarının bulunduğu başlık bölümü vardır. Kayıtlar ise tablonun satırları olarak sıralanır. Tablonun sağ ve alt kenarlarında kaydırma çubukları bulunur. Tablonun alt çerçevesinin son köşesinde Gezinme Düğmeleri yer alır. Bu düğmeleri kullanarak tablodaki kayıtlar arasında gidip gelebilirsiniz. En soldaki düğme ile en başa, en sağdaki ikinci düğme ile de en sona gidersiniz. Üzerinde yıldız bulunan sağdaki düğme ise size yeni bir kayıt girmeniz için boş satır açar. Ayrıca buradaki kutuya istediğiniz kaydın sıra numarasını yazarak, doğruca o kayda gitmeniz mümkündür. Access 2000 kurulduğu sırada bilgisayarınıza örnek bazı veritabanları ve hatta kullanılmaya hazır veri-yönlendirmeli iki Access-uygulaması kurar. (contacts.mdb ve addrbk.mdb) Bu örnek veritabanlarını açtığınızda büyük bir ihtimalle, birinci sütunun solunda içinde artı (+) işareti olan bir sütun göreceksiniz. Bu, o kaydın başka tablolarla ilişkilendirilmiş olduğunu gösterir. Access 2000’le gelen bu yenilik ve kazandırdığı imkanlar üzerinde sonra ayrıntılı duracağız. Access veritabanı, tablo olarak görüntülenebildiği gibi, Form olarak da görüntülenebilir. Access 2000, veri tablolarınızı alarak, form biçimine getirebilir veya bunu size bırakabilir. Access’in otomatik oluşturduğu tabloları sonradan yeniden şekillendirebiliriz. Bir tablona hangi alanlar ve bu alanların karşısında ne değerler varsa, formda da onlar bulunur. Formlarda da gezinme düğmeleri yer alır. Access’in bir diğer veri görüntüleme biçimi ise sorgulama sonucu ortaya çıkar. Sorgu (query) veritabanı dosyasındaki tablo veya tablolardan seçme yapmak demektir. Seçme işlemi için ölçütleri (kriterleri) “Şu tablodan şu alanları al!” diye mutlak biçimde siz belirtebileceğiniz gibi, “Şu alandaki değer şu ise, şundan aşağı ise, bundan yukarı ise, veya bu değilse..” şeklinde “mantıksal” olarak da tanımlayabilirsiniz. Access 2000, bu ölçütlere uyan kayıtları seçerek bir “sorgu sonucu” oluşturur; bu sonuç veritabanı dosyasına tablo olarak kaydedilebilir; veya sadece siz sorguyu çalıştırdığınız sırada ortaya çıkar; sorgu işlemi bitince yok olur. 7 Mouse’unuzun sağ düğmesi Access 2000, diğer Ofis 2000 programları gibi, Mouse’un sağ düğmesine çeşitli işlevler yükler. Mouse’un sağ düğmesi, üzerinde sağtıkladığınız nesnenin gerektirdiği bir yerel menü açılmasını sağlar. Bu menüler arasındaki farkı görebilmek için veritabanı penceresinde farklı nesneleri sağ-tıklayın. Ve Yardım Access 2000 ile çalıştığınız sırada ne yapıyor olursanız olun, klavyede F1 düğmesine basarak, yardım dosyasını açabilirsiniz. Ofis Yardımcısı adı verilen simge, o anda yapmakta olduğunuz işlemle ilgili bir kaç hazır yardım konusu başlığının yer aldığı ve bunlar yeterli değilse kendi sorunuzu yazmanıza imkan veren bir diyalog kutusu açacaktır. Ofis 2000 ailesi programlarının yardım dosyalarında yapılan yenileme sonucu artık yardım istediğiniz konuyu mutlaka yardım dosyasının şifreli ifadeleriyle yazmanız gerekmiyor. Bu kutuya normal bir soru yazabilirsiniz. Araştır düğmesini tıkladığınızda, büyük bir ihtimalle tam aradığınız konuya uygun bir başlığın yer aldığı bir kaç yardım konusu liste halinde karşınıza gelecektir. Ofis Yardımcısı’nın diyalog kutusundaki Seçenekler düğmesini tıklarsanız, Yardımcı için farklı simgeler seçebilirsiniz. Ofis Yardımcısının sağladığı hızlı yardım yeterli olmadığı anlarda, arama ve dizinden geçme gibi diğer bazı imkanları olan yardım kutusunu açabilirsiniz. Bunun için Yardım menüsünden Microsoft Access Yardım maddesini seçmeniz gerekir. Yardım gereken konunun anahtar kelimelerinin ne olabileceği hakkında şüphede iseniz, bu kutuda İçindekiler sekmesini tıklayarak bütün yardım konularını ana başlıklar halinde inceleyebilirsiniz. Bu kutuda ikinci sekme olan, Cevap Sihirbazı ise Ofis Yardımcısı gibi, düzgün bir Türkçe soruyu anlayabilir! (Kurulu Windows sisteminizin varsayılan dili Türkçe değilse, Ofis Asistanı, soru yazmanıza imkan veren kutuyu görüntülemeyecektir.) Dizin ise kelime aratmak için kullanılır. Bunu iki ayrı şekilde yapabilirsiniz. Önce arama yapılmasını istediğiniz kelime veya kelimeleri arama kutusuna yazın. Access 2000, kendi dizininde buraya yazdığınız kelimelerle ilgili gördüklerini iki numaralı kutuya yazacaktır. İsterseniz bu kutudaki bir kelimeyi de işaretleyebilirsiniz. Sonra Ara düğmesini tıklayın. İçinde yazdığınız veya seçtiğiniz kelimelerin geçtiği yardım metinlerinin başlıkları üçüncü kutuda sıralanacaktır. Bu kutudaki başlıklardan size uygun görüneni iki kere 8 tıklayın; yardım metni sağdaki çerçevede görüntülenecektir. Yardım kutusunun kendi araç çubuğundaki yazıcı simgesini tıklayarak, görüntülediğiniz metni yazıcıya gönderebilirsiniz; ileri-geri simgelerini tıklayarak önceki ve sonraki yardım metinleri arasında gidipgelebilirsiniz. Şimdi Access 2000’in yüzünü tanımış oldunuz. Aşağı yukarı hangi düğmenin ne yapacağını biliyorsunuz. Şimdi sıra Access’e bunları yaptırtmaya geldi Access 2000’i tanıdık diye hemen veri tabloları oluşturmak ve onlarla sihirbazlık yapmak için henüz erken. Önce veritabanı planlama konusundan söz etmemiz gerekiyor. Dikkatlice planlanmamış bir veritabanı kullanıcıya yarardan çok zarar getirir. Veri planlama, daha sonra verinin nerede ve nasıl kullanılacağına dayanır. İmkansız olmamakla birlikte çok az veritabanı ilk amacının dışında kullanılabilecek hale getirilebilir. İyi bir planlama ise önce veritabanı terimlerine aşina olmayı gerektirir. Şimdi kısaca bu terimleri ele alalım. Veri ve Alan Access 2000 ile kaydedeceğiniz ve kullanacağınız bilgilere veri denir. Access açısından veriler, ait oldukları alanın türünde sayılır. Bir alan sayı içeriyorsa, “123456789” sayıdır. Bir alan metin içeriyorsa “123456789” metindir. Access 2000’de verileriniz şu türlerden birine girmek zorundadır: Metin: Rakam, harf veya işaretlerden oluşan ve 255 karakter genişliğinde bir alandır. Metin olarak tayin edilmiş bir alana yazılan rakamlar, sayı işlemi görmez; yani aritmetik işleme konu olamaz. Metin alanları, belirlediğiniz (nasıl belirleyeceğimize sonra geleceğiz) genişliğin üstünde karakter tutamazlar. Söz gelimi bir metin alanını 8 karakter boyutunda oluşturduysanız, bunun içine “Mustafa Durcan” yazamazsınız. İyi bir veritabanı tasarımı, daima gerektiğinden biraz fazla geniş boyut tayinini gerektirir. Not: Metin alanı olmakla birlikte, 64 bin karakter alabilir. Sayı: Her türlü aritmetik işleme konu olabilecek sayıları tutar. Tarih/Saat: Belirlemenize göre, tarih veya saat veya her ikisini birden tutabilen özel bir alandır. Para Birimi: Türk lirası, Dolar, Alman Markı, Japon Yeni ve dünyada bulunabilecek hemen hemen bütün para birimlerine tayinh edilebilecek 9 özel bir alandır. Para birimi verilerinizi gireceğiniz alanın Currency olması, Access 2000’in bu verilerle para biriminin gerektirdiği biçimde hesap yapmasını sağlar. Otomatik Sayı: Access 2000 tarafından artan şekilde otomatik olarak doldurulan bir alandır. Bir veritabanında her bir kaydın (satırın) diğerlerinden mutlaka ayırıcı bir niteliği olması gerekir. Herşeyiyle aynı iki kayıt, otomatik sayı alanının farklılığı sayesinde birbirinden ayrılabilir. Evet/Hayır: İçindeki değer Evet veya Hayır ya da Doğru veya Yanlış olabilen, mantıksal işlemlerde kullanılan bir alandır. OLE Nesnesi: Access 2000’in veritabanında bir başka program tarafından oluşturulmuş nesnelere yervermenizi sağlayan alan türüdür. Köprü: Internet sitelerinde bulunan sayfaların adresi (URL), Access 2000 tarafından bağlantı sağlanacak biçimde tutulabilir. Arama Sihirbazı: Bir alana doğrudan vergi girmek yerine, Access’in Arama Sihirbazı yardımıyla bu veriyi bir tablodan veya sorgu sonucundan seçmesini sağlayabilirsiniz. Her Rakam Sayı Değildir Sık kullanacağınız bazı bilgilerin alan türleri şöyle olmalıdır: Ad, soyad: Metin Adres: Metin Kapı, apartman daire no: Metin Telefon no: Metin Elektronik adres: Metin Aylık gelir, fiyatı, tutarı: Para birimi Yaş: Sayı Personel sayısı: Sayı Web Sitesi : Bağlantı Kayıt Veritabanındaki bir birim bilgi kümesine kayıt denir. Örneğin okuldaki derslerinizde sınıvlarda, ödevlerde aldığınız notları tutan bir veritabanı tasarlıyorsanız, her bir ders bir kayıt olabilir. Buna karşılık bir öğretimenin sınıfındaki öğrenciler için tuttuğu veritabanında, her bir öğrenci bir kayıt olabilir. Access ile kendinize bir adres defteri yapıyorsanız, her kişi veya firma bir kayıttır. Veri alanlarınızı belirlerken, bazı alanları “boş olabilir” şeklinde tanımlamışsanız, telefon defterinizdeki her kaydın her alanı dolu olmayabilir; örneğin bazı kişilerin faks numarası veya elektronik posta adresi olmayabilir. Buna karşılık veri alanlarını belirlerken bazı alanlara boş olma yasağı 10 getirmişseniz, tablolarınızı doldururken Access 2000 bu alana mutlaka alanın niteliğine uygun bir değer girmenizi şart koşacaktır. Tablo Tablo, (boş veya dolu) aynı alanlara sahip kayıtlar kümesidir. Notlarınızı tuttuğunuz dosyada 1999-2000 ders yılı notlarınız bir tablo oluşturabilir. Bir öğretmen için Lise 3 Türk Edebiyatı sınıfındaki öğrenciler bir tabloda toplanabilir. Fakat öğretmen isterse kız ve erkek öğrencileri aynı tablolara da alabilir. Daha sonra değineceğiz, bir veritabanında aynı kişiye, aynı sınıfa, yani aynı birime ait kayıtların tümü tek tabloda bulunmayabilir. Bu sebeple, tablo dendiği zaman, sadece birbirine benzeyen verileri olan kayıt kümesi aklımıza gelmelidir. Burada birbirine benzeyen tanımına dikkat edin: Diyelim ki elimizde üç kişilik bir bilgi kümesi var. Bu üç kişiye ait bilgileri, adı, soyadı ve cinsiyeti diye üç alanda toplamaya karar verdik. Bu üç kişinin de bu üç haneye yazılacak bilgisi benzer bilgilerdir. Bilgilerin içerikli çok farklı olabilir; birinin adı Mustafa, diğerinin Osman, üçüncüsünün ise Vildan olabilir. İlk ikisi için tablomuyaz “erkek,” üçüncüsü için “kadın” yazmamız gerekebilir. Fakat bu üç kişi bir arada, bir tablo oluşturabilir. Veritabanı Çeşitli tablolardan oluşan ve bir Access 2000 dosyayı halinde toplanan bilgi kümesine veritabanı deriz. Bir veritabanının içinde birden fazla tablo bulunabilir. Bu tablolar birbiri ilişkilendirilmiş olabilir; ilişkilendirilmemiş olabilir. Bir veritabanında tablolar birbiri ile ilişkilendirilmemiş ise buna düz veritabanı, tablolar ilişkilendirilmiş ise (doğru bildiniz!) ilişkilendirilmiş veritabanı denir. Eğer veritabanı tasarımının bir tek püf noktası varsa, o da ilişkilendirilmiş tablo meselesini kavramaktır. Düz Veritabanı: Bir tablonun bütün alanlarına dair bütün bilgiler kendi içinde ise bu tabloya düz tablo, bu dosyaya düz dosya ve bu veritabanına da düz veritabanı denir. Diyelim ki elimizde, “Adı,” “Adresi” ve “Telefon numarası” alanlarını içeren bir tablo var. Ve diyelim ki Mustafa’nın 1, Osman’ın 2, Vildan’ın da 3 telefonu var. Bu durumda Mustafa listemize bir kere, Osman iki kere, Vildan ise üç kere yazılacak demektir. Düz tablolarda tekrarlar olur. İlişkilendirilmiş Veritabanı: Düz tablolardaki tekrarı önlemek ve böylece veritabanının daha az yer tutmasını dolayısıyla sorguların daha hızlı icra edilmesini sağlamak amacıyla, tabloları ilişkilendiririz. Yukarıdaki örneğe dönersek, Osman’ın adını ve adresini iki, Vildan’ın adını ve adresini üç kere göstermek yerine, bütün kişileri bir tabloda adları ve adresleri ile 11 toplar, bir diğer tabloya ise telefon numaralarını yazan ve her bir numarayı kişiler tablosunda bir kayıtla ilişkilendirirsek, her kisini de veritabanımız dosya olarak çok daha az yer tutar. Bunu “Anahtar alan” veya “Birincil anahtar” (Primary key) adını verdiğimiz teknikle sağlarız. Her tabloda her bir kaydı diğerlerinden benzersiz hale getiren, yani diğer hiç bir satırda aynısı bulunmayan bir alan olmalıdır. Bu nitelikteki bir alanı Birincil Anahtar olarak tayin edebiliriz. İlişkilendirilmiş bir veritabanında, her bir kayıt, bir alanından diğer bir tabloya bağlanır. Bu bağlamanın kayıtların benzersiz alanlarından yapılması yanlış bağları önleyecektir. Yine yukarıdaki örneğe dönelim. Mustafa’ya 1, Osman’a 2 ve Vildan’a 3 numaralı kişi diyelim; Elimizdeki bütün telefon numaralarını altalta yazar (telefon numaralarını kayıt yani satır olarak düşünün) ve karşılarına ait oldukları kişinin numarasını yazarsak, her bir telefonun kime ait olduğunu kolayca buluruz. “Kolayca” tabiî sözün gelişi; fakat bu durumda veri tabanı dosyamız çok daha az yer tutar. Meraklısı için not: Tablolarınız Normal Mi? İlişkilendirilmiş veritabanı dosyası daha az yer tutmakla birlikte, veritabanı tablolarımızı ilişkilendirmemizin tek sebebi bu değildir. Haziran 1970’te Edgar Codd adlı bilgisayar mühendisi, elektronik veri bankalarının devasa boyutlara ulaşmasını fakat yine de küçük bir terminalde işlenebilmesini sağlayan bu modeli ortaya attığında, bütün veritabanları, örneğin, Adı, Soyadı, Adresi, TelNo1, TelNo2, TelNo3.. şeklinde fazlalık ve boşluk içeren düz, birbiri ardına disket yazılmış kayıtlardı. Codd, veri parçacıkların, örneğin kişino=telno şeklinde ad=değer çiftleri halinde yazılmasını önerdi. Bu bilgisayarın ana işlemcisinin (CPU) daha hızlı hesap yapmasını sağladığı gibi insan hatası faktörünü de azaltıyordu. (Aynı kişinin üç telefon numarası için üç ayrı yerdeki adresinin de düzeltilmesi yerine bunu bir yerde yapmak daha güvenli!) Codd’ın sistemi, verilerin tutarlılığını da sağlıyordu. Veritabanı dosyalarında bilgi tutarlılığı, bir veritabanında ad=değer şeklinde bütün çiftlerin bir Birincil Anahtar dediğimiz ad’a ve bu ad’ın tabloda başka hiç bir kayıtta bulunmayan bir değere sahip olması gerekir. (Çünkü veritabanı ile çalırken ad=değer çiftlerini başka türlü tanımamız mümkün değildir. Bu disk üzerine yazılırken verilerimizin sıra veya yer kaygısı gütmeden yazılmasını sağlar.) Böylece hiç bir kayda ait olmayan ad=değer çiftçi bulunmuyor, ve hiç bir kaydın eksik alanı olmuyor (boş olabilir; bu eksik demek değildir.) Codd’ın bu buluşu 12 veri-işlem alanında devrim sayılır. Codd’un zamanla geliştirilen modelinin beş ilkesi vardır: 1. Her bir değer müstakil olmalıdır (Bir kutuda üç telefon numarası birden bulunmamalıdır). 2. Ad=değer çiftleri Anahtar Değer (Birincil Anahtar) vasıtasıyla birleştirildiğinde ortaya başka bir kayda benzemeyen kayıt çıkmalıdır. (Aksi taktirde Birincil Anahtar özgün demek değildir!) 3. Bir değerin hangi kayda ait olduğu sadece bir Anahtar Değere (Birincil Anahtar’a) bakılarak bilinmelidir. (Bir telefonun ait olduğu kişiyi belirlemek için hem adına, hem adresine bakmak zorunda isek, aynı adda birden fazla kişi var demektir; kendimize yeni bir Birincil Anahtar bulmak zorundayız.) 4. Hiç bir kayıt, aynı ad için birden fazla değer almamalıdır. (Bir kişinin beş çocuğu varsa, 3 oğlu, üç kızı olamaz!) 5. Bir tablo, artık tekrar ikiye veya daha fazla tabloya bölünemeyecek kadar fazlalıktan arındırılmış olmalıdır. Bu beş ilkeye tabloların Normalleştirilme Kuralları, buna uygun hale getirilmiş tablolara Normal Tablolar ve işleme de Normalizasyon denir. Basit bir adres defteri yaparken, herkese üç telefon, bir faks ve bir de cep telefonu hanesi açmak ve bazı kişiler için bazı sütunları (alanları) boş bırakmak daha kolay bir çözüm olabilir. Bununla birlikte daha sonra uygulama programlarına veya Web sayfalarına temel olacak veritabanları geliştirirken, ilişkilendirilmiş tablolar kullanmak daha doğru olur. İlişkilendirmenin ilkelerinden, ilerde tablolarlarımızda ilişki kurarken söz edeceğiz. Tablo Tasarımı İyi bir veritabanı tasarımı, iyi düşünülmüş tablo tasarımı ile başlar. Bu ilke uygulamada şu anlama gelir: Mouse işaretçisini Access simgesi üzerine doğru götürmeden önce, elinize bolca kağıt, bir de kalem alın ve başlayın tablo tasarımına. (Kağıdınız kareli, kaleminiz de kurşunkalem olursa ve elinizin altında bir de silgi bulunursa, tablo tasarımınızın başarılı olacağını şimdiden garanti ederim!) Önce kağıda bu veritabanı projesinin sonunda ortaya çıkmasını istediğiniz liste, rapor ve diğer ne türlü belge varsa, hepsini başlıklar halinde yazın. Bu kağıdı önünüze koyun ve ayrı sayfalara buradaki her bir maddenin kağıda döküldüğünde nasıl görünmesini istiyorsanız o şekilde görünümünü çizin. İstediğiniz başlıkları, altbaşlıkları, sütunları ve satırları belirtin. Sonra bu sayfalarda gördüğünüz şekillere bakarak, 13 alanları (sütun başlıklarını) listeleyin. Örneğin, kendinize bir telefon defteri-temas çizelgesi hazırlıyorsanız, alan tanımlarınız şöyle olabilir: 1. Sıra no = otomatik sayı 2. Adı = metin, 20 karakter boyutunda, boş olamaz 3. Soyadı = metin, 20 karakter boyutunda, boş olamaz 4. Adres Satır 1 = metin, 30 karakter boyutunda, boş olabilir 5. Adres Satır 2 = metin, 30 karakter boyutunda, boş olabilir 6. Şehir = metin, 20 karakter boyutunda, boş olabilir 7. Posta kodu = metin, 5 karakter boyutunda, boş olabilir 8. Ülke = metin, 20 karakter boyutunda, boş olabilir 9. Doğum tarihi = tarih (otomatik olarak boyutlanır), boş olabilir 10. Doğum gününde kart yollayacak mıyım= evet/hayır, boş olabilir 10. Eşinin Adı = metin 20 karakter boyutunda, boş olabilir 11. Çocuk 1 Adı = metin 20 karakter boyutunda, boş olabilir 12. Çocuk 2 Adı = metin 20 karakter boyutunda, boş olabilir 13. Çocuk 3 Adı = metin 20 karakter boyutunda, boş olabilir 14. Çocuk 4 Adı = metin 20 karakter boyutunda, boş olabilir 15. Ev telefon no = metin, xxxx-xxx-xxxx biçiminde, boş olabilir 16. İş telefon no = metin, xxxx-xxx-xxxx biçiminde, boş olabilir 17. Cep telefon no = metin, xxxx-xxx-xxxx biçiminde, boş olabilir 18. Faks no = metin, xxxx-xxx-xxxx biçiminde, boş olabilir 19. En son ne zaman görüştüm = tarih, boş olabilir 20. Son güncelleme tarihi = tarih, boş olamaz Alan listesini tamamladıktan sonra bu alanlar, bir tabloda mı toplanmalı, birden fazla tabloya mı bölünmeli sorusuna cevap verin. Yukarıdaki örnekte iki noktadaki aksaklığı görmüş olmalısınız. Birinci aksaklık çocuklarla, ikinci aksaklık telefon numaralarıyla ilgili. Önce birinci sorunu ele alalım. Beş çocuklu bir dostunuzun beşinci çocuğu bu listeye yazılamaz. O halde buradaki 16 alan en azından iki tabloya bölünmeli; çocuklara ilişkin olan alanlar dışındaki bütün alanlar “Aileler” tablosunda toplanmalı, bütün çocuklar “Çocuklar” adlı tabloda yer almalıdır. Çocuklar tablosunun alanları ise şöyle olabilir: 1. Sıra no = otomatik sayı 2. Çocuğun adı = metin, 20 karakter boyutunda, boş olamaz 3. Çocuğun ailesi kimliği = metin, 20 karakter, boş olamaz Şimdi burada başka bir sorun var: çocuğun aile kimliği, babasının veya annesinin soyadı olacaksa ve aynı soyadı taşıyan iki dostumuz varsa, çocuğun kime ait olduğunu bilemeyiz. Aslında bu sorun, ortaya başka bir sorun daha çıkartıyor: diyelim ki aynı adda iki dostumuz var; ikisinin de eş ve çocuk durumu ile adreslerini ve telefon numaralarına 14 ilişkin elimizdeki bilgilerin aynı olduğunu (mesela bu bilgiler elimizde yok ve dolayısılya bu sütunlar boş!) varsayalım. Bu iki kişiyi listeye “benzersiz kayıt” olarak nasıl kaydedebiliriz? Otomatik sıra numarasını birincil anahtar yaparak! Her aileye ait kaydın benzersiz olmasını sağlayan otomatik sıra numarasını aile tablosunda birincil anahtar yaparsak, daha sonra çocuk tabllosuyla ilişki sağlayan anahtar olarak kullanabiliriz. Bunu görsel olarak ifade edelim: Şimdilik bu tabloların oluşturulacağı üzerinde durmayalım. Burada sadece kavramsal olarak çocuklarla aileleri arasında bağ kurmaya çalışıyoruz. Aileler tablosunda “Aile Sıra No” adlı bir sütun açar ve bu sütunu Access’e Otomatik Sayı alanı olarak otomatik şekilde doldurtabiliriz. Sonra, çocukları kaydettiğimiz tabloda, her çocuğun ailesini, aile tablosundaki Aile Sıra No bilgisini tekrar ederek belirtebiliriz. (Nasıl’ın üzerinde durmuyoruz!) Diyelim ki Masum Sayan adlı iki arkadaşımızın ikişer çocuğu var. 5 numaralı aileye mensup Masum Sayan ile 6 numaralı aile mensup Masum Sayan’ın çocukları da aynı Aile Sıra No’sunu aldıkları anda, gereksiz bilgi içeren veya bilgi kaybına yol açan bir tablo tasarımından kurtulmuş, yani Aile tablosunda “çocuk 1,” “çocuk 2,”.. “çocuk x” şeklinde kimi ailede boş kalacak, kimi ailede yetmeyecek sütunlar açmamış oluruz. Yukarıda muhtemel alanlarımızın listesini döktüğümüzde, iki sorunla karşılaştığımızı söylemiştik. Birinci sorun çocuklarla ilgiliydi. Onu çözdük. Fakat aynı durum, telefon numaraları için de var. Birden fazla ev, iş, faks veya cep telefonu olanlara ilişkin tüm telefon numaralarını tablomuza işleyebilmek için mutlaka çocuk tablosunu eklediğimiz gibi, veritabanımıza ideal olarak dört ayrı telefon numaraları tablosu (ev, iş, faks ve cep telefonları tabloları) ekleyip, bunlara da Aile Sıra No sütunu açıp, her telefon numarası ile telefonun sahibini ilişkilendirebiliriz. Böylece tablo tasarımının kağıt üzerindeki bölümü bitmiş oluyor. Nihayet sıra Access’i çalıştırmaya geldi. Access’te Veritabanı Oluşturma Access’i çalıştırdıktan sonra, boş bir veritabanı oluşturalım. Fakat bu arada Access7in boş veritabanı şablolarını tanıyalım. Kullandığınız Access’in başka bir kullanıcı tarafından ayarları değiştirilmemişse, açıldığı anda karşınıza ne yapmak istediğinizi soran ve dosya seçmenizi sağlayan diyalog kutusu gelecektir. Bu kutuda “Access Veritabanı sihirbazları, sayfaları ve projeleri” maddesini işaretleyerek Tamam’ı tıklayın. 15 Access’in ayarları değiştirilerek bu kutunun açılması önlenmişse, karşınızda tamamen boş bir Access penceresi de görebilirsiniz. Bu durumda Dosya menüsünden Yeni maddesini seçerek (veya klavyede Ctrl tuşunu tutarak ve N tuşuna basarak), boş bir veritabanı oluşturmanızı sağlayacak diyalog kutusunun açılmasını sağlayabilirsiniz. Yeni diyalog kutusu açıldığında Veritabanı sekmesini tıklayın. Access’i tasarlayan uzmanlar, çeşitli kullanım alanları bulunan on ayrı veritabanı şablonu hazırlamış bulunuyorlar. Access ile veritabanı projelerinde büyük bir ihtimalle bu şablonlar hemen her ihtiyacınızı karşılayacaktır. Access’i tanımak için bu şabloların teker teker hepsini seçip, oluşturulmasını önerdiği dosyaların oluşturulmasını sağlayıp, sonra şablon sihirbazının her bir veritabanında ne gibi tablolar açtığını, bu tablolara ne gibi görevler yüklediğini, ne gibi alanlar oluşturduğunu gözlemenizde yarar var. Veritabanı yapan Access sihirbazlarının bir diğer marifeti veri girme ve rapor alma işlerinde kullanacağınız formları da oluşturmaktır. Bu formları inceleyerek, ilerde kendi formlarınızı tasarlamakta kullanacağınız ipuçları edinebilirsiniz. Ayrıca Access 2000, sadece tabloları, formları ve raporları oluşturmakla kalmayacak, bu veritabanını, sanki kendi başına bir program gibi, kullanmanızı sağlayacak grafik arayüzü bile inşa edecektir. Sihirbazları kullanarak, tabloları doldurulmaya, formları kullanılmaya ve raporları baskıya hazır veritabanlarını sık sık oluşturacaksınız; fakat kimi zaman bu tablolarda, formlarda veya raporlarda yeni bir alan eklemek, veya var olan bir alanı kaldırmak isteyebilirsiniz. Bunu yapabilmek için, Access’in bu nesnelerini nasıl oluşturabileceğimizi, nasıl düzenleyebileceğimizi veya değiştirebileceğimizi bilmemiz gerekir. Şimdi bir örnek üzerinde bunu birlikte yapalım. Alan Türleri Access Sihirbazlarıyla ilgili keşif turunu bitirdiğinizde, Yeni diyalog kutusunda Boş Access Veritabanı maddesini işaretleyip Tamam’ı tıklayın. Şimdi, kendi veritabanımızı kendimiz oluşturmaya başlayabiliriz. Açılacak diyalog kutusunda Genel sekmesinin seçili olmasına dikkat edin; ve Boş Veritabanı simgesini ve Tamam’ı tıklayın; Access 2000 ‘in önerdiği “vt1.mdb” adını “Adres Defteri.mdb” olarak (veya oluşturmak üzere yukarıda kağıt-kalemle planını yaptığınız veritabanına uygun bir ad vererek) değiştirin; yeni veritabanınızı Veritabanı penceresinde işlenmeye hazır bulacaksınız. Nesneler’den Tablolar’ın seçildiğini, ve tablo oluşturmak için kullanabileceğiniz üç aracın kısayolunu görüyorsunuz: 16 Bunlar, tasarım görünümünde, Sihirbaz kullanarak ve veri girerek tablo oluşturmanızı sağlayan yöntemlerdir. Madem ki Access 2000 ile tabir yerinde ise sıfırdan tablo oluşturmaya karar verdik; o halde “Tasarım görünümünde tablo oluştur” maddesini tıklayarak, tablo oluşturma penceresini açın. Bu noktada yukarıda tablo tasarımıyla ilgili bölümde kendi veritabanımızı planladıysanız, bu planları önünüze çekin. Bu alıştırmayı yapmadıysanız, örnek olarak ele aldığımız Adres Defteri’ni birlikte oluşturabiliriz. Tasarım görünümde karşınıza gelen tablo biçimindeki araç, tablonuzdaki alanların adlarını, özellikleri ve doldurulması için gerekli işlemleri belirteceğiniz yerdir. Aile tablosunu oluşturmak için imlecinizi Alan Adı sütununun birinci satırının içine getirin ve “AileSıraNo” yazın. Kendi veritabanızı oluşturuyorsanız, herhangi bir tablodan işe başlayabilirsiniz; bu tablolardan birini seçin ve birinci sütunun adını yazın. Türkçe Karakter Kullanırken! Access 2000, diğer Ofis programları, sadece menüleri, diyalog kutuları ve yarndım dosyaları bakımından Türkçe olmakla kalmayıp, aynı zamanda içeriğinde de Unicode’u destekleyen bir programdır. Bu bakımdan tablolarınızda, formlarınızda, raporlarınızda, makrolarınızda ve hatta kullanılmaya hazır fonksiyonlarda, içerik ve başlık olarak Türkçe karakter kullanabilirsiniz. Hemen her türlü bilgi işlem ürününün Internet’te kullanıldığı veya Internet malzemesi olarak değerlendirildirildiği günümüzde veritabanlarına dayanan Web uygulamaları da hızla yaygın hale gelirken, hazırlayacağınız Access dosyalarının Microsoft ODBC (Open Database Connectivity) tekniği ile Web Server’a yüklenip yüklenmeyeceğini hesaba katmalısınız. Access dosyalarınız, ODBC yoluyla bir Web Server’a veri kaynağı olarak tanıtılacaksa, Web Server programının ve ona evsahipliği yapan işletim sisteminin Unicode uyumlu olup olmadığı, sizin kullandığınız Alan adlarının doğru okunup okunmamasını da belirler. Veritabanının içeriği, sonuç itibariyle Web sayfasının unsurları arasında Browser’a gönderilecek ve orada yorumlanacaktır. Bugün sadece Netscape browser programının bazı işletim ortamlarında kullanılan sürümleri Unicode okuyamaz. Bu browserları kullanan Internet ziyaretçileri, sayfanızın bazı unsurlarını Türkçe karakterlerle göremezler. Fakat alan adlarınızdaki Türkçe karakterlere gönderme yapan programlar ve Scriptler, bu adları bulamadıkları taktirde, veri-yönlendirmeli Web uygulamalarınız, örneğin ASP prıogramlarınız hata mesajı verirler. 17 Veritabanlarınızı ne tür Web Server’a yükleyeceğinizi bilmiyorsanız, alan adlarında Türkçe karakter kullanmaktan kaçının. Yukarıdaki örnek planda bu sütunun adının “Aile Sıra No” olmasını kararlaştırdığımız halde, burada alan adında boşluk bırakmadığımıza dikkat etmiş olmalısınız. Bu, daha sonra yazacağımız veri seçme komutlarının alan adlarında boşluk istememesinden kaynaklanıyor. Sonra klavyenizde sekme tuşuna basarak, imlecin Veri Türü sütununa gelmesini sağlayın ve burada beliren aşağı ok simgesini tıklayarak (veya klavyede Alt tuşunu tutarak ve aşağı ok tuşuna basarak) veri türleri listesini açın: Burada gördüğünüz veri türlerini tanıyorsunuz; bizim örneğimizde birinci alanımıza Access 2000’in otomatik olarak sıra numarası vermesini istediğimiz için burada Otomatik Sayı türünü seçiyoruz (Siz, kendi planınıza uygun bir türü seçebilirsiniz). Alan Özellikleri Tablo oluşturma penceresinin üst tarafında yaptığınız seçime göre, pencerenin Alan Özellikleri başlıklı alt bölümündeki bilgilerin değiştiğine dikkat edin. Buradaki kontrollerin çoğu Access ile veritabanı oluşturma beceriniz arttıkça kullanılacak niteliktedir. Alan özellikleri, o alandaki bilgilerin boyut, renk veya konumu gibi niteliklerini ve gizli olmekgörünür olmak gibi davranış biçimlerini tanımlar. Daha sonra verilerimizi biçimlendirirken bu kontrollerden yararlanacağız. Bazı alanların bazı özellikleri yoktur. Örneğin Alan Boyutu özelliği sadece metin, sayı ve otomatik sayı alanları için geçerlidir. Şimdi alan özelliklerind sık kullancaklarımızı ele alalım: Metin Alanları için alan boyutu: 0 ile 255 karakter arasında olmalıdır. Diğer alanların boyut sınırlaması yoktur. (Varsayılan boyut: 50) Sayı alanları için alan boyutu: Sayı olarak belirlediğiniz alanın boyutunu, Alan Özellikleri bölümünde Alan boyutu satırının sağındaki aşağı oku tıklayarak, şu seçenekler arasından seçebilirsiniz: Byte, ondalık, tamsayı, uzun tamsayı, tek, çift, yineleme kimliği (Replication ID). Sayılar ve Paralarda Uzunluk 18 Veri alanınız Otomatik Sayı ise, alan boyutu ya uzun tamsayı, ya da “yineleme kimliği” adı verilen otomatik değer olur. Alan türünüz Sayı ise şu alan boyutlarından birini seçebilirsiniz. Byte 0’dan 255’e kadar tam sayı tutar. Ondalık (.adp) dosyası olarak -10^38 -1’den 10^38 -1’e kadar, (.mdb) dosylası olarak -10^28 -1’den 10^28 -1 ‘e kadar sayı tutar; virgülden sonra 28 basamak gösterir. Tamsayı –32,768’den 32,767’e kadar kesirsiz sayı tutar. Uzun tamsayı (Varsayılan) –2,147,483,648’den 2,147,483,647’e kadar kesirsiz sayı tutar. Tek –3.402823E38’den–1.401298E–45’e kadar negatif, 1.401298E– 45’den 3.402823E38’e kaedar pozitif değer tutar; 7 basamaklı ondalık bölümü olabilir. Çift –1.79769313486231E308’den –4.94065645841247E–324’e kadar negatif, 1.79769313486231E308’den 4.94065645841247E–324’e kadar pozitif sayı tutar; 15 basamaklı ondalık bölümü olabilir. Replication ID Küresel benzersiz tanımlayıcı (Globally unique identifier--GUID) eritabanı dosyalarınızın kolay açılıp kapanması ve veriişlemin yeterince hızlı yapılabilmesi için alanlarınızı tutacakları en büyük sayıdan daha fazsla sayı tutabilir şekilde tanımlamayın. Diğer taraftan alanınızı girebileceğiniz değerden küçük tutarsanız, bu kez girdiğiniz değerlerin fazla gielen kısımları kesilecek, yani verileriniz tahrip olacaktır. yı ve para birimi verilerinizi hazır biçimlendirme şablonu ile değil de kendiniz biçimlendirme ifadesi yazarak biçimlendirmek isterseniz, şu ayarları yapabilirsiniz (bu ifadeleri, Alan Özellikleri bölümünde biçim kutusuna yazacaksınız): 0;(0);;”Yok” Normal değerleri normal şekilde, negatif değerleri parantez içinde gösterir; boş bırakıldığında yerine “Yok” yazar. +0.0;-0.0;0.0 Artı ve eksi işaretini gösterir,; boş bırakıldığında yerine 0.0 yazar. Biçim: Siz nasıl girerseniz girin verinin tabloda (ve daha sonra bu tablodan yapılacak şekilde oluşturulacak raporlarda ve formlarda) nasıl görüntüleneceğini belirler. Ayrıca buraya yazacağınız biçim komutları, girilebilecek verinin niteliğini de tayin eder. (Ayrıntılı biçim ifadeleri için Ek 1’e bakınız.) Giriş maskesi: Veritabanıza verileri girerken, önce girişi kolaylaştırmak, daha sonra da veri işlem sırasında verilerin istediğiniz 19 biçimde olmasıını ve dolayısıyla işlemi kolaylaştırmak amacılya, veri girişini belirli bir biçim kuralına bağlayabilirsiniz. Söz gelimi telefon numaralarının daima (0555) 555-5555 gibi girilmesini sağlamak için bir metin alanına bunu sağlayacak giriş maskesi adı verilen komut ifadesini yazabilirsiniz. Bunun için giriş maskesi olarak (9999) 000 0000;;_ yazmanız gerekir. Fakat Access 2000, sık kullanılan, telefon numarası, Vergi dairesi ve numarası, posta kodu, sosyal sigortalar numarası, sigorta kod numarası, parola, ve çeşitli tarih ve saat biçimlerine uygun giriş maskelerini hazır veriyor. Bu hazır maskeleri bir alanınızın Alan Özellikleri bölümüne katmak için, giriş maskesi satırının sağındaki üç nokta simgesini tıklayın; açılacak Giriş Maskesi Sihirbazı’nda arzu ettiğiniz giriş biçimini seçin. Bir bilginin tablolara veya formlara belirli bir maske ile girilmesi, mutlaka o şekilde kaydedileceği anlamına gelmez. Özellikle parantez, kesme ve benzeri işaretleri kullandığınız giriş maskelerini veritabanı dosyaya yazılırken kaydettirmeniz gerekmez; bu dosya boyutunda tasarruf sağlar. Daha sonra raporlarınızda veya Access dosyalarından başka programlar için veri ihraç ederken bu işaretlerin yeniden konulmasını sağlayabilirsiniz. Geçerlik Kuralı, geçerlik metni: Veri işlemin sağlıklı olabilmesi için girilen verilerin gerçekten girilmesi gereken türde olması şarttır. Access, veri girilmesi sırasında girilen değerin geçerliliğini sınayabilir ve veri gireni uyarır. Veri girişinde uyulacak kuralları Geçerlik Kuralı kutusunda, geçirli olmayan veri girişinde görüntülenecek uyarı metnini ise geçerlik metni kutusunda belirtirsiniz. (Bu kutuların etiketini Geçerlilik şeklinde göreceksiniz. Bu, Türkçe imlâ ilkelerine aykırıdır.) Geçerlik kuralları kutusuna yazabileceğiniz bazı ifade örnekleri şunlar olabilir: <> 0 Girilen değer sıfırdan farklı olmalıdır > 1000 Or Is Null Girilen değer ya boş olmalıdır, ya da 1000’den büyük olmalıdır. Like "A????" Girilen değer 5 karakter boyutunda olmalıdır ve "A" harfi ile başlamalıdır. >= #1/1/96# And <#1/1/97# Girilen değer 1996 içinde olmalıdır. Geçerlik metni ise, geçerli olmayan bir değer girildiğinde, kullanıcının uyarılmasında kullanılacak metindir. Buraya yazacağınız metin, kullanıcıya doğru veri biçimi hakkında kısa fakat anlamlı bilgi vermelidir. 20 Gerekli: Bu özelliğin sağında belirecek aşağı oka basarak, Evet veya Hayır’ı seçebilirsiniz. Bir alanı Gerekli hale getirirseniz, veri tablosunu doldururken, Access bu alanın boş bırakılmasına izin vermez. Yukarıdaki planlama örneğinde bazı alanların niteliğini kağıda dökerken yanlarına “Boş bırakılabilir,” bazılarına ise “Boş bırakılamaz” notunu koyduğumuzu hatırlıyor olmalısınız. Boş bırakılabilir alanlar için bu kutuya “Hayır” (yani doldurulması gerekli değil!), boş bırakılamaz alanlara ise “Evet” (yani doldurulması gerekli!) kaydını koymamız gerekir. Sıfır uzunluk İzni: Boş bırakılmasını önlediğiniz, yani gerekli alanların boyutu sizin için önem taşıyor olabilir. Doldurulması gerekli alanların doğru doldurulmasını sağlamanın bir yolu, alana girilecek değerin boyunun sıfır olmasını önlemektir. Yukarıdaki örnekte geliştirdiğimiz veritabanının kullanılabilir olması için en azından kişilerin ad ve soyadlarının tabloda yeralması gerekir; aksi taktirde ortada tablo denecek bir şey bulunmaz. Soyadı olmayan kişilerin ise adları ile yetinemeyiz. O halde bu iki alanı hem gerekli yapar, hem de sıfır uzunluk izni vermezsek, tablomuzu doldururken isteyerek veya kazayla bu alanları boş bırakmamız tehlikesini önlemiş oluruz. Sıralı (Endeks): Access ile oluşturduğumuz veritabanlarını işlerken yapacağımız işlerin başında, tablolarımızdan belirli ölçütlere göre seçmeler (sorgular) yaptırtmak gelecektir. Basit bir sorgunun hızla tamamlanabilmesi için Access’in tablolardaki alanları önceden endekslemesi yerinde olur. Bir alanın Alan Özellikleri bölümünde Sıralı kutusunun sağındaki aşağı oku tıklarsanız, “Hayır” seçeneğinin yanı sıra iki ayrı “Evet” seçeneği bulunduğunu göreceksiniz. “Hayır” seçeneği, bu alanın önceden endekslenmesini önler. Bu alandaki verilerin endekslenmesini sağlayan diğer iki seçenekten birincisi, “Evet (Yineleme Var)”, Access’in oluşturacağı endekste, bu değerden birden fazla olmasına imkan verir. Bizim örneğimizde, kişi ad ve soyadlarından birden fazla olması ihtimali öngörüldüğüne göre, endeksimizin tekrara izin vermesi gerekir. Bir alan, tablodaki kayıtların benzersiz olmasını sağlayan Birincil Anahtar alanı olarak tayin edildiyse, tekrara izin verilmemesi gerekir. Bunun için, bu kutudaki endeksleme yaptırtan ikinci seçeneği, “Evet (Yineleme Yok)” maddesini seçmemiz gerekir. Unicode Sıkıştırma: Access 2000, Ofis 2000 ailesinin diğer üyeleri gibi Unicode-uyumlu, yani içinde 65 bin 536 adet harf, rakam ve işaret bulunan yazı tipi (font) sistemini destekler. Unicode uyumlu olmayan programlar ise sadece 256 karakter içeren fontları kullanabilirler. Metin, not ve köprü (Web adres bağlantısı) türündeki verilerinizde 21 Türkçe karakter bulunuyorsa, alan özelliğinde Unicode Sıkıştırma’nın “Evet” olması gerekir. Bu durumda Access, bu alandaki veriyi kaydederken her bir karakter için gerekli alanı (2 byte) ayıracaktır. Bu tür alanlarınızda Türkçe karakter yoksa, Access dosyasının büyüklüğü etkilenmeyecektir. Dolayısıyla Türkçe veritabanı oluştururken bu değeri sürekli “Evet” ayarında tutmak dosya büyüklüğü bakımından olumsuz bir etki yapmaz; sadece Türkçe karakterlerinizi korumuş olursunuz. Alan Tanımları Tablo tasarımında son nokta, tablolarımızı başkalarının da kullanabileceğini gözönünde tutarak, tanım sütununa gerekli açıklamaları yazmaktır. Tablolarımızı başkasıyla paylaşacak olmasak bile, bir süre sonra alanlarımızın ne amaçla oluşturulduğunu hatırlamak zor olabilir. Buradaki gibi “Adı,” “Soyadı” adını verdiğimiz alanların işlevini hatırlamakta sorun olmayacağı düşünülebilir. Fakat verilerin başka tablolardan alındığı durumlarda veya değerlerle ilgili uyarıcı notların gerektiği durumlarda, Tanım satırlarına yazacağınız bilgiler işe yarar. Tabloyu yaptıysanız, tasarım görünümünde son şekli şöyle olmalı: Arama Sihirbazı Access’te veritabanı oluşturmanın birinci adımını attık: ilk tablomuzu yaptık; alanlarını belirledik; alanların özelliklerini tayin ettik. Buradaki örneği uyguluyorsanız, şimdi ikinci bir tablo oluşturmanız gerekir. Bitmiş tasarım görünümüne bakarak, yukarıdaki bilgiler ışığında ikinci tabloyu siz oluşturabilir misiniz? Burada dikkat edilecek tek nokta, AileSıraNo adlı alanın içeriğinin doldurulması için gerekli ifadeyi Arama Sihirbazı’na yazdırtmaktır. Çocuklar tablosunun taramın görümünde ikinci alanın adını yazdıktan sonra Veri Türü sütununda seçme okunu tıklayın ve açılan listeden Arama Sihirbazını seçin. Arama Sihirbazı’nın birinci dayalog kutusu, bu alana girilecek değerlerin mevcut bir tablo veya sorgu sonucundan mı alınacağını, yoksa bu değerleri sizin doğrudan mı yazacağınızı belirler. Buradaki örnekte, veritabanımızda Çocuklar tablosunu doldururken, bu sütunun yanında bir seçme oku belirmesini ve bu oku tıkladığımızda Aileler tablosunda, Ailei Sıra No alanına girilmiş bütün değerlerin gösterilmesini istiyoruz. Başka bir deyişle bu sütuna girecek bilgileri, Aileler tablosundan alacağız. O halde, Arama Sihirbazı’nın ilk diyalog 22 kutusunda “Değerler tablo veya sorgudan alınsın” maddesini işaretleyerek, İleri düğmesini tıklamamız gerekir. Arama Sihirbazı’nın ikinci diyalog kutusu ise bir önceki tercihinize göre ya veritabanınızdaki bütün tablo ve sorguların listesini içerir ve siz bu listeden veri alacağınız tablo veya sorguyu seçersiniz; ya da seçme yapacağınız veri listesini oluşturmanız için küçük bir tablo oluşturma aracı açılır. Veri seçme işini bir tablo veya sorgudan yapacaksanız bu tablo veyla sorgunun adını seçerek, İleri’yi tıklayın. Veri seçme işini kendi vereceğiniz değerlerle yapacaksanız, veri seçme listesi diyalog kutusunda veri seçme listesinin tek sütunlu olduğunu göreceksiniz; seçiminizi daha çok sütunlu bir listeden yapmak istiyorsanız önce yeni sütun sayısını yazın; sonra aşağıdaki “Süt1” atdlı örnek sütunun adını tıklayın; arzu ettiğiniz kadar sütun belirecektir; şimdi sçilecek değerleri bu sütunlara ve satırlara girin ve İleri’yi tıklayın. Her iki yolda da Arama Sihirbazı’nın üçüncü diyalog kutusunda, ya mevcut talo ve sorgulardan seçtiğiniz ya da kendi oluşturduğunuz değerli içeren alanlar kullanılabilir alan olarak sıralanacak ve Son’u tıkladığınızda Arama Sihirbazı, tasarım penceresinin Alan Özellikleri bölümünde Arama sekmesindeki değerleri dolduracaktır. (İlerde arama ve sorgu konusunda uzmanlaştığınızda bu değerleri siz de doldurabilirsiniz. Şimdilik sadece Arama sekmesinde Satır Kaynak Türü ve Satır kaynağı kutularına yazılan ifadeleri inceleyin ve Access’in tablolara ve tabloların alanlarına nasıl gönderme yaptığına dikkat edin.) Bu suretle oluşturduğumuz otomatik değer seçme imkanını kullanmak üzere Çocuklar tablosunu açtığımızda ve yeni bir girdi için Aile Sıra No sütununda bir satırı tıkladığımızda, kutunun sağ kenarında bir seçme oku belirdiğini görürüz. Bu oku tıkladığımızda ise açılan listede, bu ana kadar Aile tablosunda Aile Sıra No sütuna girdiğimiz bütün değerleri görürüz. Tablo tasarımını öğrendiğimize göre, şimdi tablolara veri girme, veri arama ve tabloların Access 2000 penceresi içinde görüntülenme yöntemlerinden söz edebiliriz. Bir veritabanı ile veri-işleme başlamadan önce verileri girmemiz gerekir! Veri Düzenleme (Editing) Access’te belki de en kolay yapacağınız iş, tabloya veri girmek olsa gerek: yeni oluşturduğunuz veya önceden mevcut bir tabloyu, veritabanı penceresinde açın ve başlayın sütunlara ve satırlara gönlünüzden geçenleri yazmaya. Fakat bunun daha kolay yolları da 23 var. Önce veri tablomuzun ekrandaki penceresinde yapabileceğimiz görünüm değişikliklerinden söz edelim. Veri tablosunu, adını iki kere tıklayarak (Araçlar menüsünden Seçenekler maddesini ve Görünüm sekmesinde “Tek tıklatmada aç” seçeneğini seçerek bunu değiştirebilirsiniz), veya tabloyu seçtikten sonra Veritabanı penceresinde Aç simgesini tıklayarak açabilirsiniz. Bir tablonun adını sağ tıklayıp, açılacak menüden Aç maddesini de seçebilirsiniz. Görünüm Açtığınız bir veri tablosunun sütun genişliği, o alandaki verilerin tümünü rahatça okumanıza engel oluyorsa, iki sütun başlığının ortasındaki çizgiyi Mouse işaretçisi ile tutarak, sağa veya sola oynatarak, sütun genişliğini değiştirebilirsiniz. Bu sırada Mouse işaretçisi iki tarafında ok bulunan dikey çizgi şeklini alır. Aynı şekilde satırlarınızın yüksekliğini de satır başlıklarının arasındaki çizgiyi Mouse işaretçisiyle tutarak, artırabilir, azaltabilirsiniz. Bir sütunun genişliğini değiştirdiğiniz zaman diğer sütunların genişlikleri etkilenmez; ancak bir satırın yüksekliğini değiştirirseniz, bütün satırların yüksekliği değişmiş olur. Sütun genişliklerinin Access 2000 tarafından otomatik olarak ve optimum ölçüde ayarlanmasını sağlamak için sütun başlığının sağ sınır çizgisini iki kere tıklayabilirsiniz. Sütun genişlikleri ve satır yüksekliklerini, sütunu ve satırı seçerek Biçim menüsündeki ilgili maddeleri seçerek de yapabilirsiniz. Mouse işaretçisini sütun veya başlığının üzerine getirin ve tıklayın (işaretçi sütun başlığında iken imlecin kısa ve kalın bir aşağı ok şekline döndüğünü göreceksiniz); şimdi sütun veya satır başlığını tıklarsanız, bütün sütun veya satır seçilmiş olur. Biçim menüsünden Satır yüksekliği veya Sütun genişliği maddesini seçerek ve açılacak diyalog kutularına gerekli değerleri girerek, ayarları değiştirebilirsiniz. Veri girmenizi ve verilenizi incelemenizi engelleyen, o sırada içeriğini görmeniz gerekmeyen sütunları geçici olarak gizleyebilirsiniz. Sütunu seçtikten sonra Biçim menüsünden Sütunları gizle maddesini seçerseniz, Access 2000 bu sütunları geçici olarak ortadan kaldırır. Yine Biçim menüsünden Sütunları göster maddesini seçerek ve açılacak kutuda görüntülenmesini istediğiniz sütunların adının önüne işaret koyarak, yeniden görünmelerini sağlayabilirsiniz. Veri girme Her veri tablosunun son satırı, yeni kayıt girmeniz için hazır sayılır. Yeni bir kayıt girmek için, sütun başlığında bir yıldız simgesi bulunan 24 son satırın herhangi bir sütununa tıklayarak, klavyeden verilerinizi girebilirsiniz. Aynı işi Araç buçuğunda Yeni Kayıt simgesini tıklayarak da yapabilirsiniz. Veri tablosu içinde kayıttan kayıda ve bir kayıtta alandan alana geçebilmek için, Mouse işaretçisini arzu ettiğiniz kutunun içinde tıklayabilirsiniz; klavyede ok tuşlarına, veya sekme ve Enter tuşlarına basarak imleci arzu ettiğiniz yere götürebilirsiniz; bu tuşların imleci yeni alanın başına mı, sonuna mı götüreceğini Araçlan menüsünden Seçenekler’i ve orada Klavye sekmesini seçerek de belirleyebilirsiniz. İlmecin içinde bulunduğu hücrenin satır başlığında bir kalem simgesi belirir; bu o satırın edit edilmeye (düzenlenmeye, değiştirilmeye, ek yapılmaya) hazır olduğunu gösterir. Bir mücrede varolan verinin önüne, arkasına, içine yeni veri yazabilirsiniz; mevcut veriyi silebilirsiniz; başka ylerde Windows panosuna kopyaladığınız metin, sayı veya diğer unsurları Access hücrelerinize yapıştırabilirsiniz. Windows Panosuna kopyalanmış unsur Access 2000 veritabanında bulunması imkanı olmayan bir unsur ise Düzenr menüsünde yapıştırmayla ilgili maddeler etkin olmaz; klavlede Ctrl+V tuşuna basmanız da bu öğeyi Acces veri tablosuna yapıştırmaz. Bir kaydı (satırı) veya bir alanı (sütunu) silmek için Düzen menüsünden Kayıt Sil ve Sütun Sil maddelerini seçmeniz yeter. Araçlar menüsünder Seçenekleri ve Düzen/Bul sekmesinde Onayla bölümünde hangi silme işlemleri için Access 2000’in sizden oınay istemesini arzu ettiğinizi de belirtebilirsiniz. Kayıt silme işlemi, onaylandıktan sonra veritabanına kaydedilir ve bir daha geri alınamaz. Veritabanındaki bilgilerin birbiri ile tutarlı olmasına bilgi tutarlılığı (referential integrity) denir ve bunu korumak için Access 2000 bazı sütunları ve tabloları silmenize izin vermez. Aşağıda ilişkilendirme konusu ele alırken, bilgi tutarlığından söz edeceğiz. Bazı sütunları ve satırları silmeye çalıştığınız zaman, ilişkileri korumak isteyen ve silme işlemi dolayısıyla başka kayıtları ve sorguları silmek zorunda kalan Access 2000, sizden onay isteyecektir. Sıralama Veri tablosundaki kayıtlar, belirli alanlar itibariyle artan veya azalan sıraya sokulabilir. Sıralamak istediğiniz sütunu seçin ve Araç çubuğunda artan veya azalan sıralama simgesini tıklayın. Bunu, Kayıtlar menüsünde önce Sırala, sonra da Artan veya Azalan sıralama maddelerini seçerek de yaptırabilirsiniz. 25 Sıralama işlemini sıralayacağınız sütundaki herhangi bir satırı sağ tıklayıp,açılacak menüden, Artan Sıralama ve Azalan Sıralama maddelerini seçerek de yapabilirsiniz. Artan sıra, sayılarda en küçükten en büyüğe, tarihlerde en eskiden en yeniye, metinlerde ise A’dan Z’ye demektir. Azalan sıra ise bunun tersidir. Access’te her bir satır bir kayıt sayıldığı için bir sütunu sıraladığınız zaman o satıra ait diğer hücrelerdeki bilgiler de sıralanan sütundaki hücre ile birlikte yeni yerlerine giderler; böylece bir satırın hücreleri yer değiştirmemiş olur. Arama ve Değiştirme Veri tablolarınız bir değeri gözle aramanıza imkan vermeyecek kadar büyük olabilir. Bu durumlarda bir değeri bulmak için Access 2000’in yardımını isteyebilirsiniz. Araç çubuğundaki Bul simgesini tıklayarak veya Düzen menüsünden Bul maddesini seçerek, arama yaptırabilirsiniz. Access 2000’in bir yeniliği Bul ve Değiştir araçlarının tek kutuda iki sekme halinde toplanmasıdır. İki sekme arasındaki görünüm farkı Değiştir sekmesinde bulunacak değerin yerine konulacak yeni değerin girileceği kutunun bulunmasıdır. Bulma işlemi ya o sırada imlecin içinde bulunduğu bir alanda, ya da tablonun tümünde yapılır. Bul sekmesinde Aranan kutusuna aradığınız değeri yazın; aramanın yapılacağı yeri gösteren Bak kutusunun seçme okunu tıklayarak, aramanın tablonun tümünde mi, yoksa imlecin bulunduğu sütunda mı (imleç bir sütunda değilse, birinci sütunda) yapılacağını belirtin. Eşleştir kutusunda ise aramanın yapılacağı alan parçasını belirtebilirsiniz. Aradığınız değerin sadece alanın tümünü olduğu durumların bulunması için bu kutuda Tüm Alan; alanın herhangi bir bölümü olduğu durumların bulunması için Alanın Bir Bölümü; ve verdiğiniz değerle başlayan alanların bulunması için de Alanın Başlangıcı seçeneklerini seçmeniz gerekir. Arama kontrollerinin tümünü görüntüleyerek arama kutusunu büyütmeye yarayan Tümü düğmesini tıklarsanız, Arama yönünü belirtebileceğiniz bir seçme kutusu ortaya çıkar. Buradaki seçenekleriniz, aramanın imlecin bulunduğu noktadan yukarı veya aşağı ya da tüm tabloda yapılmasını sağlar. Bul kutusu genişlediğinde ortaya çıkan diğer bir kontrol unsuru ise aranan kutusuna yazdığınız değerin büyük harf-küçük harf oluşu ile bulunmasını istediğiniz değerin büyük hadrf-küçük harf oluşu arasında ilişki kurup kurmamaktır. Eğer Access, sizin kullandığınız harflerin büyük veya küçük oluşuna dikkat etsin istiyorsanız, Büyük Harf/Küçük 26 Harf Eşleştir kutusuna işaret koyun. Bu durumda, örneğin “tas” değerini arattırdığınızda “Tas” ve “TAS” bulunmayacaktır. Buradaki “Alanları biçimli olarak ara” kontrolü ise tarih/saat gibi veya para birimi gibi belirli biçimlerde görüntülenen alanların, veritabanında bulunduğu basit şekliyle değil, tablo tasarımı sırasında talep ettiğimiz biçimde ele alınarak arama yapılmasını sağlar. Bunu biraz açalım. Diyelim ki Tarih alanındaki değerlerimizin kısa tarih olarak biçimlenmesini istiyoruz. Bu biçim, Access 2000 tarafından ancak bu veri görünülendiği zaman uygulanır. Siz verileri “20-09-99” olarak girmiş olabilirsiniz; ama tasarım sırasında bu alan için uzun tarih biçimini seçtiyseniz, Access 2000, bu veriyi “20 Eylül 1999 Pazartesi” olarak biçimleyerek görüntüleyecektir. Arama yaparken, arama değeri olarak “20-09-99” yazar ve Access’ten bu değeri bulmasını isterseniz, ve “Alanları biçimli olarak ara” seçeneği seçilmiş olursa, aradığınız değer hiç bir zaman bulunamayacaktır. Çünkü Access sizin biçik talimatına uygun olarak tarihleri uzun biçimde biçimliyor fakat siz kısa tarih biçiminde aranacak değer veriyorsunuz. Oysa bu kutu işaretlenmemiş olsa idi, Access verdiğiniz meşru tarih biçimini tablosundaki bütün tarih biçimleriyle karşılaştıracak ve verdiğiniz tarihi bulursa, bu kaydı size gösterecekti. “Alanları biçimli olarak ara” seçeneği seçilmiş olarak yapılan aramalar Access 2000’i olağanüstü yavaşlatır. Alanın bir bölümü” seçeneği ve aranan yerin tüm tablo olması da Access 2000’in arama hızını düşürür. Değiştirme, bulmaya dayanan ve bulunan değerlerin sizin vereceğiniz bir değerle değiştirilmesi işlemidir. Değiştir aracının neleri bulabileceğini, Bul aracını tanırken gördük. Burada sadece sağdaki farklı kontrol düğmeleri üzerinde duralım. Sonrakini Bul düğmesini tıkladığınızda Access 2000, sadece bulma işlemini yapar; hiç bir şey değiştirmez. Aradığınız değerin doğru bulunduğuna ve değiştirmenin verilerinize zarar vermeyeceğine emin olduktan sonra Değiştir düğmesini tıklayabilirsiniz. Bu noktada değiştirme işinden vazgeçerseniz, İptal düğmesini tıklayın. Değiştir düğmesi, sadece bulunan değeri değiştirmekle kalmaz, varsa, bir sonraki aranan değeri bulur. Tümünü Değiştir düğmesi ise tek tek bulma-değiştirme yerine tablonuzdaki tüm aranan değerleri otomatik olarak bulur ve onay gerekmeden değiştirir. Bu düğmenin gerçekten hızlı çalıştığını göreceksiniz. Ama bu düğmenin bir özelliği daha var ki, tıklamadan önce iki kere düşünmeniz yerinde olur: yaptığınız değişiklikler kalıcı olur; geri alınmaz. 27 Süzme Bul aracı ile verilerde araştırma yapmak mümkün olmakla birlikte, kimi zaman belli bir ölçüte uygun tüm kayıtları birarada görmek isteyebiliriz. Bunu Süz aracıyla yaparız. Sözgelimi, elimizdeki veride sadece ikinci yarıyıl sınavında 5 alan öğrencilerin veya oturduğu yer Tekirdağ olanların, sadece erkeklerin veya sadece kadınların listelenmesini isteyebiliriz. Bunu yapmanın en kolay yolu Seçime Göre Süzme yöntemidir. Süzme ölçütü olacak verinin bulunduğu kaydın, ilgili alanını (sütununu) bulun ve Access 2000’e bu sütunda sadece bu değeri içeren kayıtları göstermesini, diğerlerini göstermemesini bildirin. Ölçük olarak kullanacağınız verinin bulunduğu sütunu tıklayın ve ya Araç çubuğundan Seçime Göre Süz simgesini tıklayın, ya da veritabanında bir yeri sağ-tıklayıp açılan menüden Seçime Göre Süz maddesini seçin. Veri tablosunun büyüklüğüne ve seçtiğiniz alanın endekslenmiş olupolmamasına göre, Access 2000, seçme ve sadece seçilenleri görüntüleme işini sür’atle yapacaktır. Listede sadece seçilen kritere uygun veri içeren kayıtlar yer alırken, Araç buçuğundaki Süzgeci Kaldır simgesi de etkin hale gelecektir. Bu simgeyi tıklayarak, tablonun tümünü görüntületebilirsiniz. Access 2000, tablonuza uyguladığınız son süzme işleminin ölçütünü unutmaz ve bu simgeyi yeniden tıkladığınızda son süzme işlemi yeniden uygulanır. (Süzgeci kaldırdığınızda bu simgenin etiketi Süzgeci Uygula şeklinde değişir.) Bir tablonun tümünü değil sadece süzülmüş kayıtları içerdiğini, tablonun alt kenarındaki “(Süzülmüş)” kelimesinden anlarız. Bu kelimenin yanında kaç adet süzülmüş kayıt olduğu da gösterilir. Seçme yoluyla süzme işlemi birden fazla alan veya değer ölçüt kullanılaarak da yapılabilir. Diyelim ki seçme işlemini bir sınıftaki öğrencilerin listesinde hem cinsiyet, hem de alınan nota göre uygulamak istiyorsunuz. Bunu yapabilmek için, uygulayacağınız birden fazla ölçüt veri değerinin tabloda yanyana sütunlara gelmesini sağlayın. Bir sütunun tümünü seçer ve Mouse işaretçisiyle sütun başlığını tutarak, işaretçiyi diğer iki sütunun arasına götürürseniz, işaretçinin bulunduğu aralıkta koyu tonlu bir çizgi oluştuğunu görürsünüz; Mouse işaretçisini burada bırakırsanız, sütun tümüyle bu yere taşınmış olur. Bu suretle sütunları yanyana getirerek, arama ölçütü olacak değerleri de birbirine komşu yapmış olursunuz. Şimdi, Mouse işaretçisini ölçüt olacak verilerin en soldakinin veya en sağdakinin üzerine getirin (işaret simgesinin kalın ve içi boş artı işaretine döndüğüne dikkat edin) ve Mouse’un sol düğmesini tutun; 28 ölçüt olacak değerlerin sonuncusuna kadar sürükleyin. Ölçüt olarak kullanacağınız bütün veriler seçilmiş olacaktır. Şimdi, ya sağ tıklayarak ve açılan menüden Seçilenlere Göre Süz maddesini seçerek, ya da Araç çubuğundan aynı adı taşıyan simgeyi tıklayarak, Access 2000’e çok ölçütlü süzgeç uygulattırabilirsiniz. Seçme yoluyla süzme işlemini, altalta kayıtların değerlerini ölçüt alarak da yapabilirsiniz. Bunun için, Mouse işaretçisini bir satırdaki bir değerin üzerine getirin ve işaret simgesi kalın ve içi boş artı işaretine döndüğünde, Mouse’un sol düğmesini tutarak ölçüt olarak kullanacağınız alttaki veya üstteki değerleri tarayın. Mouse’un düğmesini bıraktığınızda altalta birden fazla değer seçilmiş olacaktır. Şimdi yine sağ tıklama veya Araç çubuğunda tıklama yoluyla Access 2000’e Seçme yoluyla süzme işlemini yaptırtabilirsiniz. Kimi zaman süzme işinde kullanacağınız değerler böyle kolay bir şekilde seçme yoluyma belirtilemez ve daha ayrıntılı süzme ölçütleri uygulamak isteyebilirsiniz. Bunun için Form Süzgeci yöntemini kullanmanız gerekir. Bu aracı, Kayıtlar menüsünden önce Süz ve sonra Form Süzgeci maddesini seçerek açabilirsiniz. Form Süzgeci açıldığı anda açık olan tablonun yerini alır. Bu yeni tabloda, solda, altta birincil ölçütü belirteceğiniz Ara, ve ikincil, üçüncül ölçütler için bir çok “Veya” sekmesi göreceksiniz. Süzme ölçütünü tanımlamaya Ara sekmesinden başlamak gerekir. Bu sekme seçili iken, tabloda sıralanan alan adlarının altındaki hücreyi tıklarsanız, sağda seçme okunun görüntülendiğini göreceksiniz. Bu oku tıklayarak, tablonuzda bu alana girişmiş tüm değerleri görebilirsiniz. Burada istediğiniz kadar seçim yapabilirsiniz. Yine öğrenci tablosu örneğine dönersek, cinsiyet sütunundan “Kadın,” birinci yarıyıl sınavı notları sütunundan “5,” ikinci yarıyıl sınavı notları sütunundan “3” değerlerini seçebilirsiniz. (Bu durumda tablonuzdaki bütün kadın öğrencilerden birinci sınavda 5 ikinci sınavda 3 alanlar seçilmiş olacaktır). “Veya” sekmelerini tıklayarak süzgecin kapsamını genişletmek mümkündür. Sözgelimi, sınıftaki kadın öğrencilerden birinci yarıyıl sınavında 5 “veya 4 veya 3 veya 2 veya 1 veya 0” alanları seçmek isteyebilirsiniz. Her “veya” ölçütünden sonra Form’un sol alt kenarına yeni bir Veya sekmesi eklendiğine dikkat edin. Notlarınızı tam sayı olarak değil de kesirli olarak veriyorsanız, süzmenin amacı zayıf durumdaki öğrencileri belirlemek olduğu halde bu son yöntemde örneğin 4,5 alanları göremezsiniz. Bunu sağlamak için bütün not ihtimallerini kapsayan “Veya” ölçütleri doldurmak gerekir. Oysa süzme ölçütlerini seçerek değil yazarak verebilir ve 29 standart karşılaştırma işlemcilerini kullanarak, bütün ihtimalleri kapsayabilirsiniz. Bunun için, örneğin Birinci Yarıyıl Sınav Notları sütununun boş hücresine “<=4,9” (tırnaklar olmadan) yazarsanız, Access 2000 notu 5’den aşağı bütün öğrencileri bulacaktır. Burada dikkat edilecek nokta önce mukayese işlemcisinin, sonra değerin yazılmasıdır. Access 2000, standart mukayese işlemcilerini kullanır: > Büyük < Küçük = Eşit <= Küçük veya eşit >= Büyük veya eşit <> Eşit değil Ölçütlerinizi belirttikten sonra Araç çubuğundan Süzgeci Uygula simgesini tıklayarak süzülmüş kayıtlarınızı görebilir; işiniz bittiğinde süzgeci kaldır simgesini tıklayarak asıl tablonuza dönebilirsiniz. Gelişmiş Süzme Sıralama Genellikle süzme işleminden sonra süzülmüş kayıtları içeren yeni tablonun bir alana göre sıralanması (örneğin öğrencilerin artan veya azalan not sırasına sokulması) gerekebilir. Süzülmüş kayıtları içeren geçici tablonun herhangi bir sütununu seçerek sıralama işlemi yaptırabilirsiniz. Fakat süzme ve sıralama işlemini, Kayıtlar menüsünden önce Süz, sonra Gelişmiş Süzme/Sıralama maddesini seçerek bir kerede yaptırtabilirsiniz. Bu maddeyi seçtiğiniz Access 2000, bu amaçla tasarlanmış özel bir Sorgu tasarım penceresi açacaktır. Bu teknikten yararlanmayı, Sorgu bölümünde ele alacağız. Formlar “Access’te bir tabloya veri girmenin kestirme yolu, tabloyu açıp, en alt satırdan itibaren verileri yazmaktır!” dedik. Fakat yanyana yüzlerce sütunu bulunan bir tabloda bunu yapmak kolay olmaz. Tablonun Access penceresinin dışında kalan sütunlarını görüntüye getirmek için sürekli kaydırma çubuğunu tıklamak zor olabilir. Oysa Access bize veri girme ve düzenleme işini form yoluyla yapma imkanı veriyor. Form, bir tablonun bir kaydının içeriğini (veya boş bir kayıt satırını) bir çok kontrolle birlikte tek pencerede toplayabilen bir araçtır. Formun eniboyu da Access penceresinden büyük olabilir; fakat formun biçimini belirlemek, alanların nerede ve ölçüde görüneceğine karar vermek imkanı vardır. Ayrıca formun üzerine veri girmeyi kolaylaştıran ve kaydın parçası olmayan yardım ifadeleri yazabilir, grafiklerle formu 30 süsleyebilirsiniz. Formda, Sil, Kaydet ve benzeri komutlar içeren düğmeler olabilir. Normal olarak formun her sayfası sadece bir kayıt içerir. Dolayısıyla dikkatinizi bir kayıt üzerinde toplayabilirsiniz. Oysa veritabanı penceresindeki tablo açıldığında görüntüye sığdırabildiği kadar kaydı sığdırır. Bu çoğu zaman bir kayıtla ilgili inceleme yapmayı zorlaştırır. Form, veri girmeyi mantıksal bir düzene bağlayabilir ve kolaylaştırabilir. Otomatik Form Access 2000, herhangi bir tabloyu anında forma çevirebilir. Form konusunu kavramak için en kestirme yol, açık veritabanında bir tabloyu açıp, Access’e bu tablodan otomatik form yapması talimatını vermektir. Bunun için Araç çubuğunda Yeni Nesne simgesini tıklamaktır. Bu araç, son yaptığınız işi hatırlar ve etiketinde bunu belirtir. Access 2000, açık tablodaki bütün alanları, içine bilgi yazılacak kutular haline getirir; ve bunların önüne sütun başlığı olan alan adlarını etiket olarak koyar. Oluşturulan formda, kayıtlar arasında gezinmeyi bağlayacak kontroller, ve yeni kayıt için boş form edinme düğmeleri vardır. İşte yukarıdaki tablonun otomatik form haline getirilmiş görünümü: Burada, bu formun başlığında ait olduğu tablonun adını görüyorsunuz. Aynı anda birden fazla tabloya veri girişi yapmakta kullandığınız form varsa, başlıklarıo anda hangi tabloya giriş yaptığınızı gösterir. Formun “kutuları” arasında klavyede sekme veya Enter tuşlarına basarak ilerleyebileceğiniz gibi, Mouse işaretçisini arzu ettiğiniz alanın içinde tıklayabilirsiniz. Geride kalan bir alana gitmek için klavyede üst karakter (büyük harf, Shift) tuşunu tutarken, Sekme tuşuna basın. Formda, otomatik sayı olarak belirlenmiş alanlara yazı yazamazsınız; aynı şekilde Access’in değerini hesaplayarak bulduğu alanlara da klavyede değer giremezsiniz. Yeni kayıt için boş form açtığınızda otomatik sayı alanının içinde “(Otomatik Sayı)” ifadesini göreceksiniz. Bir formda imleç son kutuda iken klavyede Enter veya sekme tuşuna basarsanız veya imleç herhangi bir yerde iken Mouse işaretçisiyle başka bir kayda gitmek için gezinme düğmelerini veya yeni kayıt simgesini tıklarsanız, içinde bulunduğunuz kayıtta değişiklik yaptıysanız bu tabloya işlenir. (Bu işlem geri alınmaz.). Bir kaydın içinde iken klavyede üst karakter tuşunu tutarken Enter’a basarak, kayıtta yaptığınız değişikliği tabloya kaydetebilirsiniz. Bunu Kayıtlar menüsünden “Kaydı kaydet” maddesini seçerek de yapabilirsiniz. 31 Bir formda görüntülenen kaydı silmek de mümkündür. Bunun için araç çubuğundan Kayıt Sil simgesini tıklayabilirsiniz. Aynı işlem Düzen menüsünden Kayıt Sil maddesini seçerek de yapılabilir. Kayıt silme işlemi geri alınmaz. Bir formda kayıt silmeye çalıştığınız sırada bu işlem veritabanınında bilgi tutarlılığa açısından başka tablolarda ve sorgularda silme gerektirecekse, Access 2000 sizden onay isteyecektir. Tablo görünümünde yapabildiğiniz bütün sıralama ve süzme işlemleri form görünümünde de yapılabilir. Formun birinci görevi veri girmeyi kolaylaştırmak olduğu halde, bir kaydı içeren formu, yazdırabilirsiniz. Bunun için klavyede Ctrl tuşunu tutarken P tuşuna basmak veya Dosya menüsünden Yazdır maddesini seçmek yeter. Formun kağıt üzerinde nasıl görüneceğini Dosya menüsünde Baskı Önizleme maddesini seçerek, inceleyebilirsiniz. <B Access’te yeni bir form oluşturmak için çeşitli yollar vardır. Bunlardan biri, Veritabanı penceresinde Nesneler listesinden Formlar’ı tıklamak ve açılacak Form nesneleri penceresinde ya tasarım görünümünde ya da Sihirbazı kullanarak form oluşturma yöntemini seçmektir. Form nesneleri penceresinin araç çubuğunda Yeni simgesini tıklayarak daha çok seçenek bulunan Yeni Form oluşturma aracını açabilirsiniz. Bu seçeneklerden Tasarım Görünümü, seçeceğiniz bir tabloya dayanan ve sıfırdan form oluşturmanızı sağlayacak aracı çalıştırır. Form Sihirbazı ise, sizden form için gerekli seçmeleri yapmanızı ister ve formu kendisi tasarlar. Üç ayrı otomatik form oluşturma aracı ile Grafik Sihirbazı ve Excel-vari özet tablo oluşturma aracını da Yeni Form kutusunda bulacaksınız. Access 2000’de tasarım görünümünde form oluşturmaya başlamadan önce, otomatik bir form oluşturup, bunu tasarım görünümünde açmak, form yapımı için daha eğitici olur. Bir tablo açıkken otomatik form oluşturun ve bu formu kapatın; Access onay istediğinde yeni form olarak kaydetmesine izin verin. Sonra Veritabanı penceresinde Formlar nesnesini seçin ve biraz önce kaydettiğiniz yeni formu seçip, araç çubuğundan Tasarla simgesini tıklayın. Access, formu tasarım görünümünde açarken yanına bir de Araç kutusu açacaktır. Tasarım görünümündeki formun en belirgin özelliği zeminin kılavuz çizgilerle kaplı olmasıdır; formda yeralacak nesnelerin kılavuz çizgilerine yaslanması, nesnelerin görsel olarak düzgün ve hizalı görünmesini sağlar. Araç kutusundaki Nesne seçici (ok biçiminde) ile 32 formdaki nesneleri seçer, ve Mouse düğmesini basılı tutarak,. form üzerinde yeni yere taşıyabilirsiniz. Denetim Sihirbazı denen işaretçiyi seçer ve forma yerleştirdiğiniz bir nesneyi ve Araç Kutusu’ndaki bir nesne simgesini tıkladıktan sonra formu tıklarsanız, bu nesnenin yapılandırılmasında size yardımcı olacak bir dizi diyalog kutusu açılır. Sihirbaz, seçtiğiniz denetim ögesinin özelliklerini belirlemek için sizden ve formun dayalı olduğu tablodan bilgiler derleyecektir. Bir formda yer alabilecek denetim ögeleri, Araç Kutusu’nda sıralanmış bulunuyor. Bunları kısaca ele alalım: Etiket Formdaki bir veri alanını niteleyen başlık olabilir; veya formu kullanarak veritabanına veri girecek olan kullanıcıya yolgösteren yardım metinleri içerebilir. Metin kutusu Bu formun bağlı olduğu tablo veya tablolara veri girme noktalarıdır. Metin kutusunun özellikler penceresini açarak, bu kutuya girilecek bilgilerin veritabanında hangi tabloda hangi alana kayıt olarak işleneceğini belirlersiniz. Seçenek grubu Formunuzda içinden seçme yapabileceğiniz ve bir alana bir değer atayan seçenekler içerir. Siz seçeneklerden hangisini seçerseniz, o seçeneğe vermiş olduğunuz değer tayin ettiğiniz bir alana yazılır. Seçenek düğmesi Genellikle “kadın/erkek” gibi bir seçeneğin seçilmesini sağlar; seçeneğin değeri tayin ettiğiniz alana yazılır. Değiştirme düğmesi Formda basılmış veya basılmamış düğme görünümleri arasında gider gelir ve tıklandığında içerdiği değeri ait olduğu alana yazdırır. Onay kutusu İçerdiği değeri içine işaretü konduğunda ait olduğu alana yazdıran bir denetimdir. Açılan kutu Ya oluştururken sizin vereceğiniz sabit değerleri, ya da bir tablo veya sorgunun oluşturduğu değerleri içerir ve formu dolduran kişi tarafından seçilen değer, ait olduğu alanr yazılır. Liste kutusu İçindeki değerleri liste halinde gösterir; kullanıcının işaretlediği değer ait olduğu alana yazılır. Komut düğmesi Access’in kullanıcıya sunduğu herhangi bir komutu yerine getirebilecek, düğme şeklindeki simge. Örneğin bir formu kaydetmek veya silmek için kullanılabilir. Resim Formunuza işlevsel veya süsleme amacıyla resim koymanız için alan oluşturur. İlişkisiz OLE Nesnesi Windows OLE-uyumlu herhangi bir programın dosyasını görüntülemenizi sağlayan pencere açar. Burada görüntelenecek başka program dosyasının veritabanınızla bir ilişkisi yoktur; form yoluyla bir kayıttan diğerine gidildiğinde bu nesre değişmez. 33 İlişkili OLE Nesnesi Windows OLE-uyumlu herhangi bir programın dosyasını görüntülemenizi sağlayan pencere açar. Burada görüntelenecek başka program dosyasının veritabanınızla ilişkisi kurulmuştur; bu alandaki nesne kayıttan kayıda gidildiğinde değişir. Sayfa sonu Bir sayfadan fazla form oluşturmak istediğiniz zaman, formun kesilmesi ve yeni bir form sayfasının başlamasını sağlar. Sekme denetimi Windows’un sekmeli denetim ve diyalog kutuları gibi formlar yapmanızı sağlar. Sekmenin açtığı alana diğer form ögelerini yerleştirebilirsiniz. Alt form Bir form yoluyla kayıtlarızda değişiklik yaparken, bağlı bir başka bir tablonun denetimini sağlayan ikinci bir form açılmasını sağlar. Böylece aynı anda bağlı tabloda da değişiklik yapabilirsiniz. Çizgi ve diktörgen Formlarınızı kullanıl kolaylığı sağlamak amacıyla mantıksal gruplara ayırmasını sağlayan düz çizgi ve dikdörtgen çizimleri sağlar. Yeni bir form tasarımına başladığınızda, araç kutusundaki denetim araçlarını formunuza yerleştirmiş olmanız, formda yapacağınız değişikliklerin herhangi bir tabloya işleneceği anlamına gelmez. Formun kayıt yapabilmesi için denetimlerin, mutlaka bir tablonun veya sorgunun alanlarına bağlanması gerekir. (Bağlı olmayan denetimler de olabilir. Onlara birazdan değineceğiz.) Form tasarımı sırasında Görünüm menüsünden alan listesi maddesini seçerseniz, formu oluşturmaya başladığınız sırada seçtiğiniz tablodaki bütün alanların listesini görebilirsiniz. Bu listedeki bir alanı Mouse işaretçisiyle tutarak, inşa halindeki formun üzerine bırakarak, kolayca bağlı denetimler elde etmek mümkündür. Bir diğer deetimle alan bağlama yolu ise denetimin Özellikler kutusunda Denetim Kaynağı satırına tablo ve alan adı yazmaktır. Denetim ögelerinin özellikler kutusu, denetim sağ tıklanarak ve açılacak menüden Özellikler maddesi seçilerek görüntülenebilir. Ayrıca Form tasarımı penceresi açıkken Görünüm menüsünden Özellikler maddesini de seçebilirsiniz. Özellikler kutusu, seçili denetimin alabileceği bütün özellikleri içerir. Örneğin bir metin kutusunun tam 60 ayrı özelliği vardır. Özellikler, kutunun üzerindeki sekmelerle gruplara ayrılmıştır. Veri sekmesinde, denetim unsuru ile tablonun alanları arasında veri-bağı kurmanızı sağlayan özellikler vardır. Bu özelliklere Tümü sekmesinde de ulaşabilirsiniz. Veri ile bağlanabilecek bir denetimin Özellikler kutusununda denetim kaynağı satırının sağında iki seçme simgesi vardır. Bunlardan aşağı oku tıkladığınızda, formu oluşturmaya başladığınızda, bir tablo seçtiyseniz o tablonun alanlarını göreceksiniz. Form 34 oluşturmaya başlarken bir tablo seçmediyseniz, bu oku tıkladığınızda karşınıza boş bir satır gelir. Özellikler kutusununda denetim kaynağı satırının sağındaki ikinci seçme simgesi ise yanyana üç nokta şeklinde “deyim oluşturucusu” simgesidir. Bu simgeyi tıkladığınızda Deyim Oluşturucusu diyalog kutusu açılır. Bu diyalog kutusunda, üstte deyim oluşturmaya ayrılan bol alan ile altta yanyana ve birbirine bağımlı üç pencere göreceksiniz: en solda veritabanında mevcut bütün tablolar, sorgular, formlar, raporlar, Access’in kullanılmaya hazır ve 16 grup halinde ayrılmış (aritmetik ortalamadan, tanjant hesaplamaya, tarih çevirmekten, sayı saymaya kadar) 188 işlevi, sabit değerler (boş, doğru, yanlış gibi), 20 adet matematik ve mantık işlem işaretleri (işleçleri, operatörleri), ve ortak değerler (sayfa numarası, toplam sayfa sayısı, o andaki tarih veya tarih/saat, ve o andaki kullanıcı adı) yer alır. Bu pencerede seçtiğiniz grubun alt grupları ortadakinde, ortada seçtiğiiz alt grubun içindekiler ise en sağdakinde görüntülenir. Bir tablonun bir alanını, denetim unsuruna veri kaynağı yapmak için, en soldaki pencerede Tablolar satırını iki kere tıklayın; ortada veritabanının bütün tabloları listelendiğinde arzu ettiğiniz tabloyu iki kere tıklayın. En sağda tablonun bütün alanları listelenecektir. Arzu ettiğiniz alanı iki kere tıkladığınızda, alanın adı, tablonun adıyla birlikte, üstteki Deyim oluşturma alanına yazılacaktır. Tamam’ı tıkladığınızda bu “deyim,” denetimin Özellikler listesinde Denetim Kaynağı olarak gösterilmiş olur. Bu andan sonra formunuzun bu alanına yazacağınız veri, seçtiğiniz tabloda seçtiğiniz alana kaydedilir. Form oluşturmaya başlarken bir tablo seçmiş olsanız bile, bir forma birden fazla tabloya bilgi kaydetme görevi verebilirsiniz. Bir form, veritabanı içindeki bütün tablolara bilgi kaydedebilir. Böylece Access’te veritabanı oluşturma işinin birinci aşaması olan tablo tasarımını ve veri girmeyi, veriişlemin ilk adımı olan sıralama ve süzmeyi ve veritabanımızla daha kolay çalışma aracı olan formları tasarlamayı öğrendik. Şimdi, veri-işlemin gerektirdiği diğer işlere geçebiliriz. Bu işlerin başında tablolarımız arasında ilişki kurmak, Anahtarları belirlemek ve endeksleri (dizinleri) oluşturmak geliyor. İster insanlar arasında, ister tablolar arasında olsun, ilişki zor şeydir; itina ve dikkat, önceden planlama ve sihirli bir anahtar ister! İnsanlararası ilişkide sihirli anahtar nedir sorusunu Access 2000’e ayrılmış bu kitapta ele alamayız. (Zaten bu konu bu kadar bir kitapçığın kapsamını aşar.) Fakat hemen belirtebiliriz ki, Access’te başarılı bir veri-işlemin sihirli anahtarı Birincil Anahtar’dır: tablolar 35 arasındaki ilişkiyi bu Anahtar ile kurarız, ve göreceğimiz gibi, daha bir çok kapıyı bu anahtarla açarız. İkinci bölümdeki alıştırmayı yaptıysanız, oluşturduğunuz her tablonun tasarım görünümünü kapatırken, Access 2000’nin bu tabloda bir Birincil Anahtar tayin edilmediğini vurgulayarak sizden ısrarla bir alanı Birincil Anahtar olarak belirleminizi istediğini görmüş olmalısınız. Neden? Çünkü birincil anahtar her tabloya, daha sonra bir başka tablo ile ilişkilendirmek istediğinizde bu ilişkide özgün kişiliğini verecektir. Birincil anahtar olarak belirlenen alandaki bilgilerin benzersiz olması gerekir. Access sizi buna zorlamaz, ama birincil anahtar alanındaki bilgileriniz her kayıt için benzersiz değilse, neden birincil anahtar olarak atamış olabilirsiniz? Birincil anahtar, bir kaydı, bir başka tablodaki bir kayıtla birleştirmekte kullanacağımız anahtardır. Birincil anahtarın diğer işlev ve yararlarına kısaca değindikten sonra kayıt birleştirmedeki rolüne döneceğiz. Her tablonun bir, ama sadece bir, Birincil Anahtarı olabilir. Access 2000, her tablonun birincil anahtarını otomatik olarak endeksler (ve bu sayede veritabanı daha hızlı çalışır). Tablonuzda siz bir alanı Birincil Anahtar olarak atamadıysanız, Access 2000 bir birincil anahtar alanı oluşturmak ister; bunu onayladığınızda bir otomatik sayı alanı açar; tablonuzda zaten birinci alanda otomatik sayı türü bir veri varsa, Access 2000 bu alanı birincil anahtar olarak atar. Bu sebeple, iyi bir tablo tasarımı ilerde kullanmayacak bile olsanız, birinci alanı otomatik sayı olarak belirlemeyi gerektirir. Birincil anahtar, hemen hemen daima sadece bir alandan oluşur. Fakat Access 2000, ancak çok pahalı veritabanı Server programlarının yapabileceği bir imkana da sahiptir: veri-işlem işiniz birden fazla alandan oluşan Birincil anahtar kullanmanızı gerektiriyorsa, bunu yapabilirsiniz. Çok-alanlı Birincil Anahtar, ileri düzeyde veri-işlem ve sorgulama bilgisi gerektirir. Her veri türü birincil anahtar olamaz: birincil anahtar olarak kullanamayacağınız veri türleri, Internet adres bağlantısı (köprü), OLE ve not türleridir. Buna göre, metin, sayı, tarih/saat, para birimi, Evet/Hayır, ve otomatik sayı alanları birincil anahtar olarak kullanılabilir. Tablolarınız, birincil anahtar alanına göre otomatik olarak sıralanır. (Eğer bir Evet/Hayır alanını birincil anahtar yapmaya kararlıysanız, tablonuzda en fazla iki kayıt olması gerekir. Neden?) Birincil anahtarın tabaloda birinci alan olması gerekmez; herhangi bir alan birincil anahtar olabilir. Fakat kendinizi tabolalarınızda birincil 36 anahtar arama zorluğundan kurtarmak için daima birinci alanı birincil anahtar yapacağınız veriye ayırmanız iyi bir alışkanlık olur. “Tablomda hangi alanı birincil anahtar yapmalıyım?” sorusu kaçınılmaz olarak sorulacak sorudur. Bu sorunun bir cevabı olabilir: Benzersiz veri içeren alanlardan birini birincil anahtar yapın. Birincil anahtar seçiminde anahtar kelime, “benzersiz” kelimesidir! Seçeceğiniz alandaki veri, her kayıt için özgün olmalıdır; başka hiç bir kayıtta tekrar etmemelidir. Kişilerin adlarını, soyadlarını içeren alanlar özgün olamaz. Öğrenci numaraları, araç plaka numaraları da bir kaç yıl sonra tekrar başka öğrenciye veya araca verilebilir. Telefon numaraları bir ülke için özgün olabilir (her bölgenin kodu farklı olacağı ve aynı bölge kodunda benzer numara bulunmayacağı için), ama veritabanınızda örneğin bölge kodu aynı olan Istanbul ve New York kentlerindeki dostlarınızın telefon numaraları varsa, zor bir tesadüf bile olsa, aynı numara bulunabilir. Birincil anahtar alanı belirlerken, tablonuzda özgün-benzersiz veri bulunan alan arayın. Bütün alanlarınızdaki verilerin tekrar etmesi ihtimali varsa, yeni bir alan açın ve içine otomatik sayı koyun.. Gerisini Access 2000 düşünsün! Bir tabloda birincil anahtar alanı tayini son derece kolaydır. Tabaloyu tasarım görünümünde açın; birincil anahtar olarak atamak istediğiniz alanın adının bulunduğu kutuyu sağ-tıklayın ve açılacak menüde birinci madde olan Birincil Anahtar maddesini seçin. Bu alanın adının önündeki kutuda küçük bir anahtar simgesi belirecektir. Birincil anahtarın veritabanı için önemini ortaya koyacak küçük bir deney yapalım ve sonra birincil anahtarın birincil görevi olan tablo ilişkilendirme konusuna dönelim. Yukarıdaki alıştırmayı yaptıysanız Çocuklar tablosunu (veya herhangi bir alanı Birincil Anahtar olarak tayin edilmiş bir başka tabloyu) açın, ve yeni bir satırda birincil anahtar alanına mevcut değerlerden birini tekrar yazın. İşinizin bittiğini belirtmek üzere başka bir hücreyi tıklayın; Access 2000 hemen hata mesajı verecektir: Birincil anahtar alanındaki verinin özgün olması gerekir; yoksa bu anahtar aslî görevini yapamaz. Tablolar arasında ilişki kurmak suretiyle, veritabanı dosyamızı düz veritabanı olmaktan kurtardığımızı söylemiştik. Tablolar arası ilişki, Access 2000’in daha hızlı sorgu icrası yapmasını sağlar; veri-işlem 37 işlerimiz daha verimli olur. Bu sayede verilerimizi güncelleştirirken, bütün tabloları elden geçirmek ve hatta yeniden girmek zorunda kalmayız; sadece güncelleştirilmesi gereken tabloya ek veya bu tabloda değişiklik yaparız. Bir firma düşünelim: en az 200 firmadan hammadde alıyor ve en az 500 bayie mamül madde veriyor. Bu firmaların adreslerinden, alınan hammadde ve verilen mamül maddelerin özelliklerine kadar, diyelim ki 2 bin sütun dolduran verilerimizi tek tabloda topladığımızı varsayalım. Böyle bir tabloda, aldığımız mallara ilişkin bilgi sütunları, sattığımız mallara ilişkin satırlarda boş kalırken, sattığımız mallara ilişkin bilgi sütunları aldığımız mallara ilişkin satırlarda boş bırakılmak zorundadır. Bu hem gereksiz yere şişkin bir veritabanı dosyasına yol açar, hem de veri girişinde sayısız hatalara sebep olur. A firmasından aldığımız yeni bir mala ait yeni bir kayıt girerken, firmanın adından adresine, faks numarasından posta koduna kadar bütün bilgileri yeni satıra tekrar yazmak zorunda kalırız. Bu, yeni yazım hatalarına davetiye çıkartmak demektir. Tekrar eden bu bilgilerin dosya boyutuna bindireceği yükü düşünün! Oysa elimizde bir firmalar tablosu, bir de mallar tablosu bulunsa; her bir malın hangi firmadan alındığı veya hangi firmaya verildiğini gösteren alana, firmalar tablosunun birincil anahtarından bağ kursak, hem tekrar-tekrar veri girişinin yol açacağı insanî hatalardan korunmuş oluruz (bu bilgileri girecek operatörlere vereceğiniz ücreti de unutmayın!), hem de işlenmesi kolay nisbeten küçük veritabanı dosyasına sahip oluruz. Verilerimizi tek tabloda toplamanın sakıncalarını anladık. Ve diyelim ki elimizde böyle, beş veya altı tabloya bölünmüş bir veritabanı var. Şimdi, son 3 ay içinde mal aldığımız firmaların bir dökümünü çıkartmak istiyoruz. Beş-altı ayrı tabloyu mu kağıda dökeceğiz? Bu ayrı ayrı tablolara bölünmüş bilgileri nasıl birleştireceğiz? Başka bir deyişle, ayrı tablolara böldüğümüz verileri işare yarar, anlamlı diziler haline getirmek için nasıl birleştirebiliriz? Bunu, tabloları herbirinin diğeri için anlamlı tek özgün alanından, yani Birincil Anahtarlarından birleştirerek yapabiliriz. Veritabanınızı bu birden fazla tabloya bölerek ve herbirine özgün birincil anahtar alanları koyarak tasarlasanız bile, aynı veritabanı içinde yer alıyorlar diye tablolarınız kendiliklerinden ilişki kurmazlar. Bunu bizim sağlamamız gerekir. Kendi tablolarımızda kendi ilişkilerimizi oluşturmadan önce, Access 2000’nin bunu nasıl sağladığını görmek, ilişki konusunda bize daha iyi fikir verecektir. Bunun için Access 2000’i çalıştırın; Yeni veritabanı oluşturmak üzere açılan pencerede Veritabanları sekmesini seçin ve Stok Yönetimi şablonunu 38 işaretleyin. Yeni boş stok yönetimi veritabanınız oluşturulduğunda, eğer Access penceresi içinde küçültülmüş durumda ise veritabanı penceresini büyütün; Switchboard adı verilen veritabanını kullanmanız için oluşturulan grafik arayüzü kapatın. Stok Yönetimi1 adlı yeni stok yönetimi veritabanınızın nesnelerinden Tablolar’ı seçtiğinizde, yedi adet aslî tablo oluşturulduğunu göreceksiniz: Ürünler, stok hareketleri, kategoriler, çalışanlar, sipariş formları, üreticiler ve nakliye yöntemleri. Stok yönetimi konusu ile hiç ilginiz yoksa bile, sadece ilişki konusunu kavramak için, bu tabloların bir firmanın elindeki stokları takip için gerekli ve yeterli olduğunu varsayalım. Şimdi, Araçlar menüsünden İlişkiler maddesini seçin. Karşınıza şuna benzeyen bir pencere açılacaktır: Açılan penceredeki kutular arasındaki çizgiler buradaki görüntüye benzemiyorsa, kutuları Mouse işaretçisiyle başlıklarından tutarak sürükleyebilir ve konumlarını buradakine benzer şekle getirebilirsiniz. Bu pencerede, kutuların başlığının tablo adlarını içerdiğine dikkat edin. Kutuların içindeki maddeler ise tablolardaki alanların adlarıdır. Her tablonun kutusunda bir alan adının koyu yazıldığını görüyor musunuz? Bu, o tablonun birincil anahtarı olan alandır. Bazı alanlardan çıkan çizgilerin diğer bir kutudaki alana bağlandığını görüyorsunuz. Dikkat ederseniz, aralarında çizgi bulunan alan adlarının aynı olduğunu da göreceksiniz. Bu çizgilere ilişki denir; tabloların birbirleri ile hangi alanlarından ilişkide olduklarını gösterir. Şemaya veya Access İlişkiler Penceresi’ne tekrar bakarsanız, ilişki çizgilerinin bazılarının sol ucunda “1,” sağ ucunda sonsuz işaretinin bulunduğunu, bazı ilişkilerde işaretlerin yer değiştirdiğini ve diğerlerinde ise çizgilerin işaretsiz olduğunu göreceksiniz. Bu işaretler kurulan bağın niteliğini gösterir; bağın niteliği ise daha sonra iki tablo arasında yapılabilecek birleştirmede hangi kayıtların hangi kayıtlarla birleştirileceği veya Access’in deyimiyle eşleştirileceğini tayin eder. Bu tanımla biraz şifreli görünüyorsa da Access’te kurabileceğimiz ilişkilerin niteliklerini ele alınca manzara aydınlığa çıkacaktır. Tablolarınızın arasında üç tür ilişki olabilir: Bire bir ilişki: İlişkilendirdiğiniz iki tablodan birincisi ile ikincisi arasında sadece bir kayıt eşleşebilir. Bu tür ilişkilendirmeyi tabalolarımızda sık kullanmadığımızı göreceksiniz; çünkü genellikle böyle tek gerçekli tablo yapmayız. Bir-çok ilişkisi: Birbirine bağladığımız iki tablodan birindeki bir kayıt diğer tabloda birden fazla kayıtla eşleşebilir. İkinci bölümdeki örneğimizi hatırlarsanız: bir ailenin birden fazla çocuğu olabilir; fakat her çocuğun sadece bir ailesi olabilir. Dostlarnımızın çocuklarıyla 39 birlikte bir tablosunu edinmek istersek, üç çocuklu dostlarımızın adı yeni tabloya üç ayrı satırda yazılacak, iki çocuklu dostlarımızın adları iki, tek çocuklu dostlarımızın adları ise bir kere girecektir. Neden? Çünkü aile bağı (Aile Sıra No alanı), Çocuklar tablosunda çok kayda işaret ediyor. Çok-çok ilişkisi: İlişkilendirdiğimiz tablolardan birincisinde birden fazla alan, ikincisinde birden fazla kayda (ve tabiî ikincisindeki birden fazla alan birinci tablodaki birden fazla kayda) işaret ediyorsa, bu kez tablolar arasında çok-çok ilişkisi var demektir. Örnek tablomuzda böyle bir durum yok, ama bir sipariş veritabanı düşünün: her bir sipariş emrinde birden fazla mal sipariş ediliyor olabilir; mal tablosunda ise her bir mal birden fazla sipariş tablosunda görünüyor olabilir. Böyle bir ilişkinin sonucu ortaya çıkacak üçüncü tabloda hem hem her bir sipariş, hem de her bir mal birden fazla satırda görünecektir. Şimdi bu bilgilerin ışığında biraz önce oluşturduğunuz Stok Yönetimi veritabanının ilişkiler penceresine bakalım. Şimdi bu veritabanındaki dosyaları kullanarak, firmamızın verdiği siparişlerle ilgili ve siparişi veren personele göre sipariş miktarlarını gösteren yeni bir tablo yapabilir miyiz? Yapabiliriz. Siparişi veren Personel, hangi tabloda hangi alandaki bilgi ile bulunacak? Çalışanlar tablosundaki ÇalışanNo alanındaki veri ile. Peki, bu alandaki kayıtlar, hangi tablodaki hangi alanda bulunan kayıtlarla eşleştirilecek? Sipariş formları tablosundaki ÇalışanNo alanındaki kayıtla. Yani Çalışanlar tablosundaki ÇalışanNo alanındaki veri Ahmet Çalışkan arkadaşımıza ait 812 ise ve bu değer, Sipariş formları tablosundaki kayıtlarda ÇalışanNo alanındaki değerlerle eşleşiyorsa, bu kayıt yeni tablomuza alınacak; sonra sırasıyla diğer değerler taranacak, eşleşenler yeni tabloya dahil edilecektir. (“Yeni tablo nerede ve nasıl oluşacak?” sorusunu şimdilik sormayın; bunu Sorgu ile yapacağız; ve daha sonra ele alacağız.) Çalışanlar tablosundaki ÇalışanNo alanında Mehmet Tembeloğlu arkadaşızı belirten 813 şeklindeki veri, Sipariş formları tablosundaki kayıtlarda ÇalışanNo alanındaki hiç bir veri ile eşleşmiyorsa ne olacak? Yeni tabloda 813 şeklindeki ÇalışanNo’yu içeren bir kayıt olmayacaktır. Ve muhtemelen Mehmet Tembeloğlu, neden hiç sipariş vermediğini izah etmek zorunda kalacaktır! Tablolarımız arasında ilişki oluşturma işini kendimiz yapmak istersek, yine biraz önce açtığımız Araçlar menüsünden İlişkiler maddesini geçerek açtığımız pencereyi açmamız gerekir. İkinci bölümdeki Adres Defteri alıştırmasını yaptıysanız, şimdi bu veritabanı dosyasını açabilirsiniz. Bu alıştırmayı yapmadı iseniz, şimdi ikinci bölüme dönüp bu dosyayı oluşturabilirsiniz! Veritabanı açıldığında veya tabloları 40 oluşturma işini bitirdiğinizde Araçlar menüsünden İlişkiler maddesini seçin. Karşınıza şuna benzeyen bir görünüm gelecektir: Biz kurmadığımız halde iki tablomuz arasındaki bu ilişki, Çocuklar tablosunu oluştururken, Aile Sıra No alanının doldurulması için Aile tablosunun aynı adlı alanına girilmiş kayıtlara bakılmasını istemiş olmamızdan kaynaklanıyor. Burada gördüğünüz çizgiyi ortasından sağ tıklayın ve açılan menüden Sil maddesini seçin; Access silme işlemini onaylattırmak istediğinde Evet’i tıklayın. Şimdi ilişki oluşturmaya sıfırdan başlayabiliriz. Önce bir kere daha kurmak istediğimiz ilişkinin amacını tekrar edelim: yeni adres defterimizi oluşturduğumuz sırada öyle bir an olabilir ki, dostlarımızın çocuklarını gösteren, veya çocukların ailelerine göre sıralandığı bir liste yapmak isteyebiliriz. Böyle bir yeni tablo oluşturmaya kalktığımızda, Access’in hangi çocuğun hangi aileye ait olduğunu bilmesi gerekir. Bunu iki tabloyu ilişkilendirerek veya başka bir ifadeyle Access’e, hangi çocuğun hangi aileye ait olduğunu nasıl belirleyeceğini söyleyerek yapabiliriz. Access’e şunu söylemek zorundayız: Çocuklar tablosundaki kayıtlarla Aile tablosundaki kayıtları birleştirirken birinci tablonun Aile Sıra No alanındaki değerin Çocuk tablosundaki kaydın aynı isimli alanındaki değerle eşleşip eşleşmediğine dikkat et; eğer bu veriler aynı ise o zaman bu çocuk o aileye ait demektir; iki kaydı birleştirebilirsin. Bunu söylemenin yolu ise çok kolay: İlişkiler tablosuna ait kutudaki AileSıraNo satırını Mouse işaretçisiyle tutup, götürüp Çocuk tablosundaki AileSıraNo satırının üzerine bırakın. (İlişkiler penceresini açtığınızda tablolarına ilişkin kutuları göremiyorsanız, İlişkiler menüsünden Tablo Göster maddesini; açılacak kutuda kayıtları arasında ilişki kuracağınız, dolayısıyla görüntülenmesini istediğiniz tabloları seçerek Ekle düğmesini tıklayın.) Sürükleme sırasında Mouse işaretçisinin dikdörtgen ilişki simgesine dönüştüğünü göreceksiniz (işaretli). Mouse işaretçisi bırakacağınız yere dikkat etmelisiniz: Access 2000, dörtgeni hangi alan adı üzerinde bırakırsanız, o alanı ilişkilendirir. Mouse’un sol düğmesini bıraktığınız anda İlişkileri Düzenle diyalog kutusu açılacaktır. Burada solda ilişkinin başladığı tablo ve alan ile ilişkinin kurulduğu tablo ve alan gösterilmektedir. Her ikisinin de seçme düğmelerini tıklayarak başka alanlar seçebilirsiniz. Bu listenin altında, “Bilgi tutarlılığına zorla” seçeneğine işaret koyarsanız, Access 2000 size iki seçenek daha verir: ilişkinin sol tarafındaki alan güncelleştirilirse, bu ilişkiye dahil tabloların da güncelleştirilmesi, alan silinecek olursa diğer tablodaki kayıtların da silinmesini sağlayabilirsiniz. (Güncelleştirme 41 kullanışlı bir seçenek olmakla birlikte, silme işlemini otomatik hale getirmek, istemeden bilgi kaybına uğramanıza yol açabilir.) İlişkileri Düzenle kutusunun sağ tarafındaki düğmelerden Birleştirme Türü düğmesini tıklaksanız, ilişkinin yönü ve türünü belirleme imkanını veren, üç seçenekli Birleştirme Özellikleri kutusunu açmış olursunuz. Burada yapacağınız tercihler, hangi tablodan hangi kaydın alınacağını belirler. (Sırasıyla her üç seçeneği seçtiğinizde, ilişki çizgisinin ucundaki okların yönünün nasıl değiştiğine dikkat edin.) Kutuları sarısayla kapattığınızda, iki tabloyu ilişkilendirmiş, başka bir deyişle Access 2000’i bu tabloları kullanarak yapacağınız veri-işleme hazırlamış olursunuz. Bir veritabanındaki tablolar arasında ilişkileri oluştuğunuz zaman Access 2000, hiç bir yapmayacak, söz gelimi ortaya yeni bir tablo veya rapor çıkartmayacaktır. Bunu yapması için gerekli talimatı daha sonra vereceğiz. Şimdilik sadece Access’e, bu talimatı yerine getirmesi için gerekli bilgiyi vermiş, veritabanımızın tabloları arasındaki bağları tanıtmış olduk. Dizin Access 2000’in veri-işlem işleri için yapması gereken bir diğer hazırlık ise Endeks çıkartmaktır. Veritabanımızın tablolarını neden endekslettirmek isteriz? Daha sonra yapacağımız veri-işlemleri hızlı olsun diye? Access 2000’ın endeksi, tıpkı bir kitabın arkasındaki endeks gibi çalışır: aradığınızı kolay bulursunuz. Burada bulma işlemini kitap okurundan farklı olarak kullanıcı değil Access yapmaktadır. Access, kendi endekslerini, vereceğiniz sorgu talimatlarını icra ederken, tabloları sıraya sokarken, rapor oluştururken ve arama yaparken kullanır. Köprü, not ve OLE nesnesi içeren alanlar dışındaki tür alan türleri endekslenebilir. Sadece Birincil Anahtar olan alan değil, bütün alanlar (türü uygunsa) endekslenebilir; birincil anahtar alanı otomatik endekslenir. Endeks, sorgu, sıralama ve aramayı hızlandırır; fakat bir veri tabanında ne kadar çok alan endeksleniyorsa, Access 2000’in veriişlem hızı o kadar azalabilir. Access 2000’e tablo tasarımı sırasında, endeks yaparken birden fazla benzer kayıt bulunması halinde ne yapması gerektiğini biz söyleriz. Tablo tasarım penceresinde bir alan türünü tıkladığınızda, alan türü elverişli ise, pencerenin Alan Özellikleri bölümünde Sıralı satırı belirir. (Access 2000, endekse yardım dosyalarında “dizin” derken burada “Sıralı” demeyi tercih ediyor. Ama bu kadar kusur, kadı kızında da olur!) Bu satırın içini ve sağında belirecek seçme okunu tıklarsanız, üç seçeneğiniz bulunduğunu görürsünüz: “Endeks yapma!” anlamına “Hayır” ; “Endeks yap, ve 42 tekrarlara aldırma!” anlamına “Evet, Tekrarlama Var”; ve “Endeks yap ve bu arada tekrarları yakala!” anlamına “Evet, Tekrarlama Yok.” Bu sonuncu tercihi seçerseniz, Access, endekslenmiş alanlarda, tüm kayıtların benzersiz olmasına dikkat eder ve sizi uyarır. Böylece, veritabanımızı birincil anahtarları, ilişkileri ve endeksi ile veriişleme hazırlamış bulunuyoruz. Bundan sonra, tablolarımızı sorgulayabilir; tablolar ve sorgulardan raporlar hazırlayabiliriz. Verilerimizi, kelime işlem programının içinde tablolar oluşturup, bu tabloların içine yazmıyorsak, bunun bir nedeni olabilir: Verişlem programlarının sorgu aracı. Sorgu veya Query, veritabanı fikri ortaya atıldığı günden beri var. Hatta, veritabanı dosyalarının, diğer bilgisayar kayıt dosyalarından ayrışmasını sağlayan unsur, sorgudur. Bir veritabanı dosyasındaki bilgileri sorgulama ve bu verilerden yeni bilgiler elde etme ihtiyacı o kadar belirgin hale geldi ki, bilgisayar mühendisleri sırf bu iş için bir dil bile icad ettiler: Sorgu Dili (Query Language). Ne var ki, veritabanı biçimi kadar sorgulama dili ortalığı kaplayınca, belli başlı bilgisayar donanım ve yazılım firmaları ve üniversiteler biraraya gelerek, bu kargaşaya son vermek üzere kolları sıvadılar; ve ortaya SQL (Structured-Yapılandırılmış Sorgu Dili) çıktı. SQL, 1980’lerin başlarında Sybase firması tarafından UNIX ortamı için geliştirildi. Microsoft firması, Sybase’den ruhsatını aldığı bu teknolojiye dayanan MicrosoftSQL Server programını 1987’de Windows 3 için piyasaya sürdü. Ertesi yıl, MS, Sybase ve Ashton-Tate firmaları MSSQL-Server’nın OS/2 sürümünü ortaklaşa hazırladılar ve daha sonra IBML’in de katıldığı bu çaba 1991’e kadar sürdü. Ashton-Tate’in bu birlikten 1990’da çekilmesi üzerine, Sybase ve MS yeni bir anlaşma yaparak, dili ve Server’ı, Windows NT ortamı için birlikte geliştirmeye başladılar. Bu çabanın sonucu SQL Server programı oldu. Bu program, bugün 7’nci sürümündedir. Bir taraftan endüstri çapında geçerli bir teknoloji ve bu teknolojinin başlıca aracı olan bir dilin adı olarak SQL, diğer taraftan Microsoft firmasının bu teknoloji ve dili kullanan bir programının adında (SQL Server) kullanıldığı için, sadece Microsoft’a ve Windows ortamına ait sanılabilir. Bu doğru değildir. SQL, bugün piyasada bulabileceğiniz belli başlı veritabanı oluşturma ve veri-işlem programlarının ortak dilidir. Microsoft Access, 1992 yılında dünyaya geldi; ve ilk günden itibaren tek başına bir veritabanı oluşturma ve işleme programı olarak değil, 43 fakat daha büyük veritabanı dosyalarına, veri bankalarına bağlanabilen ve oradaki verileri işleyebilen bir program olarak tasarlandı. Access 2000, Access Projesi (Dosya menüsünden Yeni maddesini ve açılan şablon kutusunda “Proje (Yeni Veritabanı)” adlı simgeyi tıklayın) dosyaları oluşturarak, SQL Server dosyalarına ulaşabilir; bu dosyalarda SQL sorguları çalıştırabilir. İyi bir Access kullanıcısı, bu programla büyük veritabanı mimarisine adam atabilir; ileri düzeyde veri-işlem tekniklerini öğrenebilir. Veri Madenciliği (Data Mining) teknolojileri, Online Analytical Processing (OLAP) teknikleri ve günümüzde veri yönlendirmeli Web uygulamaları, SQL’e dayanan gelişmelerdir. Access’te öğreceğiniz SQL, size bu teknolojilerie ilk adımı atmayı sağlayacaktır. Access’te SQL’e ilk adım ise daha önce gördüğümüz Süzme işleminin son bölümünde kısaca sözünü ettiğimiz Gelişmiş Süzme/Sıralama aracı ile atılabilir. Aslında Access’te yaptığımız seçme veya Form yoluyla süzme işlemleri, bir sorgu işlemidir; ancak bu sorgunun SQL komutunu (veya Access’in kullandığı kelimeyle, “deyimini”) Access kendisi oluşturur. Gelişmiş Süzme/Sıralama (GSS), diğer süzme işlemlerine göre “ileri” sayılırsa da, bir sorgu deyimi (SQL komutu) yazmanın yanında basit sayılabilir. Bu sebeple, tabir yerinde ise Access’in desteklediği bir sorgu geliştirme işlemi olan GSS’yı sorguya giriş konusu olarak ele alabiliriz. GSS’yı kavradığımız anda sorgu tekniğini kavramış oluruz. Access’in sorgu tekniği ise daha genel SQL’e giriş sayılır. GSS’nin bir sorgu aracı olarak sınırlamaları vardır. Sadece bir tablonun içerdiği verilerle çalışabilir; birden fazla tablo veya başka sorguların sonuçlarını kullanamaz. Sonuç itibariyle gSS de bir tabloda belirli ölçütleri karşılayan kayıtları görünteleme aracından başka bir şey değil; birden çok tabloda sorgu yapmak için gerçek sorgu aracını kullanıp, gerçek SQL komutları yaszmamız gerekir. GSS’te verilere sadece basit sorular sorabiliriz. (Daha gelişmiş sorgular için, gerçek sorgu aracını kullanırız.) GSS ile yapacağımız süzme sonunda görüntülenen kayıtların bütün alanları görüntülenir; oysa gerçek sorguda ortaya çıkacak yeni tablo veya formda hangi alanlar olsun istiyorsanız o alanlar olur. Bu sınırlamalarına rağmen (belki de bu yüzden) GSS, Access’te sorguya giriş için mükemmel bir adım sayılır. Şimdi bir tabloyu açın ve Kayıtlar menüsünden önce Süz, sonra Gelişmiş Süzme/Sıralama maddesini seçin. Bu, eğer başta tablo ekleyebilseydik, sorgu hazırlama penceresinin ta kendisi olurdu. GSS, belirttiğimiz gibi sadece bir tablo ile çalışır; ve o 44 tablo da seçilmiş olarak karşımıza gelir. Bu penceresi inceleyelim. Üstte, sorguda (pardon, süzgeçte) kullanılacak tablo yer alır. Buraya alan listesi denir. Altta ise süzgeci oluştururken kullanacağımız, şimdilik boş olan, sorgu tasarım kılavuzu yer alır. Burada sadece sözme amacıyla yararlanacak da olsak oluşturacağımız “şey” gerçekten bir sorgudur. Bu bölümde, Alan isimli birinci satırın birinci sütundaki kutusunun içini, sağda seçme oku belirince oku tıklayın: yukarıda alan listesinde yer alan alan adlarının burada sıralandığını göreceksiniz. Sorgu, burada olduğu gibi ileri düzeyde süzme işlemi için bile olsa, “veriye soru sorulması” anlamına gelir. GSS’de bir sınıftaki öğrencilerin sınav notlarını içeren tablomuza örneğin “Son üç sınavda 4,5’dan aşağı not almış öğrenciler kimler?” diye sorabiliriz. Ya da yemek tariflerini derlediğimiz bir veritabanında, “Kebaplar” tablosuna “İçinde biber olmayan ve kıyma ile yapılmayan kebaplar hangileri?” sorusunu yöneltebiliriz. Müzik kaset ve CD’lerinizin veritabanındaki “Türküler” tablosuna “Yavuz Bingöl’ün 1996’dan sonra çıkmış kaset ve CD’leri hangileri?” diye sorabiliriz. Ya da elimizdeki Adres Defteri veritabanında Aile tablosuna “Istanbul ve Niğde’de oturan ve kart yollamam gereken dostlarım kimler?” şeklinde bir soru yöneltebiliriz. Bunun için, Alan sırasının birinci sütundaki kutusunun seçme okunu tıklayarak, alan listesinden Şehir’i seçmemiz gerekir. Sonra, GSS’nin sadece süzme değil aynı zamanda sıralama yaptığını hatırlayarak, ikinci sıradaki Sırala kutusunun sağındaki seçme okunu tıklayarak, Artan, Azalan ve Sırasız seçeneklerinden Artan’ı seçelim. Ve sıra geldi, süzme için uygulatacağımız ölçütleri belirlemeye. Ölçüt satırının içini tıklayıp “Istanbul” yazıyoruz. Tırnak işaretlerini siz koymazsanız, Access koyar. Istanbul VE Niğde’de oturan dostlarımızı birlikte seçmek için, alttaki VEYA satırına da “Niğde”yazalım. Buraya kadar, tabloya soracağımız sorunun birinci bölümünü sormuş olduk: Istanbul ve Niğde’de oturanlar. Şimdi sorgunun ikinci bölümüne geliyoruz: Kart göndermem gerekenler. İkinci bölümdeki veritabanı alıştırmasını yaptıysanız, “KartYolla” alanının türünü “Evet/Hayır” yaptığımızı hatırlıyor olmalısınız. Şimdi, Alan satırının ikinci sütununda KartYolla alanının seçin; (“Evet” değerlerinin sıraya sokulmasına gerek olmadığına göre ikinci satırı atlayabilirsiniz) ve Ölçüt sarımına Evet yazın. Araç çubuğundaki Süzgeçi Uygula simgesi tıklayın ve tablonuzun sadece Istanbul veya Niğde’de oturanlardan kendilerine kart yollamam gerekenleri gösterdiğini, diğerlerinin süzüldüğünü ve süzgecin diğer tarafında kaldığını göreceksiniz. Kendi kendinizi kutlayabilirsiniz: çünkü sadece Access’in gelişmiş süzme ve sıralama aracını kullanmakla kaldık; SQL komutu yazmaya 45 da ilk adımı attık. Şimdi artık Access’te ciddi sorgulama işleri yapabiliriz. “Sorgu, veriye soru sormaktır!” demiştik. Kimi zaman bir tablonun cevaplayabileceği soruları, süzme ve hatta sıralama ile çözümleyebiliriz. Fakat elde iki veya daha çok tablo varsa ne yapanız? Diyelim ki, siz sadece bir sınıfın değil, beş ayrı sınıfın öğretmenisiniz ve sınıflarınızda başarı oranını etkileyen garip bir eğilim farkettiniz. Sizin derslerinizde kız öğrenciler genellikle başarısız oluyor. Sadece bir sınıfın öğretmeni olsanız, bu kuşkunuzun yerinde olup olmadığını sınamak için iki süzme işlemi size sonucu verirdi. (Nasıl?) Fakat beş ayrı sınıf söz konusu olunca, her tablonun kendi içindeki yüzdeler, anlamlı olmayabilir. Size bütün tablolardan seçme-süzme yapan bir araç gerekiyor. Ya da beş tabloya birden soru sormanızı sağlayacak bir araç. Bu aracın adı Sorgu’dur. Access’in Sorguları Access 2000, bize altı ayrı sorgu türü veriyor. Bunlardan Basit Seçme sorgusu, biraz önce ele aldığımız Gelişmiş Süzme/Sıralama aracının birden fazla tablo kabul edebilenidir. Çapraz sorgu, verileri gruplandırarak, bunlar için sayım, toplam ve ortalama gibi hesapları yapar. Örneğin öğrencileri cinsiyetlerine ve derslere göre gruplandırıp, aldıkları not ortalamalarını göstermek., çapraz tablo yapmaktır. Çapraz sorgu bir tabloda çalıştığı için, örneğin öğrencilerinizin notları derslere göre ayrı tablolarda ise bunları bir tabloda basit seçme sorgusuyla birleştirmeniz gerekir. Tablo yapma sorgusu, seçme sorgusundan farklı olarak, çalıştığı zaman ortaya bir tablo penceresi çıkmaz; Access, sizden daha önce aldığı isimle bir tablo oluşturur. Bu tablo veritabanının parçası haline gelir. Oysa diğer sorguların sonuçları ancak sorgu çalıştığı sırada vardır. Güncelleştirme sorgusu, sorgu tasarımı sırasında verdiğiniz bir sabit değeri veya verdiğiniz bir deyimin o sırada bulunacak sonucunu, tayin ettiğiniz bir alana yazar. Bu, “BulDeğiştir” gibi basit bir araç olmayıp, her kaydı, belirli bir formüle veya kıydın kendi içindeki bir değere göre yeniden hesaplayabilir. Ekleme ve Silme sorguları da güncelleştirme sorgusu gibi, ya farklı tabloların kayıtlarını birbirine ekler, ya da tablolardaki kayıtları siler. Bunların dışında tasarım sırasında yüklediğiniz işlevlerin bir sonucu olarak bir sorgu Parametre sorgusu (verdiğiniz görevi yapabilmek için kullanıcıdan bir değer girmesini isteyen sorgu), SQL Sorgusu (SQL komutlarını kullanarak birleşim, doğrudan sorgu, veri tanımla ve alt sorgu gibi veritabanınızı ODBC yoluyla dışarıdan kullanacak kullanıcıları gözönünde tutarak hazırladığınız sorgular) ve otomatik arama sorgusu 46 (yeni bir kaydın bazı alanlarının otomatik olarak doldurulmasını sağlayan sorgu, AutoLookup sorgusu) diye de adlandırılabilir. Basit Seçme Sorgusu (BSS) dışındaki sorgular, ileri düzeyde Access bilgisi ve hatta bir ölçüde Programlar İçin Visual Basic (VBA) bilgisi gerektirebilir. BSS’yi iyi kavrayarak, bu ileri düzeydeki sorgular için mükemmel bir başlangıç yapabilirsiniz. BSS’in temel özelliklerini sıralarsak, şunlar karşımıza çıkıyor: 1. Sorguda birden fazla tablo kullanabilirsiniz; tablolar arasında oluşturduğunuz ilişkiden yararlanabilirsiniz. 2. Sorgu sonucu sadece istediğiniz alanları görüntüleyebilir; bu sırada gerekli olmayan sütunları yeni sorgu sonucu tablosuna almayabilirsiniz. 3. Sorgu sonucu oluşacak tabloda alanları istediğiniz sütun sırasına sokabilirsiniz. 4. Seçme işlemi sonucu kaç kaydın görüntülenmesini istiyorsanız, o kadar kayda yer verebilirsiniz. 5. BSS (ve diğer) sorguları icra ettikten sonra, sorguya konu olan tabloların değerlyeri değişmez; başka bir deyişle sorgular tabloları sadece “okur,” içeriğini değiştirmezler. Bir sorgu işledikten sonra tablo oluşturuyorsa (Tablo Yapma Sorgusu ise) ortaya yeni bir tablo çıkar. Sorguyu tekrar çalıştırdığınızda bu tablo yeniden yazılır ve Access 2000, Özelleştir kutusunda yaptığınız uyarı ayarlarına göre sizi uyarabilir. İkinci bölümdeki Adres Defteri alıştırmasını yaptıysanız, bu veri tabanını açın ve birlikte bir BSS oluşturalım. Adres Defteri veritabanını oluşturmadı iseniz, aşağıdaki adımları kendi veritabanınıza uygulamak zorundasınız. Burada yapmak istediğimiş iş veya Access 2000’e sormak istediğimiz soru şu: Istanbul’da oturan ve çocuğu olan dostlarımız kimler, çocuklarının adı ne? Veritabanı dosyası açıldığında, veritabanı penceresinde, nesneler listesinde Sorgular satırını tıklayın. Sorgular penceresinde “Tasarım görünümünde sorgu oluştur” ve “Sihirbazı kullanarak sorgu oluştur” şeklinde iki kısayol göreceksiniz. Pencerenin araç çubuğundaki Yeni düğmesini tıklarsanız, karşınıza daha çok imkan sunan bir sihirbazın ilk adımını içeren bir kutu açılacaktır. Bu kutudaki Basit Sorgu Sihirbazı maddesi, Sorgu nesnesi penceresindeki “Sihirbazı kullanarak sorgu oluştur” kısayolu ile aynı sonucu verir. İster Yeni’yi tıklayıp açılan kutudan Basit Sorgu Sihirbazı maddesini seçin, ister “Sihirbazı kullanarak sorgu oluştur” kısayolunu tıklayın. 47 BSS sihirbazının ilk penceresinde hangi alanların sorguda bulunmasını istediğinizi belirtmeniz gerekir. Bir sorgu sadece tablodan değil sorgu sonucundan da seçme yapabilir; dolayısıyla sol üstteki seçmeli listede veritabanınızda mevcut bütün tablolar ve sorgular sıralanır. Bu listede seçilmiş olan tablo veya sorgunun içerdiği alanlar ise sol altta kullanılabilir alanlar listesinde yer alır. Veritabanımıza soracağımız sorunun birinci bölümü “Istanbul’da oturan” dostlarımızın seçilmesi olduğuna göre, bu kişilerin kayıtlı olduğu Aile tablosunu seçmek zorundayız. Bu alanlardan hangileri BSS sonucu oluşturulacak tablomuzda yer alsın istiyoruz? Bir kere dostlarımızın adını ve soyadını seçmemiz gerekir. Seçilecek kişilerin tümünün Istanbul’da oturanlar olması için Şehir alanının da seçilmesi şart. Bunu yapmak için arzu ettiğimiz alanın adını bir kere tıkladıktan sonra ortadaki düğmelerden en üstte olan sağa doğru tek oklu düğmeyi tıklıyoruz. Soldaki alanların tümünün sorgu sırasında kullanılabilir olmasını isteseydik, ikinci sıradaki iki oklu düğmeyi tıklamamız gerekirdi. Bir alanı yanlışlıkla sağa geçirirsek, üçüncü sıradaki sola doğru tek oklu düğmeyi tıklayarak sorguda kullanabileceğimiz alanlar listesinden çıkartırız. Bu alanların tümünü sorgu listesinden çıkartmak için el alttaki iki oklu düğmeyi tıklayabiliriz. Veritabanına sorduğumuz sorunun ikinci bölümü, Istanbul’da oturan dostlarımızdan sadece çocukları olanların seçilmesini, üçüncü bölümü ise çocukların adlarının da listelenmesini gerektirdiğine göre, bize Çocuklar tablosu ve bu tablodaki çocuk adları alanı da gerekiyor. Şimdi Tablolar ve sorgular kutusunun seçme okunu tıklayarak açılan listeden Çocuklar tablosunu seçelim, sonra da bu tablonun Adı adlı alanını sağa aktaralım. Ama hemen İleri düğmesini tıklamayın. Şimdi bir an için kendimizi Access 2000’in yerine koyalım: Biraz sonra bir seçme işlemi yapacağız; çocuğu olan ve Istanbul’da oturan kişileri seçeğiz. Istanbul’da oturanları seçmek kolay: Eğer Şehir alanındaki değer “Istanbul” ise bu kişiyi seçebiliriz. Peki bu kişilerin çocuğu olup olmadığını nasıl bilebiliriz? Veya şöyle soralım: bu kişilerin çocukları varsa bunları Çocuklar tablosunda nasıl belirleyebiliriz? Bu iki tablo arasında ilişki sağlayan alanla! Veritabanı tasarımında en zor nokta, tablolarda gereksiz yere tekrarı önlemek amacıyla alanları başka tablolara aktarmak gerektiğinden söz ettiğimiz sırada, tablolar arasında ilişki kurmamız gerektiğini belirtmiştik. İkinci bölümden hatırlıyorsanız, Aile tablosuyla Çocuklar tablosu arasındaki ilişkiyi, yani hangi çocuğun hangi aileye mensup olduğunu Aile Sıra No alanındaki bilgiyi iki tabloda ortak kullanarak biliyoruz. Başka bir deyişle bir çocuğun Aile Sıra No alanındaki değer, bu çocuğun hangi ailenin üyesi olduğunu gösteriyor. Sorgu sırasında Access 2000, şöyle düşünebilir: “Hımm. Istanbul’lu bir 48 kişiyi seçeyim; sonra bu kişinin Aile Sıra No alanındaki değeri, Çocuklar tablosundaki aynı adlı alanda arayayım; eğer bu iki değer aynı ise bu çocuğun adını alıp, Istanbullu kişi ile birlikte kaydedeyim.” Access’in düşündüğünü uygulayabilmesi için, ona her iki tablodan Aile Sıra No alanını da vermemiz gerekir. O halde önce açık olan Çocuklar tablosunun, sonra da yeniden Aile tablosunu seçerek, Aile Sıra No alanlarını sağa aktarın. Bu kutuda işimiz bittiğine göre Tamam’ı tıklayabilirsiniz. (Sorgu kaç tablodan kaç alan seçmeyi gerektiyorsa, o kadar alan seçebilirsiniz. Buradaki örnek bu alanları gerektirdiği için burada duruyoruz; sizin örneğiniz başka tablolardan başka alanlar gerektiyorsa, seçmeye devam edin.) Basit sorgu sihirbazının ikinci penceresi, sorgu sonucu oluşturulacak tabloda kaç kayıt olacağını belirler. Varsayılan değer, seçtiğiniz tablolardaki tüm kayıtların sorgu sonucu oluşacak tabloya alınmasıdır. Fakat diyelim ki size sorgu sonucu oluşacak tablonun ilk 5, 25 veya 100 kaydını içeren özet bir tablo da oluşturabilirsiniz. Özet tablo için Özetk seçeneğini seçin ve Özet Seçenekleri düğmesini tıklayın. Bu iş bittikten sonra veya Ayrıntılı seçeneğini seçerek, İleriyi tıklayabilirsiniz. Üçüncü pencerede yeni sorgunuza isim vermeniz, Son’u tıkladığınızda sorgunun icra edilmesini mi, yoksa sorguda sihirbazın yapmadığı değişiklikleri yapmak üzere tasarım görünümünün açılmasını mı istediğinizi belirtmeniz gerekir. Burada yardım isteyip istemediğinizi belirteceğiniz bir başka seçenek daha var. Tasarımı güç sorgular yaptığınızda, Access 2000’in yardım penceresinin açılmış olması size kolaylık sağlar. Şimdi, sorgunun tasarımı ile ilgili işlerimiz bitmediği için ikinci seçeneği işaretleyerek Son’u tıklayalım. Access 2000, seçtiğiniz iki tabloyu sorgu tasarım penceresinin üst bölümünde gösteriyor. İki tablo arasındaki ilişki çizgisine dikkat edin; bu ilişkiyi ikinci bölümdeki alıştırma sırasında kurmuştuk. Access, seçtiğiniz altı alanı, değerleri ne olursa olsun, bütün kayıtları ile seçmeyi (ve bunu yaparken iki tabloyu birleştirmeyi) sağlayan bir sorgu tasarımı öneriyor. Bütün alanların seçildiğini, sorgu tasarım penceresinin alt yarısındaki kılavuzda, Alan satırındaki alan adlarından anlıyoruz. Bu satıra yazılan alan adlarını inceleyin; tablo adı ile tablonun alan adı nasıl birleştiriliyor? İkinci satırda ise tablonun adı belirtiliyor. Sırala satırının boş bırakıldığına dikkat edin. Göster satırındaki kutuların işaretli olması bu alanın sorgu sonucu oluşturulacak tabloda gösterileceği anlamına geliyor. Ve son olarak Ölçüt satırlarının boş olduğuna dikkat edin. 49 Biz sorgumuzun sadece çocukları olan Istanbulluları kapsamasını istiyorduk. O halde, Şehir alanının sütununda, Ölçüt satırına “Istanbul” yazmamız gerekiyor, ki sadece Istanbullular seçilsin. Peki bunlar arasından çocukları olanları nasıl seçeğiz, Access ile çalışma konusunda ustalığınız ilerledikçe, bu tür şartlı seçmeleri (SQL deyiminde “eğer” şartı geçen sorguları) oluşturma becerisi de edineceksiniz. Fakat şimdilik böyle bir sorgu deyimi oluşturmaya gerek yok: Access, çocuklar listesindeki Adı değerlerini seçerken, bunların Aile Sıra No değeri Aile tablosunda Aile Sıra No değerine denk gelmeyen kayıtları seçmeyecektir. (Aile tablonuzda çocuksuz Istanbullu dostlarınız, Çocuklar tablosunda da Istanbullu ailelere mensup olmayan çocuklar bulunmasını sağlayın, ki BSS’in gerçekten işleyip işlemediğini sınayabilelim.) Şimdi sorgu tasarım penceresinde Şehir sütununda Ölçüt satırına “Istanbul” yazın. Sorgu sonucu oluşacak yeni tablomuzda iki ayrı Aile Sıra No sütununa gerek olmadığı için Çocuklar tablosundan alınacak Aile Sıra No sütununun Görüntüle satırındaki işareti kaldırabiliriz; fakat BSS’in tablonun ilişki bağından nasıl yararlandığını görmek için şimdilik bu işareti kaldırmayın. Özetle, Access 2000 BSS sihirbazının tasarımına sadece Şehir alanında Ölçüt olarak “Istanbul” kelimesini eklemiş olduk. Bu sırada Access 2000’in araç buçuğunda ünlem işareti şeklinde bir simge belirdiğini görüyor musunuz? “Çalıştır” isimli bu araç, Access 2000’e “Bu sorguyu icra et ve sorduğum sorunun cevabını bana tablo alarak göster!” komutunun kısayoludur. Şimdi bu simgeyi tıklayalım. İşte sorumuzun cevabı: Aile listemizde yer alan Şehir alanındaki değer “Istanbul” olan ve Çocuklar tablosunda kendilerine ait çocuk bulunan dostlarımızın listesi! Access ile çalışma becerinizi arttırdıkça, her çocuğu mensup oldukları aile ile aynı satıra “Çocuk 1,” “Çocuk 2” ... şeklinde yeni sütunlar halinde sıralamayı da sağlayabilirsiniz. Bu sorgunun verdiği sonuçları doğru bulmuyorsanız, tekrar tasarım görünümüne dönebilirsiniz. Bunun için Access 2000 araç çubuğunda tasarım görünümü simgesini tıklayın. Sorgunun tasarımında istediğiniz değişikleri yaptıktan sonra Çalıştır simgesini tıklayabilirsiniz. Sorgunun istediğiniz sonucu verdiğini gördükten sonra kapatmaya kalktığınızda Access 2000 sorguyu veritabanı dosyasının içinde kaydededecektir. Bir BSS tasarlamaya çalıştığınız sırada seçtiğiniz tablolar ilişkili değilse, Access 2000 sizi uyarır ve bu ilişkiyi kurmadan devam etmek istemez. Sorgu tasarımı sırasında seçtiğiniz tablolar arasındaki ilişki çizgisini silerek sorguyu çalıştırırsanız, anlamlı olmayan sonuçlar alırsınız. 50 İster insanlar arasında, ister tablolar arasında olsun, ilişki zor şeydir; itina ve dikkat, önceden planlama ve sihirli bir anahtar ister! İnsanlararası ilişkide sihirli anahtar nedir sorusunu Access 2000’e ayrılmış bu kitapta ele alamayız. (Zaten bu konu bu kadar bir kitapçığın kapsamını aşar.) Fakat hemen belirtebiliriz ki, Access’te başarılı bir veri-işlemin sihirli anahtarı Birincil Anahtar’dır: tablolar arasındaki ilişkiyi bu Anahtar ile kurarız, ve göreceğimiz gibi, daha bir çok kapıyı bu anahtarla açarız. İkinci bölümdeki alıştırmayı yaptıysanız, oluşturduğunuz her tablonun tasarım görünümünü kapatırken, Access 2000’nin bu tabloda bir Birincil Anahtar tayin edilmediğini vurgulayarak sizden ısrarla bir alanı Birincil Anahtar olarak belirleminizi istediğini görmüş olmalısınız. Neden? Çünkü birincil anahtar her tabloya, daha sonra bir başka tablo ile ilişkilendirmek istediğinizde bu ilişkide özgün kişiliğini verecektir. Birincil anahtar olarak belirlenen alandaki bilgilerin benzersiz olması gerekir. Access sizi buna zorlamaz, ama birincil anahtar alanındaki bilgileriniz her kayıt için benzersiz değilse, neden birincil anahtar olarak atamış olabilirsiniz? Birincil anahtar, bir kaydı, bir başka tablodaki bir kayıtla birleştirmekte kullanacağımız anahtardır. Birincil anahtarın diğer işlev ve yararlarına kısaca değindikten sonra kayıt birleştirmedeki rolüne döneceğiz. Her tablonun bir, ama sadece bir, Birincil Anahtarı olabilir. Access 2000, her tablonun birincil anahtarını otomatik olarak endeksler (ve bu sayede veritabanı daha hızlı çalışır). Tablonuzda siz bir alanı Birincil Anahtar olarak atamadıysanız, Access 2000 bir birincil anahtar alanı oluşturmak ister; bunu onayladığınızda bir otomatik sayı alanı açar; tablonuzda zaten birinci alanda otomatik sayı türü bir veri varsa, Access 2000 bu alanı birincil anahtar olarak atar. Bu sebeple, iyi bir tablo tasarımı ilerde kullanmayacak bile olsanız, birinci alanı otomatik sayı olarak belirlemeyi gerektirir. Birincil anahtar, hemen hemen daima sadece bir alandan oluşur. Fakat Access 2000, ancak çok pahalı veritabanı Server programlarının yapabileceği bir imkana da sahiptir: veri-işlem işiniz birden fazla alandan oluşan Birincil anahtar kullanmanızı gerektiriyorsa, bunu yapabilirsiniz. Çok-alanlı Birincil Anahtar, ileri düzeyde veri-işlem ve sorgulama bilgisi gerektirir. Her veri türü birincil anahtar olamaz: birincil anahtar olarak kullanamayacağınız veri türleri, Internet adres bağlantısı (köprü), OLE ve not türleridir. Buna göre, metin, sayı, tarih/saat, para birimi, Evet/Hayır, ve otomatik sayı alanları birincil anahtar olarak 51 kullanılabilir. Tablolarınız, birincil anahtar alanına göre otomatik olarak sıralanır. (Eğer bir Evet/Hayır alanını birincil anahtar yapmaya kararlıysanız, tablonuzda en fazla iki kayıt olması gerekir. Neden?) Birincil anahtarın tabaloda birinci alan olması gerekmez; herhangi bir alan birincil anahtar olabilir. Fakat kendinizi tabolalarınızda birincil anahtar arama zorluğundan kurtarmak için daima birinci alanı birincil anahtar yapacağınız veriye ayırmanız iyi bir alışkanlık olur. Birincil Anahtar Tayininde Püf Noktası “Tablomda hangi alanı birincil anahtar yapmalıyım?” sorusu kaçınılmaz olarak sorulacak sorudur. Bu sorunun bir cevabı olabilir: Benzersiz veri içeren alanlardan birini birincil anahtar yapın. Birincil anahtar seçiminde anahtar kelime, “benzersiz” kelimesidir! Seçeceğiniz alandaki veri, her kayıt için özgün olmalıdır; başka hiç bir kayıtta tekrar etmemelidir. Kişilerin adlarını, soyadlarını içeren alanlar özgün olamaz. Öğrenci numaraları, araç plaka numaraları da bir kaç yıl sonra tekrar başka öğrenciye veya araca verilebilir. Telefon numaraları bir ülke için özgün olabilir (her bölgenin kodu farklı olacağı ve aynı bölge kodunda benzer numara bulunmayacağı için), ama veritabanınızda örneğin bölge kodu aynı olan Istanbul ve New York kentlerindeki dostlarınızın telefon numaraları varsa, zor bir tesadüf bile olsa, aynı numara bulunabilir. Birincil anahtar alanı belirlerken, tablonuzda özgün-benzersiz veri bulunan alan arayın. Bütün alanlarınızdaki verilerin tekrar etmesi ihtimali varsa, yeni bir alan açın ve içine otomatik sayı koyun.. Gerisini Access 2000 düşünsün! Bir tabloda birincil anahtar alanı tayini son derece kolaydır. Tabaloyu tasarım görünümünde açın; birincil anahtar olarak atamak istediğiniz alanın adının bulunduğu kutuyu sağ-tıklayın ve açılacak menüde birinci madde olan Birincil Anahtar maddesini seçin. Bu alanın adının önündeki kutuda küçük bir anahtar simgesi belirecektir. Birincil anahtarın veritabanı için önemini ortaya koyacak küçük bir deney yapalım ve sonra birincil anahtarın birincil görevi olan tablo ilişkilendirme konusuna dönelim. Yukarıdaki alıştırmayı yaptıysanız Çocuklar tablosunu (veya herhangi bir alanı Birincil Anahtar olarak tayin edilmiş bir başka tabloyu) açın, ve yeni bir satırda birincil anahtar alanına mevcut değerlerden birini tekrar yazın. İşinizin bittiğini belirtmek üzere başka bir hücreyi tıklayın; Access 2000 hemen hata mesajı verecektir: 52 Birincil anahtar alanındaki verinin özgün olması gerekir; yoksa bu anahtar aslî görevini yapamaz. Tablolar arasında ilişki kurmak suretiyle, veritabanı dosyamızı düz veritabanı olmaktan kurtardığımızı söylemiştik. Tablolar arası ilişki, Access 2000’in daha hızlı sorgu icrası yapmasını sağlar; veri-işlem işlerimiz daha verimli olur. Bu sayede verilerimizi güncelleştirirken, bütün tabloları elden geçirmek ve hatta yeniden girmek zorunda kalmayız; sadece güncelleştirilmesi gereken tabloya ek veya bu tabloda değişiklik yaparız. Bir firma düşünelim: en az 200 firmadan hammadde alıyor ve en az 500 bayie mamül madde veriyor. Bu firmaların adreslerinden, alınan hammadde ve verilen mamül maddelerin özelliklerine kadar, diyelim ki 2 bin sütun dolduran verilerimizi tek tabloda topladığımızı varsayalım. Böyle bir tabloda, aldığımız mallara ilişkin bilgi sütunları, sattığımız mallara ilişkin satırlarda boş kalırken, sattığımız mallara ilişkin bilgi sütunları aldığımız mallara ilişkin satırlarda boş bırakılmak zorundadır. Bu hem gereksiz yere şişkin bir veritabanı dosyasına yol açar, hem de veri girişinde sayısız hatalara sebep olur. A firmasından aldığımız yeni bir mala ait yeni bir kayıt girerken, firmanın adından adresine, faks numarasından posta koduna kadar bütün bilgileri yeni satıra tekrar yazmak zorunda kalırız. Bu, yeni yazım hatalarına davetiye çıkartmak demektir. Tekrar eden bu bilgilerin dosya boyutuna bindireceği yükü düşünün! Verilerimizi tek tabloda toplamanın sakıncalarını anladık. Ve diyelim ki elimizde böyle, beş veya altı tabloya bölünmüş bir veritabanı var. Şimdi, son 3 ay içinde mal aldığımız firmaların bir dökümünü çıkartmak istiyoruz. Beş-altı ayrı tabloyu mu kağıda dökeceğiz? Bu ayrı ayrı tablolara bölünmüş bilgileri nasıl birleştireceğiz? Başka bir deyişle, ayrı tablolara böldüğümüz verileri işare yarar, anlamlı diziler haline getirmek için nasıl birleştirebiliriz? Bunu, tabloları herbirinin diğeri için anlamlı tek özgün alanından, yani Birincil Anahtarlarından birleştirerek yapabiliriz. Veritabanınızı bu birden fazla tabloya bölerek ve herbirine özgün birincil anahtar alanları koyarak tasarlasanız bile, aynı veritabanı içinde yer alıyorlar diye tablolarınız kendiliklerinden ilişki kurmazlar. Bunu bizim sağlamamız gerekir. Kendi tablolarımızda kendi ilişkilerimizi oluşturmadan önce, Access 2000’nin bunu nasıl sağladığını görmek, ilişki konusunda bize daha iyi fikir verecektir. Bunun için Access 2000’i çalıştırın; Yeni veritabanı oluşturmak üzere açılan pencerede Veritabanları sekmesini seçin ve Stok Yönetimi şablonunu işaretleyin. Yeni boş stok yönetimi 53 veritabanınız oluşturulduğunda, eğer Access penceresi içinde küçültülmüş durumda ise veritabanı penceresini büyütün; Switchboard adı verilen veritabanını kullanmanız için oluşturulan grafik arayüzü kapatın. Stok Yönetimi1 adlı yeni stok yönetimi veritabanınızın nesnelerinden Tablolar’ı seçtiğinizde, yedi adet aslî tablo oluşturulduğunu göreceksiniz: Ürünler, stok hareketleri, kategoriler, çalışanlar, sipariş formları, üreticiler ve nakliye yöntemleri. Stok yönetimi konusu ile hiç ilginiz yoksa bile, sadece ilişki konusunu kavramak için, bu tabloların bir firmanın elindeki stokları takip için gerekli ve yeterli olduğunu varsayalım. Şimdi, Araçlar menüsünden İlişkiler maddesini seçin. Karşınıza şuna benzeyen bir pencere açılacaktır: Açılan penceredeki kutular arasındaki çizgiler buradaki görüntüye benzemiyorsa, kutuları Mouse işaretçisiyle başlıklarından tutarak sürükleyebilir ve konumlarını buradakine benzer şekle getirebilirsiniz. Bu pencerede, kutuların başlığının tablo adlarını içerdiğine dikkat edin. Kutuların içindeki maddeler ise tablolardaki alanların adlarıdır. Her tablonun kutusunda bir alan adının koyu yazıldığını görüyor musunuz? Bu, o tablonun birincil anahtarı olan alandır. Bazı alanlardan çıkan çizgilerin diğer bir kutudaki alana bağlandığını görüyorsunuz. Dikkat ederseniz, aralarında çizgi bulunan alan adlarının aynı olduğunu da göreceksiniz. Bu çizgilere ilişki denir; tabloların birbirleri ile hangi alanlarından ilişkide olduklarını gösterir. Şemaya veya Access İlişkiler Penceresi’ne tekrar bakarsanız, ilişki çizgilerinin bazılarının sol ucunda “1,” sağ ucunda sonsuz işaretinin bulunduğunu, bazı ilişkilerde işaretlerin yer değiştirdiğini ve diğerlerinde ise çizgilerin işaretsiz olduğunu göreceksiniz. Bu işaretler kurulan bağın niteliğini gösterir; bağın niteliği ise daha sonra iki tablo arasında yapılabilecek birleştirmede hangi kayıtların hangi kayıtlarla birleştirileceği veya Access’in deyimiyle eşleştirileceğini tayin eder. Bu tanımla biraz şifreli görünüyorsa da Access’te kurabileceğimiz ilişkilerin niteliklerini ele alınca manzara aydınlığa çıkacaktır. Tablolarınızın arasında üç tür ilişki olabilir: Bire bir ilişki: İlişkilendirdiğiniz iki tablodan birincisi ile ikincisi arasında sadece bir kayıt eşleşebilir. Bu tür ilişkilendirmeyi tabalolarımızda sık kullanmadığımızı göreceksiniz; çünkü genellikle böyle tek gerçekli tablo yapmayız. Bir-çok ilişkisi: Birbirine bağladığımız iki tablodan birindeki bir kayıt diğer tabloda birden fazla kayıtla eşleşebilir. İkinci bölümdeki örneğimizi hatırlarsanız: bir ailenin birden fazla çocuğu olabilir; fakat 54 her çocuğun sadece bir ailesi olabilir. Dostlarnımızın çocuklarıyla birlikte bir tablosunu edinmek istersek, üç çocuklu dostlarımızın adı yeni tabloya üç ayrı satırda yazılacak, iki çocuklu dostlarımızın adları iki, tek çocuklu dostlarımızın adları ise bir kere girecektir. Neden? Çünkü aile bağı (Aile Sıra No alanı), Çocuklar tablosunda çok kayda işaret ediyor. Çok-çok ilişkisi: İlişkilendirdiğimiz tablolardan birincisinde birden fazla alan, ikincisinde birden fazla kayda (ve tabiî ikincisindeki birden fazla alan birinci tablodaki birden fazla kayda) işaret ediyorsa, bu kez tablolar arasında çok-çok ilişkisi var demektir. Örnek tablomuzda böyle bir durum yok, ama bir sipariş veritabanı düşünün: her bir sipariş emrinde birden fazla mal sipariş ediliyor olabilir; mal tablosunda ise her bir mal birden fazla sipariş tablosunda görünüyor olabilir. Böyle bir ilişkinin sonucu ortaya çıkacak üçüncü tabloda hem hem her bir sipariş, hem de her bir mal birden fazla satırda görünecektir. Şimdi bu bilgilerin ışığında biraz önce oluşturduğunuz Stok Yönetimi veritabanının ilişkiler penceresine bakalım. Şimdi bu veritabanındaki dosyaları kullanarak, firmamızın verdiği siparişlerle ilgili ve siparişi veren personele göre sipariş miktarlarını gösteren yeni bir tablo yapabilir miyiz? Yapabiliriz. Siparişi veren Personel, hangi tabloda hangi alandaki bilgi ile bulunacak? Çalışanlar tablosundaki ÇalışanNo alanındaki veri ile. Peki, bu alandaki kayıtlar, hangi tablodaki hangi alanda bulunan kayıtlarla eşleştirilecek? Sipariş formları tablosundaki ÇalışanNo alanındaki kayıtla. Yani Çalışanlar tablosundaki ÇalışanNo alanındaki veri Ahmet Çalışkan arkadaşımıza ait 812 ise ve bu değer, Sipariş formları tablosundaki kayıtlarda ÇalışanNo alanındaki değerlerle eşleşiyorsa, bu kayıt yeni tablomuza alınacak; sonra sırasıyla diğer değerler taranacak, eşleşenler yeni tabloya dahil edilecektir. (“Yeni tablo nerede ve nasıl oluşacak?” sorusunu şimdilik sormayın; bunu Sorgu ile yapacağız; ve daha sonra ele alacağız.) Çalışanlar tablosundaki ÇalışanNo alanında Mehmet Tembeloğlu arkadaşızı belirten 813 şeklindeki veri, Sipariş formları tablosundaki kayıtlarda ÇalışanNo alanındaki hiç bir veri ile eşleşmiyorsa ne olacak? Yeni tabloda 813 şeklindeki ÇalışanNo’yu içeren bir kayıt olmayacaktır. Ve muhtemelen Mehmet Tembeloğlu, neden hiç sipariş vermediğini izah etmek zorunda kalacaktır! Tablolarımız arasında ilişki oluşturma işini kendimiz yapmak istersek, yine biraz önce açtığımız Araçlar menüsünden İlişkiler maddesini geçerek açtığımız pencereyi açmamız gerekir. İkinci bölümdeki Adres Defteri alıştırmasını yaptıysanız, şimdi bu veritabanı dosyasını açabilirsiniz. Bu alıştırmayı yapmadı iseniz, şimdi ikinci bölüme dönüp bu dosyayı oluşturabilirsiniz! Veritabanı açıldığında veya tabloları 55 oluşturma işini bitirdiğinizde Araçlar menüsünden İlişkiler maddesini seçin. Karşınıza şuna benzeyen bir görünüm gelecektir: Biz kurmadığımız halde iki tablomuz arasındaki bu ilişki, Çocuklar tablosunu oluştururken, Aile Sıra No alanının doldurulması için Aile tablosunun aynı adlı alanına girilmiş kayıtlara bakılmasını istemiş olmamızdan kaynaklanıyor. Burada gördüğünüz çizgiyi ortasından sağ tıklayın ve açılan menüden Sil maddesini seçin; Access silme işlemini onaylattırmak istediğinde Evet’i tıklayın. Şimdi ilişki oluşturmaya sıfırdan başlayabiliriz. Önce bir kere daha kurmak istediğimiz ilişkinin amacını tekrar edelim: yeni adres defterimizi oluşturduğumuz sırada öyle bir an olabilir ki, dostlarımızın çocuklarını gösteren, veya çocukların ailelerine göre sıralandığı bir liste yapmak isteyebiliriz. Böyle bir yeni tablo oluşturmaya kalktığımızda, Access’in hangi çocuğun hangi aileye ait olduğunu bilmesi gerekir. Bunu iki tabloyu ilişkilendirerek veya başka bir ifadeyle Access’e, hangi çocuğun hangi aileye ait olduğunu nasıl belirleyeceğini söyleyerek yapabiliriz. Access’e şunu söylemek zorundayız: Çocuklar tablosundaki kayıtlarla Aile tablosundaki kayıtları birleştirirken birinci tablonun Aile Sıra No alanındaki değerin Çocuk tablosundaki kaydın aynı isimli alanındaki değerle eşleşip eşleşmediğine dikkat et; eğer bu veriler aynı ise o zaman bu çocuk o aileye ait demektir; iki kaydı birleştirebilirsin. Bunu söylemenin yolu ise çok kolay: İlişkiler tablosuna ait kutudaki AileSıraNo satırını Mouse işaretçisiyle tutup, götürüp Çocuk tablosundaki AileSıraNo satırının üzerine bırakın. (İlişkiler penceresini açtığınızda tablolarına ilişkin kutuları göremiyorsanız, İlişkiler menüsünden Tablo Göster maddesini; açılacak kutuda kayıtları arasında ilişki kuracağınız, dolayısıyla görüntülenmesini istediğiniz tabloları seçerek Ekle düğmesini tıklayın.) Sürükleme sırasında Mouse işaretçisinin dikdörtgen ilişki simgesine dönüştüğünü göreceksiniz (işaretli). Mouse işaretçisi bırakacağınız yere dikkat etmelisiniz: Access 2000, dörtgeni hangi alan adı üzerinde bırakırsanız, o alanı ilişkilendirir. Mouse’un sol düğmesini bıraktığınız anda İlişkileri Düzenle diyalog kutusu açılacaktır. Burada solda ilişkinin başladığı tablo ve alan ile ilişkinin kurulduğu tablo ve alan gösterilmektedir. Her ikisinin de seçme düğmelerini tıklayarak başka alanlar seçebilirsiniz. Bu listenin altında, “Bilgi tutarlılığına zorla” seçeneğine işaret koyarsanız, Access 2000 size iki seçenek daha verir: ilişkinin sol tarafındaki alan güncelleştirilirse, bu 56 ilişkiye dahil tabloların da güncelleştirilmesi, alan silinecek olursa diğer tablodaki kayıtların da silinmesini sağlayabilirsiniz. (Güncelleştirme kullanışlı bir seçenek olmakla birlikte, silme işlemini otomatik hale getirmek, istemeden bilgi kaybına uğramanıza yol açabilir.) İlişkileri Düzenle kutusunun sağ tarafındaki düğmelerden Birleştirme Türü düğmesini tıklaksanız, ilişkinin yönü ve türünü belirleme imkanını veren, üç seçenekli Birleştirme Özellikleri kutusunu açmış olursunuz. Burada yapacağınız tercihler, hangi tablodan hangi kaydın alınacağını belirler. (Sırasıyla her üç seçeneği seçtiğinizde, ilişki çizgisinin ucundaki okların yönünün nasıl değiştiğine dikkat edin.) Kutuları sarısayla kapattığınızda, iki tabloyu ilişkilendirmiş, başka bir deyişle Access 2000’i bu tabloları kullanarak yapacağınız veri-işleme hazırlamış olursunuz. Bir veritabanındaki tablolar arasında ilişkileri oluştuğunuz zaman Access 2000, hiç bir yapmayacak, söz gelimi ortaya yeni bir tablo veya rapor çıkartmayacaktır. Bunu yapması için gerekli talimatı daha sonra vereceğiz. Şimdilik sadece Access’e, bu talimatı yerine getirmesi için gerekli bilgiyi vermiş, veritabanımızın tabloları arasındaki bağları tanıtmış olduk. Access 2000’in veri-işlem işleri için yapması gereken bir diğer hazırlık ise Endeks çıkartmaktır. Veritabanımızın tablolarını neden endekslettirmek isteriz? Daha sonra yapacağımız veri-işlemleri hızlı olsun diye? Access 2000’ın endeksi, tıpkı bir kitabın arkasındaki endeks gibi çalışır: aradığınızı kolay bulursunuz. Burada bulma işlemini kitap okurundan farklı olarak kullanıcı değil Access yapmaktadır. Access, kendi endekslerini, vereceğiniz sorgu talimatlarını icra ederken, tabloları sıraya sokarken, rapor oluştururken ve arama yaparken kullanır. Köprü, not ve OLE nesnesi içeren alanlar dışındaki tür alan türleri endekslenebilir. Sadece Birincil Anahtar olan alan değil, bütün alanlar (türü uygunsa) endekslenebilir; birincil anahtar alanı otomatik endekslenir. Endeks, sorgu, sıralama ve aramayı hızlandırır; fakat bir veri tabanında ne kadar çok alan endeksleniyorsa, Access 2000’in veriişlem hızı o kadar azalabilir. Access 2000’e tablo tasarımı sırasında, endeks yaparken birden fazla benzer kayıt bulunması halinde ne yapması gerektiğini biz söyleriz. Tablo tasarım penceresinde bir alan türünü tıkladığınızda, alan türü elverişli ise, pencerenin Alan Özellikleri bölümünde Sıralı satırı belirir. (Access 2000, endekse yardım dosyalarında “dizin” derken burada “Sıralı” demeyi tercih ediyor. Ama bu kadar kusur, kadı kızında da olur!) Bu satırın içini ve sağında belirecek seçme okunu tıklarsanız, üç seçeneğiniz bulunduğunu 57 görürsünüz: “Endeks yapma!” anlamına “Hayır” ; “Endeks yap, ve tekrarlara aldırma!” anlamına “Evet, Tekrarlama Var”; ve “Endeks yap ve bu arada tekrarları yakala!” anlamına “Evet, Tekrarlama Yok.” Bu sonuncu tercihi seçerseniz, Access, endekslenmiş alanlarda, tüm kayıtların benzersiz olmasına dikkat eder ve sizi uyarır. Böylece, veritabanımızı birincil anahtarları, ilişkileri ve endeksi ile veriişleme hazırlamış bulunuyoruz. Bundan sonra, tablolarımızı sorgulayabilir; tablolar ve sorgulardan raporlar hazırlayabiliriz. Verilerimizi, kelime işlem programının içinde tablolar oluşturup, bu tabloların içine yazmıyorsak, bunun bir nedeni olabilir: Verişlem programlarının sorgu aracı. Sorgu veya Query, veritabanı fikri ortaya atıldığı günden beri var. Hatta, veritabanı dosyalarının, diğer bilgisayar kayıt dosyalarından ayrışmasını sağlayan unsur, sorgudur. Bir veritabanı dosyasındaki bilgileri sorgulama ve bu verilerden yeni bilgiler elde etme ihtiyacı o kadar belirgin hale geldi ki, bilgisayar mühendisleri sırf bu iş için bir dil bile icad ettiler: Sorgu Dili (Query Language). Ne var ki, veritabanı biçimi kadar sorgulama dili ortalığı kaplayınca, belli başlı bilgisayar donanım ve yazılım firmaları ve üniversiteler biraraya gelerek, bu kargaşaya son vermek üzere kolları sıvadılar; ve ortaya SQL (Structured-Yapılandırılmış Sorgu Dili) çıktı. Yapılandırılmış Sorgu Dilinin Kısa Tarihi SQL, 1980’lerin başlarında Sybase firması tarafından UNIX ortamı için geliştirildi. Microsoft firması, Sybase’den ruhsatını aldığı bu teknolojiye dayanan MicrosoftSQL Server programını 1987’de Windows 3 için piyasaya sürdü. Ertesi yıl, MS, Sybase ve Ashton-Tate firmaları MSSQL-Server’nın OS/2 sürümünü ortaklaşa hazırladılar ve daha sonra IBML’in de katıldığı bu çaba 1991’e kadar sürdü. Ashton-Tate’in bu birlikten 1990’da çekilmesi üzerine, Sybase ve MS yeni bir anlaşma yaparak, dili ve Server’ı, Windows NT ortamı için birlikte geliştirmeye başladılar. Bu çabanın sonucu SQL Server programı oldu. Bu program, bugün 7’nci sürümündedir. Bir taraftan endüstri çapında geçerli bir teknoloji ve bu teknolojinin başlıca aracı olan bir dilin adı olarak SQL, diğer taraftan Microsoft firmasının bu teknoloji ve dili kullanan bir programının adında (SQL Server) kullanıldığı için, sadece Microsoft’a ve Windows ortamına ait sanılabilir. Bu doğru değildir. SQL, bugün piyasada bulabileceğiniz belli başlı veritabanı oluşturma ve veri-işlem programlarının ortak dilidir. 58 Microsoft Access, 1992 yılında dünyaya geldi; ve ilk günden itibaren tek başına bir veritabanı oluşturma ve işleme programı olarak değil, fakat daha büyük veritabanı dosyalarına, veri bankalarına bağlanabilen ve oradaki verileri işleyebilen bir program olarak tasarlandı. Access 2000, Access Projesi (Dosya menüsünden Yeni maddesini ve açılan şablon kutusunda “Proje (Yeni Veritabanı)” adlı simgeyi tıklayın) dosyaları oluşturarak, SQL Server dosyalarına ulaşabilir; bu dosyalarda SQL sorguları çalıştırabilir. İyi bir Access kullanıcısı, bu programla büyük veritabanı mimarisine adam atabilir; ileri düzeyde veri-işlem tekniklerini öğrenebilir. Veri Madenciliği (Data Mining) teknolojileri, Online Analytical Processing (OLAP) teknikleri ve günümüzde veri yönlendirmeli Web uygulamaları, SQL’e dayanan gelişmelerdir. Access’te öğreceğiniz SQL, size bu teknolojilerie ilk adımı atmayı sağlayacaktır. Access’te SQL’e ilk adım ise daha önce gördüğümüz Süzme işleminin son bölümünde kısaca sözünü ettiğimiz Gelişmiş Süzme/Sıralama aracı ile atılabilir. Aslında Access’te yaptığımız seçme veya Form yoluyla süzme işlemleri, bir sorgu işlemidir; ancak bu sorgunun SQL komutunu (veya Access’in kullandığı kelimeyle, “deyimini”) Access kendisi oluşturur. Gelişmiş Süzme/Sıralama (GSS), diğer süzme işlemlerine göre “ileri” sayılırsa da, bir sorgu deyimi (SQL komutu) yazmanın yanında basit sayılabilir. Bu sebeple, tabir yerinde ise Access’in desteklediği bir sorgu geliştirme işlemi olan GSS’yı sorguya giriş konusu olarak ele alabiliriz. GSS’yı kavradığımız anda sorgu tekniğini kavramış oluruz. Access’in sorgu tekniği ise daha genel SQL’e giriş sayılır. GSS’nin bir sorgu aracı olarak sınırlamaları vardır. Sadece bir tablonun içerdiği verilerle çalışabilir; birden fazla tablo veya başka sorguların sonuçlarını kullanamaz. Sonuç itibariyle gSS de bir tabloda belirli ölçütleri karşılayan kayıtları görünteleme aracından başka bir şey değil; birden çok tabloda sorgu yapmak için gerçek sorgu aracını kullanıp, gerçek SQL komutları yaszmamız gerekir. GSS’te verilere sadece basit sorular sorabiliriz. (Daha gelişmiş sorgular için, gerçek sorgu aracını kullanırız.) GSS ile yapacağımız süzme sonunda görüntülenen kayıtların bütün alanları görüntülenir; oysa gerçek sorguda ortaya çıkacak yeni tablo veya formda hangi alanlar olsun istiyorsanız o alanlar olur. Bu sınırlamalarına rağmen (belki de bu yüzden) GSS, Access’te sorguya giriş için mükemmel bir adım sayılır. Şimdi bir tabloyu açın ve Kayıtlar menüsünden önce Süz, sonra Gelişmiş Süzme/Sıralama maddesini seçin. 59 Bu, eğer başta tablo ekleyebilseydik, sorgu hazırlama penceresinin ta kendisi olurdu. GSS, belirttiğimiz gibi sadece bir tablo ile çalışır; ve o tablo da seçilmiş olarak karşımıza gelir. Bu penceresi inceleyelim. Üstte, sorguda (pardon, süzgeçte) kullanılacak tablo yer alır. Buraya alan listesi denir. Altta ise süzgeci oluştururken kullanacağımız, şimdilik boş olan, sorgu tasarım kılavuzu yer alır. Burada sadece sözme amacıyla yararlanacak da olsak oluşturacağımız “şey” gerçekten bir sorgudur. Bu bölümde, Alan isimli birinci satırın birinci sütundaki kutusunun içini, sağda seçme oku belirince oku tıklayın: yukarıda alan listesinde yer alan alan adlarının burada sıralandığını göreceksiniz. Sorgu, burada olduğu gibi ileri düzeyde süzme işlemi için bile olsa, “veriye soru sorulması” anlamına gelir. GSS’de bir sınıftaki öğrencilerin sınav notlarını içeren tablomuza örneğin “Son üç sınavda 4,5’dan aşağı not almış öğrenciler kimler?” diye sorabiliriz. Ya da yemek tariflerini derlediğimiz bir veritabanında, “Kebaplar” tablosuna “İçinde biber olmayan ve kıyma ile yapılmayan kebaplar hangileri?” sorusunu yöneltebiliriz. Müzik kaset ve CD’lerinizin veritabanındaki “Türküler” tablosuna “Yavuz Bingöl’ün 1996’dan sonra çıkmış kaset ve CD’leri hangileri?” diye sorabiliriz. Ya da elimizdeki Adres Defteri veritabanında Aile tablosuna “Istanbul ve Niğde’de oturan ve kart yollamam gereken dostlarım kimler?” şeklinde bir soru yöneltebiliriz. Bunun için, Alan sırasının birinci sütundaki kutusunun seçme okunu tıklayarak, alan listesinden Şehir’i seçmemiz gerekir. Sonra, GSS’nin sadece süzme değil aynı zamanda sıralama yaptığını hatırlayarak, ikinci sıradaki Sırala kutusunun sağındaki seçme okunu tıklayarak, Artan, Azalan ve Sırasız seçeneklerinden Artan’ı seçelim. Ve sıra geldi, süzme için uygulatacağımız ölçütleri belirlemeye. Ölçüt satırının içini tıklayıp “Istanbul” yazıyoruz. Tırnak işaretlerini siz koymazsanız, Access koyar. Istanbul VE Niğde’de oturan dostlarımızı birlikte seçmek için, alttaki VEYA satırına da “Niğde”yazalım. Buraya kadar, tabloya soracağımız sorunun birinci bölümünü sormuş olduk: Istanbul ve Niğde’de oturanlar. Şimdi sorgunun ikinci bölümüne geliyoruz: Kart göndermem gerekenler. İkinci bölümdeki veritabanı alıştırmasını yaptıysanız, “KartYolla” alanının türünü “Evet/Hayır” yaptığımızı hatırlıyor olmalısınız. Şimdi, Alan satırının ikinci sütununda KartYolla alanının seçin; (“Evet” değerlerinin sıraya sokulmasına gerek olmadığına göre ikinci satırı atlayabilirsiniz) ve Ölçüt sarımına Evet yazın. Araç çubuğundaki Süzgeçi Uygula simgesi tıklayın ve tablonuzun sadece Istanbul veya Niğde’de oturanlardan kendilerine kart yollamam gerekenleri gösterdiğini, diğerlerinin süzüldüğünü ve süzgecin diğer tarafında kaldığını göreceksiniz. 60 Kendi kendinizi kutlayabilirsiniz: çünkü sadece Access’in gelişmiş süzme ve sıralama aracını kullanmakla kaldık; SQL komutu yazmaya da ilk adımı attık. Şimdi artık Access’te ciddi sorgulama işleri yapabiliriz. “Sorgu, veriye soru sormaktır!” demiştik. Kimi zaman bir tablonun cevaplayabileceği soruları, süzme ve hatta sıralama ile çözümleyebiliriz. Fakat elde iki veya daha çok tablo varsa ne yapanız? Diyelim ki, siz sadece bir sınıfın değil, beş ayrı sınıfın öğretmenisiniz ve sınıflarınızda başarı oranını etkileyen garip bir eğilim farkettiniz. Sizin derslerinizde kız öğrenciler genellikle başarısız oluyor. Sadece bir sınıfın öğretmeni olsanız, bu kuşkunuzun yerinde olup olmadığını sınamak için iki süzme işlemi size sonucu verirdi. (Nasıl?) Fakat beş ayrı sınıf söz konusu olunca, her tablonun kendi içindeki yüzdeler, anlamlı olmayabilir. Size bütün tablolardan seçme-süzme yapan bir araç gerekiyor. Ya da beş tabloya birden soru sormanızı sağlayacak bir araç. Bu aracın adı Sorgu’dur. Access’in Sorguları aldığımız Gelişmiş Süzme/Sıralama aracının birden fazla tablo kabul edebilenidir. Çapraz sorgu, verileri gruplandırarak, bunlar için sayım, toplam ve ortalama gibi hesapları yapar. Örneğin öğrencileri cinsiyetlerine ve derslere göre gruplandırıp, aldıkları not ortalamalarını göstermek., çapraz tablo yapmaktır. Çapraz sorgu bir tabloda çalıştığı için, örneğin öğrencilerinizin notları derslere göre ayrı tablolarda ise bunları bir tabloda basit seçme sorgusuyla birleştirmeniz gerekir. Tablo yapma sorgusu, seçme sorgusundan farklı olarak, çalıştığı zaman ortaya bir tablo penceresi çıkmaz; Access, sizden daha önce aldığı isimle bir tablo oluşturur. Bu tablo veritabanının parçası haline gelir. Oysa diğer sorguların sonuçları ancak sorgu çalıştığı sırada vardır. Güncelleştirme sorgusu, sorgu tasarımı sırasında verdiğiniz bir sabit değeri veya verdiğiniz bir deyimin o sırada bulunacak sonucunu, tayin ettiğiniz bir alana yazar. Bu, “Bul-Değiştir” gibi basit bir araç olmayıp, her kaydı, belirli bir formüle veya kıydın kendi içindeki bir değere göre yeniden hesaplayabilir. Ekleme ve Silme sorguları da güncelleştirme sorgusu gibi, ya farklı tabloların kayıtlarını birbirine ekler, ya da tablolardaki kayıtları siler. Bunların dışında tasarım sırasında yüklediğiniz işlevlerin bir sonucu olarak bir sorgu Parametre sorgusu (verdiğiniz görevi yapabilmek için kullanıcıdan bir değer girmesini isteyen sorgu), SQL Sorgusu (SQL komutlarını kullanarak birleşim, doğrudan sorgu, veri tanımla ve alt sorgu gibi veritabanınızı ODBC yoluyla dışarıdan kullanacak kullanıcıları gözönünde tutarak 61 hazırladığınız sorgular) ve otomatik arama sorgusu (yeni bir kaydın bazı alanlarının otomatik olarak doldurulmasını sağlayan sorgu, AutoLookup sorgusu) diye de adlandırılabilir. Basit Seçme Sorgusu (BSS) dışındaki sorgular, ileri düzeyde Access bilgisi ve hatta bir ölçüde Programlar İçin Visual Basic (VBA) bilgisi gerektirebilir. BSS’yi iyi kavrayarak, bu ileri düzeydeki sorgular için mükemmel bir başlangıç yapabilirsiniz. BSS’in temel özelliklerini sıralarsak, şunlar karşımıza çıkıyor: 1. Sorguda birden fazla tablo kullanabilirsiniz; tablolar arasında oluşturduğunuz ilişkiden yararlanabilirsiniz. 2. Sorgu sonucu sadece istediğiniz alanları görüntüleyebilir; bu sırada gerekli olmayan sütunları yeni sorgu sonucu tablosuna almayabilirsiniz. 3. Sorgu sonucu oluşacak tabloda alanları istediğiniz sütun sırasına sokabilirsiniz. 4. Seçme işlemi sonucu kaç kaydın görüntülenmesini istiyorsanız, o kadar kayda yer verebilirsiniz. 5. BSS (ve diğer) sorguları icra ettikten sonra, sorguya konu olan tabloların değerlyeri değişmez; başka bir deyişle sorgular tabloları sadece “okur,” içeriğini değiştirmezler. Bir sorgu işledikten sonra tablo oluşturuyorsa (Tablo Yapma Sorgusu ise) ortaya yeni bir tablo çıkar. Sorguyu tekrar çalıştırdığınızda bu tablo yeniden yazılır ve Access 2000, Özelleştir kutusunda yaptığınız uyarı ayarlarına göre sizi uyarabilir. İkinci bölümdeki Adres Defteri alıştırmasını yaptıysanız, bu veri tabanını açın ve birlikte bir BSS oluşturalım. Adres Defteri veritabanını oluşturmadı iseniz, aşağıdaki adımları kendi veritabanınıza uygulamak zorundasınız. Burada yapmak istediğimiş iş veya Access 2000’e sormak istediğimiz soru şu: Istanbul’da oturan ve çocuğu olan dostlarımız kimler, çocuklarının adı ne? Veritabanı dosyası açıldığında, veritabanı penceresinde, nesneler listesinde Sorgular satırını tıklayın. Sorgular penceresinde “Tasarım görünümünde sorgu oluştur” ve “Sihirbazı kullanarak sorgu oluştur” şeklinde iki kısayol göreceksiniz. Pencerenin araç çubuğundaki Yeni düğmesini tıklarsanız, karşınıza daha çok imkan sunan bir sihirbazın ilk adımını içeren bir kutu açılacaktır. Bu kutudaki Basit Sorgu Sihirbazı maddesi, Sorgu nesnesi penceresindeki “Sihirbazı kullanarak sorgu oluştur” kısayolu ile aynı sonucu verir. İster Yeni’yi tıklayıp açılan kutudan Basit Sorgu Sihirbazı maddesini seçin, ister “Sihirbazı kullanarak sorgu oluştur” kısayolunu tıklayın. 62 BSS sihirbazının ilk penceresinde hangi alanların sorguda bulunmasını istediğinizi belirtmeniz gerekir. Bir sorgu sadece tablodan değil sorgu sonucundan da seçme yapabilir; dolayısıyla sol üstteki seçmeli listede veritabanınızda mevcut bütün tablolar ve sorgular sıralanır. Bu listede seçilmiş olan tablo veya sorgunun içerdiği alanlar ise sol altta kullanılabilir alanlar listesinde yer alır. Veritabanımıza soracağımız sorunun birinci bölümü “Istanbul’da oturan” dostlarımızın seçilmesi olduğuna göre, bu kişilerin kayıtlı olduğu Aile tablosunu seçmek zorundayız. Bu alanlardan hangileri BSS sonucu oluşturulacak tablomuzda yer alsın istiyoruz? Bir kere dostlarımızın adını ve soyadını seçmemiz gerekir. Seçilecek kişilerin tümünün Istanbul’da oturanlar olması için Şehir alanının da seçilmesi şart. Bunu yapmak için arzu ettiğimiz alanın adını bir kere tıkladıktan sonra ortadaki düğmelerden en üstte olan sağa doğru tek oklu düğmeyi tıklıyoruz. Soldaki alanların tümünün sorgu sırasında kullanılabilir olmasını isteseydik, ikinci sıradaki iki oklu düğmeyi tıklamamız gerekirdi. Bir alanı yanlışlıkla sağa geçirirsek, üçüncü sıradaki sola doğru tek oklu düğmeyi tıklayarak sorguda kullanabileceğimiz alanlar listesinden çıkartırız. Bu alanların tümünü sorgu listesinden çıkartmak için el alttaki iki oklu düğmeyi tıklayabiliriz. Veritabanına sorduğumuz sorunun ikinci bölümü, Istanbul’da oturan dostlarımızdan sadece çocukları olanların seçilmesini, üçüncü bölümü ise çocukların adlarının da listelenmesini gerektirdiğine göre, bize Çocuklar tablosu ve bu tablodaki çocuk adları alanı da gerekiyor. Şimdi Tablolar ve sorgular kutusunun seçme okunu tıklayarak açılan listeden Çocuklar tablosunu seçelim, sonra da bu tablonun Adı adlı alanını sağa aktaralım. Ama hemen İleri düğmesini tıklamayın. Şimdi bir an için kendimizi Access 2000’in yerine koyalım: Biraz sonra bir seçme işlemi yapacağız; çocuğu olan ve Istanbul’da oturan kişileri seçeğiz. Istanbul’da oturanları seçmek kolay: Eğer Şehir alanındaki değer “Istanbul” ise bu kişiyi seçebiliriz. Peki bu kişilerin çocuğu olup olmadığını nasıl bilebiliriz? Veya şöyle soralım: bu kişilerin çocukları varsa bunları Çocuklar tablosunda nasıl belirleyebiliriz? Bu iki tablo arasında ilişki sağlayan alanla! Veritabanı tasarımında en zor nokta, tablolarda gereksiz yere tekrarı önlemek amacıyla alanları başka tablolara aktarmak gerektiğinden söz ettiğimiz sırada, tablolar arasında ilişki kurmamız gerektiğini belirtmiştik. İkinci bölümden hatırlıyorsanız, Aile tablosuyla Çocuklar tablosu arasındaki ilişkiyi, yani hangi çocuğun hangi aileye mensup olduğunu Aile Sıra No alanındaki bilgiyi iki tabloda ortak kullanarak biliyoruz. Başka bir deyişle bir çocuğun Aile Sıra No alanındaki değer, bu çocuğun hangi ailenin üyesi olduğunu gösteriyor. Sorgu sırasında Access 2000, şöyle düşünebilir: “Hımm. Istanbul’lu bir 63 kişiyi seçeyim; sonra bu kişinin Aile Sıra No alanındaki değeri, Çocuklar tablosundaki aynı adlı alanda arayayım; eğer bu iki değer aynı ise bu çocuğun adını alıp, Istanbullu kişi ile birlikte kaydedeyim.” Access’in düşündüğünü uygulayabilmesi için, ona her iki tablodan Aile Sıra No alanını da vermemiz gerekir. O halde önce açık olan Çocuklar tablosunun, sonra da yeniden Aile tablosunu seçerek, Aile Sıra No alanlarını sağa aktarın. Bu kutuda işimiz bittiğine göre Tamam’ı tıklayabilirsiniz. (Sorgu kaç tablodan kaç alan seçmeyi gerektiyorsa, o kadar alan seçebilirsiniz. Buradaki örnek bu alanları gerektirdiği için burada duruyoruz; sizin örneğiniz başka tablolardan başka alanlar gerektiyorsa, seçmeye devam edin.) Basit sorgu sihirbazının ikinci penceresi, sorgu sonucu oluşturulacak tabloda kaç kayıt olacağını belirler. Varsayılan değer, seçtiğiniz tablolardaki tüm kayıtların sorgu sonucu oluşacak tabloya alınmasıdır. Fakat diyelim ki size sorgu sonucu oluşacak tablonun ilk 5, 25 veya 100 kaydını içeren özet bir tablo da oluşturabilirsiniz. Özet tablo için Özetk seçeneğini seçin ve Özet Seçenekleri düğmesini tıklayın. Bu iş bittikten sonra veya Ayrıntılı seçeneğini seçerek, İleriyi tıklayabilirsiniz. Üçüncü pencerede yeni sorgunuza isim vermeniz, Son’u tıkladığınızda sorgunun icra edilmesini mi, yoksa sorguda sihirbazın yapmadığı değişiklikleri yapmak üzere tasarım görünümünün açılmasını mı istediğinizi belirtmeniz gerekir. Burada yardım isteyip istemediğinizi belirteceğiniz bir başka seçenek daha var. Tasarımı güç sorgular yaptığınızda, Access 2000’in yardım penceresinin açılmış olması size kolaylık sağlar. Şimdi, sorgunun tasarımı ile ilgili işlerimiz bitmediği için ikinci seçeneği işaretleyerek Son’u tıklayalım. Access 2000, seçtiğiniz iki tabloyu sorgu tasarım penceresinin üst bölümünde gösteriyor. İki tablo arasındaki ilişki çizgisine dikkat edin; bu ilişkiyi ikinci bölümdeki alıştırma sırasında kurmuştuk. Access, seçtiğiniz altı alanı, değerleri ne olursa olsun, bütün kayıtları ile seçmeyi (ve bunu yaparken iki tabloyu birleştirmeyi) sağlayan bir sorgu tasarımı öneriyor. Bütün alanların seçildiğini, sorgu tasarım penceresinin alt yarısındaki kılavuzda, Alan satırındaki alan adlarından anlıyoruz. Bu satıra yazılan alan adlarını inceleyin; tablo adı ile tablonun alan adı nasıl birleştiriliyor? İkinci satırda ise tablonun adı belirtiliyor. Sırala satırının boş bırakıldığına dikkat edin. Göster satırındaki kutuların işaretli olması bu alanın sorgu sonucu oluşturulacak tabloda gösterileceği anlamına geliyor. Ve son olarak Ölçüt satırlarının boş olduğuna dikkat edin. 64 Biz sorgumuzun sadece çocukları olan Istanbulluları kapsamasını istiyorduk. O halde, Şehir alanının sütununda, Ölçüt satırına “Istanbul” yazmamız gerekiyor, ki sadece Istanbullular seçilsin. Peki bunlar arasından çocukları olanları nasıl seçeğiz, Access ile çalışma konusunda ustalığınız ilerledikçe, bu tür şartlı seçmeleri (SQL deyiminde “eğer” şartı geçen sorguları) oluşturma becerisi de edineceksiniz. Fakat şimdilik böyle bir sorgu deyimi oluşturmaya gerek yok: Access, çocuklar listesindeki Adı değerlerini seçerken, bunların Aile Sıra No değeri Aile tablosunda Aile Sıra No değerine denk gelmeyen kayıtları seçmeyecektir. (Aile tablonuzda çocuksuz Istanbullu dostlarınız, Çocuklar tablosunda da Istanbullu ailelere mensup olmayan çocuklar bulunmasını sağlayın, ki BSS’in gerçekten işleyip işlemediğini sınayabilelim.) Şimdi sorgu tasarım penceresinde Şehir sütununda Ölçüt satırına “Istanbul” yazın. Sorgu sonucu oluşacak yeni tablomuzda iki ayrı Aile Sıra No sütununa gerek olmadığı için Çocuklar tablosundan alınacak Aile Sıra No sütununun Görüntüle satırındaki işareti kaldırabiliriz; fakat BSS’in tablonun ilişki bağından nasıl yararlandığını görmek için şimdilik bu işareti kaldırmayın. Özetle, Access 2000 BSS sihirbazının tasarımına sadece Şehir alanında Ölçüt olarak “Istanbul” kelimesini eklemiş olduk. Bu sırada Access 2000’in araç buçuğunda ünlem işareti şeklinde bir simge belirdiğini görüyor musunuz? “Çalıştır” isimli bu araç, Access 2000’e “Bu sorguyu icra et ve sorduğum sorunun cevabını bana tablo alarak göster!” komutunun kısayoludur. Şimdi bu simgeyi tıklayalım. İşte sorumuzun cevabı: Aile listemizde yer alan Şehir alanındaki değer “Istanbul” olan ve Çocuklar tablosunda kendilerine ait çocuk bulunan dostlarımızın listesi! Access ile çalışma becerinizi arttırdıkça, her çocuğu mensup oldukları aile ile aynı satıra “Çocuk 1,” “Çocuk 2” ... şeklinde yeni sütunlar halinde sıralamayı da sağlayabilirsiniz. Bu sorgunun verdiği sonuçları doğru bulmuyorsanız, tekrar tasarım görünümüne dönebilirsiniz. Bunun için Access 2000 araç çubuğunda tasarım görünümü simgesini tıklayın. Sorgunun tasarımında istediğiniz değişikleri yaptıktan sonra Çalıştır simgesini tıklayabilirsiniz. Sorgunun istediğiniz sonucu verdiğini gördükten sonra kapatmaya kalktığınızda Access 2000 sorguyu veritabanı dosyasının içinde kaydededecektir. Bir BSS tasarlamaya çalıştığınız sırada seçtiğiniz tablolar ilişkili değilse, Access 2000 sizi uyarır ve bu ilişkiyi kurmadan devam etmek istemez. Sorgu tasarımı sırasında seçtiğiniz tablolar arasındaki ilişki çizgisini silerek sorguyu çalıştırırsanız, anlamlı olmayan sonuçlar alırsınız. 65 Access ile tabir yerinde ise bu kadar uğraşmanızın bir sonucu olması gerekir. Bu sonuca “Rapor” denir. İlk veritabanı işlem programı tasarlandığında adı “Tablo ve Rapor Uygulaması” idi; rapor ilk günden beri veri-iişlemin ayrılmaz parçası olagelmiştir. Access 2000 de bu geleneğin dışında değildir: şu ana kadar farketmiş olduğunuz güçlü veri-işlem araçlarının aynı etkinlikle bu verilerin rapor haline getirilmesinde de kullanıldığını göreceğiz. Access 2000, raporlarını tablo ve sorgulardan elde eder, ya otomatik olarak, ya da sizin talimatınızla biçimlendirir ve veritabanının bir nesnesi olarak veritabanı dosyasının içinde kaydeder. Bu raporları Ofis 2000 ailesinin diğer üyeleri olan Excel ve Word ile paylaşabilirsiniz. Access 2000’nin veritabanı penceresinde tablolar, formlar ve sorgular gibi raporların da ayrı bir nesne grubu halinde toplandığını, “Tasarım görünümünde rapqor oluştur” ve “Sihirbazı kullanarak rapor oluştur” şeklinde iki kısayol bulunduğunu göreceksiniz. Raporlar nesne grubunu seçtiğinizde veritabanı penceresinin Yeni düğmesi, bu iki kısayola ek olarak, dört ayrı rapor sihirbazını daha kullanma imkanı sağlar. Bunların arasındaki iki otomatik rapor aracı belki de en sık kullanacağınız rapor elde etme yöntemi olabilir. Bu iki yöntemde Access 2000 sizin işaret edeceğiniz tablo veya sorgudan elde edeceği raporu kendisi biçimler. Diğer sihirbazlar ve tasarım görünümde rapor oluşturma yöntemlerinde ise raporunuza siz şekil verirsiniz. Rapor, ana hatlarıyla tanımlarsak, bir tablo veya sorgunun alanlarının, alan adları ile birlikte kağıt üzerinde yerleştirilmesi demektir. Şimdi OtoRapor ve kendi tasarlayacağımız raporları ayrıntılı ele alalım. Burada gördüğünüz “Otomatik Rapor: Sütunlu” ve “Otomatik Rapor: Sekmeli” sihirbazları, OtoRapor tekniğini kullanırlar. OtoRapor yoluyla her iki yöntemde de sadece bir tablonun veya sorgunun içeriğini baskıya hazır hale getirirebilirsiniz. Bununla birlikte ortaya çıkacak rapor farklı olur. Sekmeli OtoRapor: her kaydı bir sıraya koyar; her alan sağa doğru sütunlar halinde dizilir. Alan adları, sütun başlığı olarak kullanılır ve çoğu zaman bütün adların kağıda sığması amacıyla kısaltılır. Sütun genişlikleri, bütün veriyi sığdıracak şekilde ayarlanır. Sütunlu OtoRapor: her kayıt sayfa üzerinde bir grup oluşturur; alan adları solda, alan içerikleri sağda iki sütun halinde dizilir. Bir kaydın alan sayısı ve içerikleri bir sayfaya yakın yer tutuyorsa, Access 2000 ikinci kaydı yeni bir sayfada başlatabilir. 66 Ne zaman hangi OtoRapor’un kullanılabileceğine ilişkin bir kural koymak zordur. Bazı veri türlerinde ve tablo yapılarında sütunlu, diğerlerinde sekmeli raporun işe yaradığını göreceksiniz. Genel bir ilke olarak, çok kayıt, çok alan ve alanlarda kısa veriler bulunan tabloların Sekmeli; az kayıt, az alan fakat alanlarda uzun bilgiler bulunan tabloların ise sütunlu biçime daha elverişli olduğunu söyleyebiliriz. Tablonuza hangi otomatik raporun uygun düştüğünü sınayarak bulabilirsiniz. Access 2000 OtoRaporları, Windows’un varsayılan yazıcısıni ve yazıcının o andaki kağıt boyutu ayarlarını dikkate alarak biçimlendirir. Kimi raporlar açısından kağıdın dikey veya yatay olması önem taşıyabilir. OtoRaporu yeniden oluşturmak ve yazıcıya göndermeden önce Access 2000 içinden yazıcı ayarlarını değiştirmek mümkündür. Ayrıca Access 2000, raporunuzun birden fazla sayfaya bölünmesi halinde sütunların önce yatay sonra dikey, veya önce dikey sonra yatay yazdırılması gibi ince ayarlara da imkan verir. Üçüncü bölümde sorguları ele alırken, bir tablonun farklı alanlarını birleştirerek Adres Listesi adlı bir tablo oluşturmuştuk. Şimdi bu tabloyu iki yöntemle otomatik rapor haline getirelim ve farkını görelim. Bunun için veritabanı penceresinde nesnelerden Raporlar’ı ve araç çubuğundan Yeni simgesini tıklayın. Burada, üstte “Otomatik Rapor: Sütunlu” seçeneğini seçtikten sonra veri kaynağı kutusunun seçme okunu tıklayarak, veritabanında mevcut bütün tablo ve sorguları gösteren listeden, Adres Listesi tablosunu seçin. İkinci bölümde Adres Defteri veritabanını oluşturmadıysanız veya üçüncü bölümdeki sorgu alıştırmasını yapmadıysanız, içinde iki alanlı tablo bulunan herhangi bir veritabanını kullanabilirsiniz. Tamam’ı tıkladığımızda, Access 2000, tablodaki verileri kullanarak otomatik tablomuzu baskı önizleme penceresi halinde görütüleyecektir. Üçüncü bölümdeki sorgu alıştırmasını yaparken sorgunun oluşturduğu yeni tabloda, alan adı olarak “Deyim1” ve “Deyim2” kelimelerinin seçildiğine dikkat etmiştik. Şimdi bu adların yeni raporumuzda kullanıldığını görüyorsunuz. Bu adları raporu tasarımın görümünde açarak düzeltebilirdik. Fakat geç kalmış değiliz; OtoRapor da, bütün otomatikliğine rağmen, düzenlenebilir niteliktedir. Buna sonra döneceğiz. Raporu incelemeye devam edersek, her bir kaydın bir “rup” oluşturduğunu görüyoruz. Alan adları birinci sütunda. alan değerleri ikinci sütunda ve bütün alanlar bir grup oluşturacak şekilde altalta dizilmiş bulunuyorlar. Bu arada Araç çubuğuna da dikkat edin. Access 2000, raporu yazdırmak amacıyla hazırladığınızı düşünerek, size baskı önizleme penceresini açmış bulunuyor. Dalıyısıyla araç çubuğunda 67 tasarım görünümüne geçmek gerekli simgenin yanında Yazıcı simgesini, raporu ekranda çeşitli büyüklüklerde ve sayfa sayısında görmenizi sağlayacak denetim simgilerini ve bu raporun sözgelimi Office 2000 ailesinin diğer üyelerinden Microsoft Word kelime işlem programı ile paylaşmayı sağlayacak Ofis Bağlantıları simgesini göreceksiniz. İlk raporunuzu kağıt üzerinde görmek için yazıcı simgesini tıklayabilirsiniz. Bir Access 2000 raporunun Word 2000’de nasıl göründüğünü ve nasıl düzenlenebildiğini Ofis Bağlantıları simgesini tıklayarak inceleyebilirsiniz. Hatta otomatik raporun otomatikliğine müdahale ederek, tasırım işini bu noktadan itibaren devralabilirsiniz. Ama buna sonra geleceğiz; şimdi bir de Sekmeli OtoRapor’u görelim. İki raporu yanyana inceleyebilmek için şimdilik Access 2000’in otomatik olarak küçülttüğü veritabanı penceresini eski önceki boyutuna getirelim, ve bu kez sekmeli OtoRapor aracını kullanalım. Veritabanı penceresinde halâ Raporlar nesnesi seçili olmalı; Yeni simgesini tıklayın ve “Otomatik Rapor: Sekmeli” yöntemini işaretleyerek ve Adres Listesi tablosunu (veya biraz önce kullandığınız tabloyu) seçerek, Tamam’ı tıklayın. Bu kez Access 2000, alan adlarını sütunlar haline getirecek ve her bir kayıt raporda bir satır olacaktır. Her iki raporda da Tablo adının sayfanın başlığı olarak kullanıldığına, sayfanın altında ise günün tarihi ve sayfa numarasının yer aldığını görüyorsunuz. Bu raporda da tablodaki alan adları sütun başlığı olarak kullanılıyor. Bu noktada verimize hangi rapor biçiminin daha uygun düştüğünü de kararlaştırabiliriz. Buradaki örnekte, kişilerin adları ile adreslerinin aynı satırda gösterildiği Sekmeli yöntemle yaptığımız rapor daha kullanışlı bir liste görünümü veriyor. Fakat bir kaydın bütün alanlarının böyle düzgün biçimde sekmelerle ayrılması mümkün olmayabilir. Burada sadece iki alan var ve alanların içerikleri oldukça az. Alan içerikleri uzun olsaydı sayısı arttıkça sütunlu biçim veriye daha uygun olabilir, her bir kaldı kendi grubu içinde topluca görmek daha kullanışlı olabilirdi. OtoRapor güçlü bir araç olmakla birlikte, tablo halinde uygun göründüğü halde belge haline dönüşünce uygun olmayan sayfa veya sütun başlıkları kullanabilir. Veritabanını tasarlayan kişi olarak “Deyim1” bizim için anlam ifade edebilir; fakat raporu sunduğumuz kişi açısında burada, söz gelimi “Müşterinin Adı ve Soyadı” şeklinde bir sütun başlığı bulunması daha uygun düşebilir. OtoRaporun tasarımına nasıl müdahale edebileceğimizi ikinci raporda görelim.Baskı önizleme penceresinin araç çubuğunda, Tasarım görünümü simgesini tıklayın; Access 2000 raporun tasarım penceresini açacaktır. 68 Araç kutusu ve tasarım kılavuzu ile bu görünüm, form oluşturduğumuz pencereye çok benziyor! Access 2000’in tasarım araç kutusu, form ve rapor tasarımlarında aynı işlevi yapar. (Formların da yazdırılabildiğini hatırlayın!) İki tasarım görünümünün arasındaki başlıca fark, form tasarımında her formda tekrar eden “sayfa üst bilgisi” ve “sayfa alt bilgisi” bölümleri ancak siz isteyince oluşturulduğu halde, raporlarda bu iki bölüm varsayılın unsur olarak yer alır. Bizim şu anda yapmak istediğimiz, “Deyim1” şeklindeki sütun başlığını “Adı Soyadı,” “Deyim2” şeklindeki sütün başlığını ise “Adresi” olarak olarak değiştirmekten ibaret. Bunun için, tasarım penceresinde Sayfa Üstbilgisi bölümünde “Deyim1” kelimesini Mouse işaretçisi ile tarayın ve yerine “Adı Soyadı” yazın. Raporun mevcut unsurlarından birinin, örneğin “Deyim1” kelimesinin bulunduğu kutuyu tıkladığınınızda kutunun çevresinde seçildiğini gösteren tutamak işaretlerinin belirdiğini ve Mouse işaretçisini bunlardan sol üst köşede diğerlerinden büyükçe olanının üstüne götürdüğünüzde işaretçinin el şekline girdiğine dikkat edin. Bu, kutuyu tutarak istediğiniz yere taşıyabileceğinizi gösterir. Daha sonra “Deayim2” kelimesinin yerine de “Adresi” kelimesini yazın. Bu arada raporun Ayrıntı bölümünde tablodan alınan Deyim1 ve Deyim2 alanlarının yer aldığına, sayfanın altındaki günün tarihinin “Now()” deyimi ile, “Sayfa 1/1” yazısının ise “="Sayfa " & [Page] & " / " & [Pages]” deyimi ile elde edildiğine dikkat edin. “Now()”, “[Page]” ve “[Pages]” deyimleri, Access 2000’in tanıdığı VBA (Visual Basic for Applications, Uygulamalar için Visual Basic) dilinden alınma kodlardır. Sütun başlıklarını değiştirme işlemini tamamladıktan sonra, araç çubuğunda baskı önizleme simgesini tıklayın; raporun basılınca alacağı biçimi yeniden göreceksiniz; fakat bu kez sütun başlıkları daha anlamlı hale gelmiş olacak. Access 2000’in OtoRapor yeteneği ne kadar güçlü görünse de, rapor oluşturma konusunda asıl marifetinin sihirbazlar eliyle oluşturabileceğiniz etiket ve grafik raporlarında ortaya çıktığını göreceksiniz. Bu yeteneği yakından görmek için örnek olarak tebrik kartlarımızın zarfına yapıştırmak üzere adres etiketleri oluşturalım. Etiket Satınalmadan önce Access 2000, piyasada rahatça bulabileceğiniz adres, dosya, gönderme ve isim etiketlerinin çoğunu tanır ve verinizi bu etiketlere göre biçimlendirebilir. Access ile etiket oluşturmaya başlamadan önce bu tür malzemelerin satıldığı bir mağazadan ihtiyacınıza uygun ne tür etiketler bulunduğunu öğrenin. Etiketleri satın almadan önce bulabildiğiniz mark ve modelin Access tarafından tanınan etiketler 69 arasında bulunup bulunmadığını kontrol etmelisiniz. Bunun için herhangi bir veritabanı dosyasını açın ve Etiket Sihirbazını çalıştırarak, imalatçı adını ve ürün numaralarını kontrol edin. Access 2000, 12 kadar imalatçının bine varan etiket modelini tanıyabilir. Elinizde Access 2000 tarafından “tanınmayan” etiket stoku varsa ve bunları kullanmak zorunda iseniz, Etiket Sihirbazı’nın ikinci adımında Özelleştir düğmesini tıklayarak kendi etiket boyutlarınıza uygun bir şablon oluşturabilirsiniz. Etiket sihirbazı, Raporlar penceresindeki Yeni simgesi tıklanarak ve açılacak kutuda Etiket Sihibarbazı satırı seçilerek çağrılır. Bu pencerede kendinize bir de tablo seçmeniz gerekir. Etiket sihirbazının aslında bir sorgu aracı olduğunu görebilmek için, bu kez “kolay” bir veri tablosu değil fakat etiketin üzerindeki bilgileri bir çok alandan toplayacağımız nisbeten karmaşık bir veri tablosu seçelim. Örneğin, Aile tablosu, bu amaçla kullanılabilir. Bu alıştırmayı yapmadıysanız, çok alanlı, fakat alan içeriklei kısa bir tablo seçebilirsiniz. Tabloyu seçtikten sonra İleri düğmesini tıkladığınızda, Sihirbaz etiket türü seçmenizi isteyecektir. Elinizde gerçekten yazıcınıza uygun etiket varsa ve bu etiket Access 2000 tarafından tanınıyorsa, önce İmalatçı bölümünde etiket yapımcısının adını, sonra yukarıdaki listeden etiketlerinizin ürün numarasını seçin; etiketlerinizin gerçekten yaptığınız seçime uygun boyutlarda olup olmadığını seçtiğiniz ürünün karşısındaki boyut ölçülerini etiket kutusunun üzerindeki ölçülerle karşılaştırabilirsiniz. Üçüncü adımda etiketin görünümüyle ilgili seçim yapmaya başlıyoruz; önce etiketimizde kullanıcak yazı tipini seçmemiz gerekiyor. Beğendiğiniz bir yazı tipini, etiketinize uygun punto ölçüsünü, yazı özelliğini (kalın, italik, altçizgili), ve rengini seçin. Dördüncü adımda işin zevkli tarafı başlıyor: etiketin içeriğini oluşturuyoruz. Seçtiğimiz tabloda mevcut alanları, alan listesinde göreceksiniz. Önce “Adı” alanını seçin ve ortadaki sağa ok simgeli düğmeyi tıklayın; sonra klavyede aralık tuşuna bir kere basın ve solda “Soyadı” alanını seçip, ortadaki oklu simgeyi tıklayın. Şimdi klavyede Enter tuşuna basın; ekrandaki etiket öröneğinde imlecin aşağı satıra indiğini göreceksiniz. Alan listesinde Adres1’i seçin ve oku tıklayın; tekrar klavyede Enter’a basın. İmleç bir aşağı satıra inince, alan listesinde Adres2’yi seçin; oklu simgeyi tıklayın; Enter’a basın. Ve imleç dördüncü satırda iken sağda Şehir alanını seçin ve oklu simgeyi tıklayın. Etiket inşası bitti! 70 İleri’yi tıklayarak, beşinci adıma geçebilirsiniz. Bu adımda etiketlerin nasıl sıralanacağını belirleyeceğiz. Özellikle postaya vermek üzere zarf ve paket üzerine yapıştırılacak veya bir toplantıda katılımcıların gögüslerine takacakları isim etiketlerini hazırladığınız zaman bu önem taşıyabilir. Son’u tıkladığınızda raporunuz basılmaya hazır şekliyle karşınıza gelecektir. Access 2000’in etkiketleri hangi sıraya göre basmasını istiyorsanız, bu alanın adını işaretleyin ve ortadaki oku tıklayın. Diyelim ki bir konferansa katılacak kişilere isim etiketleri hazırlıyorsunuz; katılımcıların kayıt sırasında isim etiketlerini önce soyadlarına, sonra da adlarına göre sıraya sokarak dağıtımı kolaylaştırmak istiyorsunuz. Önce Soyadı, sonra da Adı alanlarını ve oklu simgeyi tıkladığınızda Access 2000 etiketleri yazıcıya önce soyadı alanının içeriğine göre sıralayacak, sonra da bunları kendi içlerinde adlara göre sıraya koyacaktır. Bu surette oluşturduğunuz bir etiketi tasarım görünümünde açarak, biçimini değiştirebilir, arzu ediyorsanız bütün etiketlerde aynı konumda basılacak bir grafik resim de yerleştirebilirsiniz. Bunun için tasarım görümünü açtığınızda belirecek araç kutusundan Resim aracını seçmeniz ve etikette resmin almasını istediğiniz yeri tıklamanız yeterlidir. Resim aracı, disk veya disketlerinizde aradığınız grafik dosyasını bulmanıza yardımcı olacaktır. Access 2000’in rapor sihirbazlarından grafik sihirbazı ise bir tablodan en az iki, en fazla altı alandaki verileri alarak, raporlarınıza Excel türü istatistiksel grafikler koymanıza yardımcı olur. Access 2000’ın OtoRapor sihirbazlarının bir eksiği, bir tablonun verisi ile rapor hazırlamalarıdır. Gerçi çok acele rapora ihtiyacınız olduğunda önce farklı tabloları bir sorgu ile birleştirip, OtoRapor sihirbazına bu sorguyu kaynak olarak kullanmasını bildirebilirsiniz, fakat öyle anlar olabilir ki çok kaynaktan çok veri kullanarak raporlar hazırlamanız gerekir. Access’in Rapor Sihirbazı bu gibi durumlarda istediğiniz kadar tablodan istediğiniz kadar alanı bir raporda birleştirmenizi sağlayacaktır. Çok tablolu rapor hazırlamak için de veritabanı penceresinde nesnelerden Raporları ve araç çubuğundan Yeni simgesini tıklamanız gerekir. Açılacak sihirbaz, daha önceki rapor sihirbazlarına benzemekle birlikte farkı ikinci pencerede göreceksiniz. Birinci pencerede raporda kullanacağınız veri tablosunu seçmeniz gereken kutuy boş bırakarak, İleri düğmesini tıklayın. 71 Bu sihirbaz, daha önce benzerini ileri düzeyde tablo, form ve sorgu oluştururken gördüğümüz türden, birden fazla tablodan alan seçmenize imkan verir. Şimdi Tablolar Sorgular hanesinde, Aile tablosunu seçelim (bu tabloyu içeren Adres Defteri veritabanını yapmadıysanız, herhangi bir veritabanından herhangi bir tabloyu seçebilirsiniz). Kullanılabilir alanlar kutusunda bu tablonun alanları belirmiş olmalı. “Adı,” “Soyadı” ve “Eşinin Adı” alanlarını, sağdaki Seçili Alanlar kutusuna aktarın. Sonra, Tablolar-Sorgular kutusunda Çocuklar tablosunu seçin ve bu tablonun alanlarından Adı’nı Seçili Alanlar’a aktarın. Bu sihirbaz istediğiniz kadar tablodan istediğiniz kadar alanı rapora almanıza imkan verir. Şimdi İleri düğmesini tıklayın. Bu kez Sihirbaz, raporu nasıl görüntelemek istetediğinizi soruyor. Birden fazla tablodan alan seçtiğinizde bu alanların birbirine ile ilişkili olması gerekir. Aksi taktirde Access, hangi alanın verilerinin hangi alana göre yerleştirileceğini bilemez. Bu pencerede, her ne kadar bozuk bir Türkçe ile de olsa, Access 2000 verilerin seçtiğiniz tablolardan hangisine göre sıralanacağını sormaktadır. Bizim örneğimizde Aile tablosundan aldığımız bilgiler esas, Çocuklar tablosundan aldığımız bilgiler Aile’ye göre anlam taşıdığı için, verilerimizin Aile tablosuna göre sıralanması gerekir. Nitekim, böyle bir sıralamada, Aile tablosunun bilgilerinin üst grupta, Çocuklar tablosunun bilgilerinin alt grupta toplanacağını sağdaki örnek düzenlemede görüyoruz. İleri düğmesini tıkladığımızda, Access 2000 bu kez verileri bir alana göre gruplamak isteyip istemediğimizi soracaktır. Buradaki örnekte aileleri soyadlarına göre gruplayabiliriz. Fakat iş dünyasındaki örneklerde firmalarla ilgili bilgilerin firma adına göre gruplanması, veya bir firmanın satınalma raporunda bütün bilgilerin satınalınan malın envanter numarasına göre gruplanması mümkündür. Böylece bir bakışta hangi tür malı hangi firmalardan aldığımızı görebiliriz. Buradaki örnekte, Aile tablosundan alınan Soyadı alanına göre gruplama talep edebiliriz. Bu durumda kayıtlarımız ailenin soyadına göre, kişinin adı, eşinin adı ve çocuklarının adları şeklinde öbeklere bölünecek demektir. İleri düğmesini tıkladığımızda verilerimizin ayrıntı bölümünün (örneğimizde bu bölümde sadece çocuk adları var; fakat çok daha fazla bilgi bulunabilirdi) hangi alanlara göre sıralanması istediğimizi belirlediğimiz pencereye geliyoruz. Bu örnekte çocuk adlarına göre sıralamanın fazla bir anlamı olmadığı için İleri’yi tıklayabiliriz. Fakat başka örneklerde kayıtların da kendi içlerinde sıralanması uygun olabilir. Şimdi raporun sayfa düzeni ile ilgili penceredeyiz. Sayfada yer alacak unsurların yerleşim düzenini belirlediğiniz Yerleştir bölümündeki farklı 72 seçenekleri tıklayarak, raporun biçiminin nasıl değiştiğine dikkat edin. Raporun kağıda dikey veya yatay basılmasını da buradaki yönlendirme seçeneği ile sağlarız. Kimi zaman bir “öbek” veri (bir soyadındaki kişi, eş ve çocuk adları; bir firmanın o firmaya ait bütün alanları, vs.) aynı sayfaya sığmayabilir. Bu durumda Access 2000’i bütün alanları aynı sayfaya sığdırmak üzere biraz fazla çaba harcamaya sevkedebilirsiniz. Eğer bu sayfanızı çok sıkışık bir görünüme zorlarsa, daha sonra bundan vaz geçmeniz ve raporun tasarımını yeniden yaparak, bir alan grubunun bittiği yere sayfa sonu komutu koymanız mümkündür. Bizim örneğimizde “Anahat 1” adlı yerleşim düzeni daha uygun olacaktır. Bu seçeneği ve İleri düğmesini tıklayalım. Access 2000 şimdi raporun nihai görünümü için bizden bir stil seçmemizi istiyor. Access bize kullanılmaya hazır altı ayrı rapor stili sunan. Bunların adını seçtiğinizde raporunuzun yaklaşık nasıl görüneceğini soldaki örnek kutusunda görebilirsiniz. Bu pencerede arzu ettiğiniz bir stili seçip, İleri’yi tıklayın. Ve son ekranda raporunuza bir isim verdikten sonra, sihirbaza ya tasarım, ya da baskı önizleme penceresini açmasını bildireceksiniz; önizlemeyi seçerek, Son’u tıklayın. Raporun görünümünü belki beğenmemiş olabilirsiniz, ama adres defterinizdeki isimlerin soyadına göre tasnif edilmesi ve isimlerin, eşlerin ve çocukların adlarının bir öbek halinde toplanmış olmasını etkileyici bulacağınıza kuşkum yok. Sayfa düzeninin beğenmediğimiz taraflarını tasarım görünümünde anında düzeltebiliriz. Buradaki örnekte, alan adlarında Türkçe karakter kullanmaktan kaçındığımız için olan ve şimdi hata gibi görünen (“Soyadi” gibi) ögeleri düzeltebiliriz; ayrıca soyadı değerlerinin diğer isimlerle soldan hizalanmasını sağlayabiliriz. Örneğin, isimlerin etrafındaki çerçeveleri kaldırmak hiç de fena olmaz! Böyle bir raporun her sayfasında basılmasını istediğimiz firma logosu gibi grafik unsurları da tasarım görünümünde sayfamıza yerleştirebiliriz. Ayrıca raporlarımızda, yeni renkli yazıcıların imkanlarından yararlanmak üzere fotoğraf, renkli metin yazıları ve başlıklar kullanabilir; ayrıca belirli alanların arka planına renkli zeminler koyabiliriz. Access 2000’in rapor tasarım araçları masaüstü yayıncılığa taş çıkartacak imkanlara sahiptir. Access 2000’in rapor tasarım araçlarını keşif faaliyetiniz sırasında, raporların herhangi bir yerinde (örneğin sayfa altbilgisi alanında) dosyanın ve bulunduğu dizinin adını nasıl yazdırabileceğinizi de araştırın. Çoğu raporda bu bilgi, sizi veya başkasını saatlerce aramadan kurtarır! 73 Bu Internet çağında, herkesin bir Web sayfası edindiğin günümüzde Access 2000’in bundan mahrum olacağını düşünmüyordunuz, herhalde! Bütün Ofis 2000 programları gibi, Internet, Access 2000’in de “göbek adı!” Bu kitapçığın kapsamı dışında kalan diğer bir çok bazı özelliği ve Access Projesi denen dosya türüyle oluşturabileceğinin veritabanı sunucu (MS SQL Server) bağlantısı sayesinde Access 2000, sadece kendi oluşturduğu veritabanlarını değil, fakat çok daha büyük dosyalar için son kullanıcı görevi yapabilir. Biz burada Access 2000 ile kendi verilerinizi Internet’e veya Intranet’e açma imkanından söz edeceğiz. Başka bir deyişle, Web Sayfaları’ndan. Access 2000 öncesi, Internet’te veri-bağlantılı sayfa yapmak zordu. Access 2000 ile bütünleştirilmiş olan bazı ActiveX araçları, veri dosyalarını Internet’e açmayı oldukça kolay hale getiriyor. ActiveX, Microsoft’un OLE teknolojisinin gelişmişi, Java applet benzeri bir teknolojidir ve Access 2000 kullanıcısının, verileri Internet sayfalarında kullanılır hale getirirken bu ve benzeri teknolojilerin nasıl işlediğini bilmesi de gerekmez. Ne var ki Access 2000 ile oluşturacağınız veribağlantılı sayfaların işleyebilmesi için ActiveX teknolojisinin ziyaretçinin kullanacağı Web Browser programı tarafından sağlanması gerekir. Bunu sağlayan browser ise yine Microsoft’un Internet Explorer 5.0 programıdır. IE5’in Access 2000’in veri sayfalarını gerektiği gibi yorumlayabilmesi için de çalıştığı işletim sisteminde Winsock32 denen sistemin bulunması, başka bir deyişle Windows sisteminin 95, 98, NT 4 veya 2000 olması gerekir. Access 2000 verilerinizin Internet’te başka işletim sistemleri ve başka browser sahibi ziyaretçiler tarafından da görülmesini istiyorsanız. yine eski usul ODBC tekniklerinden yararlanmak zorundasınız. Access veri tablolarının tasarımından söz ederken, yeni bir veri türü olarak Access 2000’in köprü (hyperlink, Internet bağlantı adresi) kabul ettiğini söylemiştik. Bu, Access 2000’in Internet ile ilgili becerilerinin sadece biridir. Access’in gerçek Internet marifeti ise veri tablolarını Internet sayfası haline getirmesidir. Access tablolarınızı Internet’e açmak için HTML dilini bilmeniz ve Web sayfası tasarımına aşina olmanız da gerekmez. Access verileriniz Internet’e iki tazrda açılabilir: Duragan: Access 2000 tablosunun olduğu gibi HTML diline çevrilmesidir. Bir bakıma Access tablosunun fotoğrafının çekilmesi ve bu fotoğrafın Internet’te yayınlanması anlamına gelir. Kendi sistemininizde kalan gerçek Access 2000 tablosu daha sonra güncelleştirilir, veriler değiştirilir veya yeni alanlar eklenirse, bu değişiklikler Internet’e açılmış olan veri sayfasına yansımaz. Bunu herhangi bir tablo açıkken Dosya menüsünden Ver maddesini seçerek 74 ve açılacak diyalog kutusunda kayıt türü hanesinde HTML Belgeleri seçeneğini seçerek yapabilirsiniz. Ortaya çıkan HTML belgesinde Access tablosunun görüntülenen alanları ve içlerindeki değerler, bir HTML tablosu olarak yer alır. Orta çıkan belge tablonun adını taşır ve artık Access 2000 ile hiç bir ilgisi kalmamış demektir. Bu belgeyi Access 2000 tablosuna uygun şekilde güncelleştirebilmek için Access’ten yeniden Ver işlemi yapmanız ve bu belgeyi yeniden kaydetmeniz gerekir. Access 2000 ile oluşturduğunuz ve veri içeren bir HTML belgesini Internet sitenize yerleştirdiyseniz, eskisini yeni belgeyle değiştirmeniz gerekir. HTML tablo oluşturma işini ne kadar kolaylaştırmış da olsanız, elle yapacağınız bu işlem, biraz sonra göreceğimiz işleme göre durağan sayılır. Dinamik: Basit HTML belgesi oluşturmak yerine, Veri Erişim Sayfası Sihirbazı’nı kullanarak, Internet’e başkalarının sizin verilerinize erişmesini sağlayan bir HTML sayfası koyabilirsiniz. Böyle bir sayfa yapmak, Access 2000 açısından duragan veri sayfası yapmak kadar kolaydır; fakat Internet sitesinin bulunduğu Web Server, veritabanı dosyası ve Access arasında işbirliğini sağlamak Internet’in nasıl işlediğine ilişkin bilgiler gerektirebilir. Bu yolla oluşturacağınız sayfaların Internet’e konulması ve Internet ziyaretçilerine açılması işine sonra döneceğiz; şimdi işin Access 2000 içinde yapılacak bölümünü ele alalım. Internet veya bir firmanın dahilî Intranet’inde yayınlanacak verilerin bulunduğu veritabanını açın ve Veritabanı penceresinde nesneler listesinden Sayfalar’ı tıklayın. Access, tasarım görünümünde ve sihirbazı kullanarak veri sayfası oluşturma kısayollarının yanında, daha önce oluşturduğunuz (yani “zaten varolan”) bir veri erişim sayfasının açılmasını önerecektir. Sihirbaz seçeneğini tıklayın; sorgu, form ve rapor oluşturma sırasında iyice aşina olduğumuz sihirbazın birinci penceresi açılsın. Bu pencere bize veri erişim sayfamıza birden çok tablo veya sorgudan alan seçebileceğimizi gösteriyor (Neden?). Üstteki Tablolar/Sorgular listesinden Aile tablosunu, altındaki alanlar listesinden Ad, Soyad, Eşinin Adı alanlarını; sonra tekrar üstteki listeden Çocuklar tablosunu ve alan listesinden Adı’nı sağdaki Seçili Alanlar listesine aktaralım. İleri’yi tıkladığımızda gelen pencereye de yabancı değiliz. Gruplandırma yapabilmek için bizden alan seçmemizi isteyen bu pencere Aile tablosundan Soyadı alanını seçelim; pencerenin sağdaki örnek bölümünde HTML sayfasının kaba bir tasarımını göreceksiniz. Tekrar İleri’yi tıklayalım. Üçüncü pencerede de Ayrıntılar bölümünün sıralanmasını arzu edip etmediğimiz sorulacaktır. Örnek tablomuzda buna ihtiyaç yok, ama siz başka bir veri tablosunu kullanıyorsanız ve kayıtlarınızın kendi içinde sıralanmasının uygun olacağını 75 düşünüyorsanız, bunu dört seviyeli olarak yapabilirsiniz (İl, İlçe, Mahalle, Bayiin Adı, gibi). İleriyi tıkladığınızda bu kez Access, ortaya çıkacak HTML dosyasının adını isteyecek, Son’u tıkladığınızda sayfanın tasarımın görünümünde mi, yoksa browser’da görüleceği gibi görünmesini mi arzu ettiğinizi soracak, ve bir de sayfanızda bir “motif” uygulanıp uygulanmaması konusunda karar vermenizi isteyecektir. Sayfa motifi veya ana tema Web tasarımcılığında bir sitenin bütün sayfaları arasında görsel birlik kurmakta kullanılan bir tekniktir. Access 2000, Office 2000 ailesi programların (ve başlıca FrontPage 2000’in) kullandığı temaları oluşturacağınız Veri Erişim Sayfalarına uygulamanıza yardımcı olabilir. Bunun için buradaki motif kutusunu işaretlemeniz yeter. Motif kutusunu işaretlediğiniz taktirde, Access 2000, Office 2000 programlarının ortak tema diyalog kutusunu açacaktır. Bu kutuda sol tarafta 24 (ekleme yaparsanız daha çok) tema adını içeren bir liste göreceksiniz. Sağda ise seçtiğiniz temaya göre veri erişim sayfasında uygulanacak biçimi inceleyebilirsiniz. Burada “Çubuklar” adlı temanın seçildiğini görüyoruz. Son’u tıkladığımızda ise diğer sihirbazlardan farklı olarak karşımıza bir Web sayfası tasarımı yapmaya elverişli bütün araçların ve denetimlerin bulunduğu tasarım görünümü gelecektir. Telaşa gerek yok: Burada yapacağınız tek şey, sayfaya bir başlık vermekten ibarettir. “Başlık yazmak için burayı tıklayınız” yazısını tıklayarak sayfanıza kendi başlığınızı yazabilirsiniz. Bu görünümde yapabileceğiniz bir başka değişiklik ise sayfanın veritabanı ile “canlı” ilişkisini kuran Sihirbaz’ın (Wizard) bazı kontrollere kendi adının kısatlmasını yazması dolayısıyla bu ifadeleri Türkçeleştirmek olabilir. Burada görülen araçlar ve denetimlerin kullanımı büyük ölçüde HTML bilgisi gerektirir. Özellikle veritabanı ile sayfanızdaki veri görüntülenecek kutular arasındaki ilişkiyi sağlayan Recordset ActiveX nesneleriyle ilgili ve Access 2000 tarafından XML diliyle yazılan kodların değiştirilmesi Web sayfası ile ona hayat veren, verileri canlı tutan ilişkiyi kesebilir. Burada yaptığımız örneğin Access 2000 içinde Web sayfası olarak görünüşü ile aynı sayfanın Internet’te Web browser ile ulaşıldığı andaki görüntüsünü görüyorsunuz: Bilgisayarınızdaki veri tabanı bu örnekte olduğu gibi Web Server’a bağlı ise, kendi sabit diskitinizdeki Access dosyasında yapacağınız herhangi bir değişiklik o sırada sayfanızı Internet’te izleyen ziyaretçilerin ekranına yansıtılacaktır. 76 Access 2000 ile giriş düzeyinde yapılabilecek işlerin bir kısmını görmüş olduk. Daha doğrusu, Access’in imkan ve yeteneklerinin şöyle bir üstünü açtık. Geride daha çok şey var. Formları daha albenili yapmaktan tutun, başka veritabanı programları ile bilgi alışverişine, hesap ve işlev yapan sorgulardan, SQL Server veritabanlarını işlemeye kadar.. Ama her büyük yolculuk bir ilk adımla başlar. Bu kitapçıkla, Access 2000 dünyasına ilk adımı atmış oluyorsunuz. 77