Amiga Dünyası sayı 5, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

Eject: Bir kaydın içindeki tüm dataların aynı sayfaya yazılmasını sağlayarak kayıtları bölmemek için kullanılır. EJECT parametresini takip eden rakam kağıdın altında kalacak olan satır sayısını verir. Yani bir kayıt yazıldıktan sonra altta kalan satır sayısı parametrede verilen satır sayısı kadardır. Rapor sayfalarında aynı kaydın farklı alanlarını ayrı ayrı sayfalarda istemiyorsanız, kullanacağınız parametre budur. Komut satırına: Adı,Soyadı,NEWLINE Adres,Şehir EJECT 2 yazıldığında, kayıtlar ekrana ya da bir printer kağıdına sonunda 2 satır kalana kadar yazılacaktır.

Sadece EJECT ya da EJECT 0 yazmak, Superbase'in her sayfaya bir kayıt yazmasını sağlar.

ON File: Çıktı için kullanılacak dataların aynı dosyadan alınmayıp birden fazla dosyaya erişmek gerektiğinde, formatlama problemleri ile karşılaşılabilir. ON File seçeneği bu tür problemleri çözmek için düzenlenmiştir. Bu seçeneğin çalışması en güzel bir örnekle anlatılabilir. Diyelim ki, bir MEVDUATLAR ve bir de MÜŞTERİLER adlı iki database dosyanız var. MEVDUATLAR dosyanızda, MÜŞTERİLER dosyasındaki kişisel mevduatların ayrıntılarını tutuyorsunuz ve her kayıt bir mevduata ait. MÜŞTERİLER dosyasında adı ve soyadı, toplam mevduat, adres, telefon, hesap açılış tarihi gibi kişisel bilgiler, MEVDUATLAR dosyasında ise tek tek mevduat hesapları tutuluyor olsun. Yani burada mevduat sahibinin adı ve soyadı, mevduatın bulunduğu banka, mevduatın tipi ve tutarı, faiz oranı, yıllık faiz tutarı ve yatırılan tarih gibi bilgilerin bulunduğunu düşünün. Bu mantıkla MÜŞTERİLER dosyasındaki bir kaydın MEVDUATLAR dosyasında ayrı ayrı birçok hesabın sahibi olabileceği açık değil mi? Yani bir müşteri farklı farklı birçok bankada, hatta aynı bankada değişik hesaplarda birçok mevduata sahip olabilir.

Update uygulamasında olduğu gibi, query için de dosyaların birbirine bağlanabileceği bir ortak alan gerekecektir. Her iki dosyada da ADI ve SOYADI alanları bulunduğuna göre bu iki dosyanın ilişkisinin ADI ve SOYADI alanına göre kurulduğunu düşünelim. İlişkinin kurulabilmesi için her şeyden önce Query Filter satırına bağlantı filtresi yazılır:

ADI ve SOYADI.MÜŞTERİLER = ADI ve SOYADI.MEVDUATLAR

Hazırlayacağımız raporda, MÜŞTERİLER dosyasından müşterinin adı ve soyadı bilgileri alınsın. MEVDUATLAR dosyasından da bu müşterinin hangi bankalarda hangi tarihte yatırılmış ne kadar parası olduğu bulunsun. Bu işlem için Query Edit penceresinde Fields kutusu kliklenerek alana gereken açıklama yazılır:

ADI ve SOYADI, ON MÜŞTERİLER, BANKA, MİKTAR, TARİH

Gördüğünüz gibi yazılacak ilk bilgiyi MÜŞTERİLER dosyasından, sonraki üç bilgiyi de MEVDUATLAR dosyasından alıyoruz. OK'i seçerek ekrana liste aldığımızda, iki dosyada bulunan aynı kişiye ait bilgiler index sırasına göre yazılır. Aynı kişiye ait birden fazla mevduat kaydı varsa, isimler tekrarlanır:

ADI ve SOYADI BANKA MİKTAR TARİH

Ali Uslanmaz İşB. 1000000 10/07/1990 Ali Uslanmaz YKB. 550000 25/09/1990 Deniz Kara İşB. 350000 03/06/1990 Mehmet Güçlü Ziraat B. 2500000 01/05/1989 Mehmet Güçlü İşB. 468000 24/07/1990 Mehmet Güçlü İşB. 1550000 02/11/1989

Gördüğünüz gibi çok fazla data tekrarı oluyor. İşte bunu önlemek için gereken işlem, Superbase'in dosyalardan bilgi okumasını düzenlemektir. Bunun için de ON File kullanılır. Buradaki "File" ON kutusunu kliklediğinizde içinde bulunduğunuz dosyadır ve otomatik olarak dosya ismi komut satırına ON ile birlikte yerleşecektir.

Aynı isimlerin tekrarlanmadan sadece bir kez yazılarak MEVDUATLAR dosyasındaki bilgilerin karşısında sıralanmasını sağlamak için komut satırını:

ON "MÜŞTERİLER" ADI ve SOYA- DI.MÜŞTERİLER,ON "MEVDUAT- LAR" @27 BANKA,MİKTAR,TARİH

şeklinde değiştirirseniz, çıktı aşağıdaki hale gelecektir:

ADI ve SOYADI

BANKA MİKTAR TARİH

Ali Uslanmaz İşB. 1000000 10/07/1990 YKB. 550000 25/09/1990 Deniz Kara İşB. 350000 03/06/1990 Mehmet Güçlü Ziraat B. 2500000 01/05/1989 İşB. 468000 24/07/1990 İşB. 1550000 02/11/1989

Gördüğünüz gibi artık isimler tekrarlanmıyor.

İsterseniz bu örnekte Superbase'in neler yaptığını inceleyerek bu ayki anlatımlarımızı bitirelim. Zira bu konuyu örneklerle çalışarak daha iyi anlamanız gerekiyor. Query, OK ile başlatıldığında, Superbase önce MÜŞTERİLER dosyasına giderek bir kayıt okur, sonra da MEVDUATLAR dosyasındaki kayıtları okumaya başlar. İlk dosyadan okuduğu ADI ve SOYADI bilgisini ikinci dosyanın aynı alanındaki bilgi ile karşılaştırmaya başlar. Uyumlu ilk kaydı bulduğunda, Fields komut satırında belirlenen esaslara uygun olarak çıktıyı ekran ya da printer'a yazmaya başlar. ON "MÜŞTERİLER" komutuna geri dönmeden buradan okuduğu ilk kaydı MEVDUATLAR dosyasındaki kayıtlarla karşılaştırmaya devam eder ve bulduğu uyumlu kayıtlardaki bilgileri ismi tekrar yazmadan altına eklemeye başlar. İşte bu ON "MÜŞTERİLER" bildiriminin etkisi. ON "MEVDUATLAR" ise farklı bir etkiye sahip. Öncelikle ilk ON File komutunu iptal eder ve Superbase'e MEVDUATLAR dosyasındaki tüm uyumlu kayıtları bulmasını söyler. Fields komut satırından ON "MEVDUATLAR" komutunu çıkartırsanız, yalnız ilk bulunan uyumlu kayıt bilgilerinin yazıldığını göreceksiniz.

Gelecek ay, Query penceresindeki Report, Filter ve Order alanları ile konumuza devam edeceğiz. Hoşçakalın....

Klavyeyle gezinmek için ← ve → tuşları.