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ı.
Sayfa 44
MİKTAR*FİYAT AS "TUTAR" FİYAT AS "YENİ FİYAT" Query yeni bir database yaratmak için kullanılıyorsa, tüm türemiş kolonlara en çok 15 karakter uzunluğunda geçerli alan isimleri vermeye özen göstermelisiniz.
@POSITION: Bir yazının yerleştirileceği pozisyonu belirlemek için, "@ Position" işlemcisi kullanılır. Alan için kolon pozisyonlaması yapmazsanız, Superbase her satırda bir kayıt ve her alan bilgisi bir öncekinin sağında olmak üzere çıkış verecektir. Data yerleşimini belirtmek için, önce @Position kutusu kliklenerek değer kutusuna istenen kolon numarası girilir, sonra alan ismi seçilir. Diyelim ki, dosyadaki "Soyadı" alanının 12. kolondan yazılmasını istiyoruz. Yukarıdaki işlemi sırayla bu bilgiler için yaparsak, penceredeki komut satırının görüntüsü:
@ 12 Soyadı şeklinde olur. Kolon pozisyonlama çalışmalarını önce ekranda yapın ve genişlikleri görün. Zira üstüste binen alanlar problemlere sebep olur. Bu olay tipik olarak Superbase'e bir alan bilgisini yazmasını söylediğiniz kolonun bir önceki bilginin sonundaki boşluklar tarafından kullanılıyor olmasından dolayı ortaya çıkar ve Superbase bu durumda bilgiyi doğru kolondan başlatır ama bir alt satıra atlayarak. Maksimum kolon pozisyonu 255'tir. Printer boyutlarınıza uygun olarak doğru genişliği bulursanız, herhangi bir sorunla karşılaşmazsınız. &LENGTH: Kolon yerleştirme problemine satırdaki alan genişliklerine sınırlama koyarak çözüm getirebilirsiniz. Bu sınırlama için &Length operatörü kullanılır. Genişlik belirtme işlemi de tıpkı kolon tanımlama gibi yapılır. Yani önce &Length kutusu kliklenerek değer kutusuna istenen genişlik yazılıp RETURN tuşuna basılır ve sonra da bu genişliği kullanacak alan ismi seçilir. Örneğin Soyadı alanının genişliğini 10 yapmak istiyoruz: & 10 Soyadı
LINE: Çıktının, herhangi bir yerde yeni bir satırdan başlamasını belirtebilirsiniz. Bu işlem için operatörler bölümündeki "Line" seçeneği kullanılır. Çıktının belli yerlerinde aktif yazım pozisyonlarına bağlı olarak LINE kutusu iki kez kliklenerek boş bir satır atlanmasını sağlayabilirsiniz.
DİĞER FORMAT PARAMETRELERİ: Query çıktısı için format belirtmede kullanılabilecek bunlardan başka birçok parametre vardır. Bunlar Query Fields diyalog penceresinde gösterilmemiştir ve doğrudan komut satırına boşluk ya da noktalı virgül ayrılarak yazılırlar. Bu parametreler ve tanımlamaları aşağıdaki tabloda gösterilmiştir:
Parametre Fonksiyon FIELD Alan isimleri yazılmaz DOWN Çıktının her data kalemini yeni bir satıra yazar. BF[ON] Bold (kalın) yazı UL[ON] Underline (altçizgili) yazı IT[ON] İtalik yazı BF/UL/IT[OFF] Yazı özelliklerini iptal eder. FG Ön plan rengini set eder. BG Arka plan rengini set eder. Eject n n ile verilen sayı kadar satır atlar. Field: Bu parametre kullanılmadığı zaman, Superbase sayfa başlarında her alan ismini, o alan bilgilerinin listelendiği kolonunun başına yazar. Sayfa başlarına alan isimlerinin yazılması istenmiyorsa, komut satırındaki alan isimlerinin başına FIELD parametresi yazılır. Bu durumda kolon başlıkları yazılmaksızın bilgiler sayfa başından itibaren listelenmeye başlanır:
FIELD Adı,Soyadı,Adres,Şehir Alan isimlerinin bazılarının yazılmasını, bazılarının yazılmamasını isterseniz, FIELD parametresini sadece yazılmayacak alanların başına yerleştirmelisiniz:
Adı,Soyadı,Şehir,FIELDS Adres Ancak böyle bazı kolon isimlerini yazmama durumunda satırlarda kayma olacaktır. Bu nedenle satır ayarlamalarını yapmak gerekebilir.
Down: Komut satırının başına alan isimlerinden önce DOWN parametresi yerleştirilirse, çıktıda her alan bilgisi yeni bir satıra yazılır. Örneğin:
DOWN Adı,Soyadı,Şehir gibi bir tanımlama sonucu, bilgilerin dökümü şöyle olur:
Ahmet Durmaz Ankara Bilgiler Record View görüntü modunda olduğu gibi listelenir. Alan isimleri ters görüntü modunda listelenir, bilgiler alan isimleri yanındaki yerlerini alırlar; tıpkı kayıt giriş ekranı gibi. Bu modda alan isimlerinin görünmemesini isterseniz, FIELD ve DOWN parametrelerini birlikte kullanmalısınız:
FIELD DOWN Adı,Soyadı,Şehir Yazı Stili Parametreleri: Query'de kayıt bilgilerinin istediğiniz kısımlarını bold (kalın), underline (alt çizgili) ya da italik olarak yazdırabilirsiniz. ON parametresinin kullanımı opsiyoneldir. Tanımlanan stil parametreleri, ATTR OFF yapılarak tamamen kaldırılabileceği gibi, BF OFF, UL OFF ve IT OFF ile tek tek kapatılabilir:
BF IT Adı,Soyadı, IT OFF Şehir Renkler: FG ve BG parametrelerini kullanarak ön ve arka plan renkleri değiştirilebilir. Burada kullanılabilecek renkler 1'den 4'e kadar Preferences renkleridir: FG 3;BG 4 Adı,Soyadı,Şehir komutu ön zemin rengini siyah, arka planı turuncu yapar.