Access'de İleri Sorgular

Elektronik bölümünde yer alan bu konu SaMeT46 tarafından paylaşıldı.

  1. SaMeT46

    SaMeT46 Moderatör

    İleri Sorgular



    Access 2000 ile gerçek bir sorgu oluşturduğuma göre, şimdi bir adım ileri giderek, sorgu tasarımında oluşturacağımız bir "deyim" aracılığıyla tablolarımızdaki alanlardan elde edeceğimiz bilgi ile yeni bir alan oluşturalım ve bunu yeni bir tabloya etkeleyim. Burada yine yukarıdaki örneği kullanmaya devam edeceğiz. Amacımız, Aile tablosundaki her kayıt için Ad alanının içeriği ile Soyadi alanının içeğini birleştirmek ve tek sütunda toplamak. Sonra bir üçüncü sütun olarak Adres 1, Adres 2 ve Şehir alanlarını birleştirip Adres adı altında yeni bir alan oluşturacağız. Bu sorgunun oluşturacağı tabloyu da yeni bir tablo olarak veritabanımıza ekleyeceğiz. (Daha sonra bu tablo çok işimize yarayacak!)

    Adres Defteri veritabanını yaptınızsa ve açık değilse, açın. Sorgular nesnseini seçin ve "Tasarım görünümünde sorgu oluştur" kısayolunu tıklayın. Access 2000 sorguda yararlanmak istediğiniz tabloları seçebilmeniz için bir kutu açacaktır; buradan Aile tablosunu seçin, ve Ekle düğmesini tıklayın. Tablo seçme kutusunu kapatabilirsiniz; çünkü istediğimiz bütün alanlar bu tabloda mevcut. İkinci bölümdeki alıştırma sırasında Adres Defteri veritabanını oluşturmadıysanız, herhangi bir veritabanını açabilir, herhangi bir tabloyu seçebilirsiniz. Gerçi buradaki alıştırma sonunda elde edeceğiniz tablo anlamlı sonuçlar içermeyebilir, ama en azından deyim oluşturma konusundaki alıştırmaya katılmış olursunuz. Access 2000, sadece bir tablosu kullanılmaya hazır, fakat alanlarının tümü boş bir sorgu tasarım panceresi açacaktır.

    Şimdi, tasarım penceresinin alttaki kılavuz bölümünde, Alan satırının birinci sütununun içini sağ tıklayın, ve açılan menüden "Oluştur..." maddesini seçin. Access 2000, daha önce gördüğümüz "Deyim Oluşturucusu" aracını açacaktır. Bir kere daha tekrar edelim: Aile tablosunun "Adı" alanındaki değer ile "Soyadı" alanındaki değeri aynı alanda birleştirmek istiyoruz. En soldaki kategorilerden Tablolar'ı iki kere tıklayın; altında veritabanınızdaki bütün tabloların listesini göreceksiniz. Aile (veya hangi tabloyu örönek olarak kullanacaksınız o tablonun adını) bir kere tıklayın. Ortadaki pencerede tablonun içerdiği bütün alanların listesi görüntülenince, "Adi" alanını (veya hangi alanı kullanacaksanız o alanın adını) bir kere tıklayın. Şimdi en sağda, her kayıt için bu alandaki değeri simgeleyen "" kelimesi belirecektir. Deyim oluşturucusunun üstteki deyim penceresi ile kategori pencerelerinin yer aldığı bölüm arasındaki araç simgelerinden "Yapıştır" simgesini tıklayın.

    Deyim satırında "[Aile]![Adi]" ifadesi belirdi. Peki, yine araç simgelerinden beşincisi olan "&" (ekle) işaretini tıklayın; pencçerede beliren "&" işaretinin sağını tıklayıp, klavyede tırnak işareti tuşuna, aralık tuşuna ve tekrar tırnak işareti tuşuna basın. Araç çubuğundan "&" simgesini tekrar tıklayın. Deyim oluşturucunun alt bölümünde ortadaki pencerede "Soyadı" alanını ve araç çubuğunda Ekle simgesini tıklayın. Bunları sarısaylı yaptıysanız, deyim satırında şu ifade belirecektir:

    [Aile]![Adi] & " " & [Aile]![Soyadi]

    Burada işin püf noktası Access 2000'e yazdırdığınız iki alan referansı ve & işaretinin ortasına klavyeden yazdığınız tırnak-aralık-tırnak bölümünü doğru yazmaktır. Bununla Access 2000'e, "Aile tablosundan "Adi" alanının değerini al, buna önce bir aralık sonra da Alie tablosunda "Soyadi" alanının değerini ekle!" demiş oluyoruz. Deyim oluşturucu ise şu anda işimiz bitti; Tamam'ı taklayabiliriz. Geri döndüğümüz sorgu tasarım penceresinde Alan satırında şu ifadeyi göreceksiniz:

    Deyim1: [Aile]![Adi] & " " & [Aile]![Soyadi]

    Peki, şimdi ikinci sütundaki Alan kutusunu sağ tıklayın, ve aynı işlemi bu kez kutunun içinde şu ifade belirecek şekilde yapın:

    Deyim2: [Aile]![Adres1] & " " & [Aile]![Adres2] & " " & [Aile]![Sehir]

    Başka bir veritabanı ve başka tablo kullanıyorsanız, "Adres1" ve diğer alanlar yerine başka alanları seçebilirsiniz. Burada önemli olan üç alanı aralarına birer aralık koyarak birbirine eklemenizdir.

    Bu işlemi bitirdikten sonra, sıra sorguyu tablo yapar hale getirmektir. Bunun için Sorgu menüsünden Tablo Yapma Sorgusu maddesini tıklayın ve açılacak kutuda Tablo adı hanesine sorgunun oluşturucağı tabloya verilecek adı yazın. Bu adın veritabanında mevcut bir tablo adı olmamasına dikkat edin. Tablonun o anda açık veritabanı içinde oluşturulmasını istiyorsanız "Geçerli veritabanı" (Current'in karşılığı "geçerli" olmasa da!) maddesinin işaretli kalmalıdır; yeni tablonun başka bir veritabanı içinde oluşturulmasını da sağlayabilirsiniz. Bunun için "Farklı veritabanı" maddesini işaretleyin ve "Dosya adı" hanesine bu veritabanının adını yazın. Tamam'ı taklayın. Şimdi ne zaman bu sorguyu çalıştırırsanız, veritabanına verdiğiniz isimde bir dosya eklenecek veya mevcut dosya (sizin onayınızla) güncelleştirilecektir. Şimdi bunu yapalım. Araç çubuğundan Çalıştır simgesini tıklayın. Ve Veritabanı penceresinde Tablolar nesnesini seçin; açılacak kutuda da yeni tablonuzun adını iki kere tıklayın.

    İşte bir tablonun farklı alanlarını birleştirerek elde ettiğiniz yeni tablonuz. Burada alan adı olarak sorguda ortaya çıkan uzun ifade yerine sadece "Deyim1" ve "Deyim2" kelimelirinin seçildiğine dikkat edin. Bu isimler hoşunuza gitmiyorsa, yeni tabloyu tasarım görünümünde açabilir ve alan adlarını değiştirebilirsiniz. Access 2000'in Deyim Oluşturucucusu, sizin için burada yaptığınızdan çok daha ileri düzeyde, seçme, aritmetik, istatistik ve benzeri işlevlere dayanan hesaplamalar yapabilen SQL deyimleri yazmanız için yardımcı olacaktır. Buradaki örnekte de yaptığınız gerçekte bir SQL komut ifadesi yazmaktı. Sorgunuz tasarım halinde iken Görünüm menüsünden SQL Göster maddesini seçerseniz, sorgunun SQL komut ifadesi biçiminde nasıl yazıldığını görebilirsiniz:

    SELECT [Aile]![Adi] & " " & [Aile]![Soyadi] AS Deyim1, [Aile]![Adres1] & " " & [Aile]![Adres2] & " " & [Aile]![Sehir] AS Deyim2 INTO [Adres Listesi] FROM Aile;

    Sorgu konusunu tamamlarken bir bir çok sorgu türünü ele almadığımızı hatırlatmak erinde olur. Bu sorguları tanımak ve burada verdiğimiz iki örnekle aralarındaki farkı görebilmek için izlenebilecek yollardan biri sorgu sihirbazlarını kullanarak, Access 2000'e her birinden bir kaç örnek yaptırtmak olabilir. Sorgularda kullanabileceği işlevler ve diğer hesaplatma işleri için de Access 2000 yardım dosyalarındaki çok sayıda örneğe bakabilirsiniz.