Access Veritabanı - 2

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 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ı 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 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 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 veri-iş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, 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 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 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, “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 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.

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 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.

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.

İ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 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:

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 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 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ı 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 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 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 veri-iş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.

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.

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.

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 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.

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 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.

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.

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.

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 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.

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 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!

İ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.

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ı 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!

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 veri-bağ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 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ı 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.

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.


Ekleyen: WALLACEs | Eklenme Tarihi: 27.01.2016