Bu sayfadaki yazılar
Sayfanın metni
Sayfa 42
Raporda istenen alanların bulunması için ayarlamaların Fields kutusundan yapılması gerektiğini zaten geçen aydan biliyoruz. Alan seçimini Adı ve Soyadı, Adres2, Şehir, Toplam Borç ve Bakiye olarak yaptıktan sonra, OK kutusunu kliklediğimizde, örneğimizin çıktısı TABLO 1'deki gibi olacaktır: Gördüğünüz gibi Superbase, ilk kayıttaki Şehir (İstanbul) bilgisini aldı, Adres-2'de bulunan bilgiyi okuyarak Şehir İstanbul olan tüm kayıtlarda Adres2 alanını tarayarak aynı bilgilere (Kadıköy) sahip olanları grupladı. Her kayıt için Toplam Borç ve Bakiye bilgilerini listeledi ve aynı şehirdeki yeni bir ilçe gruplamasına geçmeden o gruptaki kayıt sayısı (Group Count 2 KADIKÖY) ile grup kayıtlarının Toplam Borç ve Bakiye ara toplamlarını verdi. Sonra yine Şehir bilgisi İstanbul olan farklı Adres2 bilgisine sahip kayıtları aradı. Bulduğunda yeni bilgiye sahip kayıt olup olmadığına bakıp varsa gruba dahil etti, yoksa grup toplamını alıp kayıt sayısını vererek Şehir bilgisi İstanbul olan kayıt kalmayana kadar devam etti. Son İstanbul grubunun dökümü tamamlanınca, toplam İstanbul kayıtları sayısı ile İstanbul için Toplam Borç, Bakiye ara toplamlarını verdi ve bir sonraki Şehir için aynı işlemleri yaptı. Son kayıt gruplarını verdikten sonra da genel toplam aldı ve dosyadaki tüm kayıtların sayını verdi.
Rapor ayrıntılarını istemez de özet bir döküm isterseniz, komutun başlangıcına "Summarize" operatörü eklenir:
SUMMARIZE REPORT SUM Toplam Borç,Bakiye COUNT GROUP Şehir SUM Toplam Borç.Bakiye GROUP Adres2 SUM Toplam Borç,Bakiye COUNT
Komutu bu şekilde değiştirdiğinizde, gruptaki bilgiler tek tek dökülmeyecek, sadece gruptaki kayıtların sayısı ve grup toplamı verilecektir. Deneyin....
Raporda toplam ve aratoplam alanlarında çıkan sonuç alanın tanımlanan formatından büyükse, taşma olur. Örneğin nümerik alan tanımı 999.00 olarak tanımlanmışsa, değer 999'u aşamaz. Sonuç bu sayıdan büyükse, alana ###.## yazılır. Bu hata oluştuğunda, Dosya tanımındaki alan formatını (Project Edit) değiştirmeniz gerekir.
Query Filter: Query Tanımlama Diyalog penceresinde Report satırının altındaki "FILTER" düğmesi, normal filtre kullanımı gibidir. Dosya kayıtları arasında sadece belirli bir şarta uyanları rapora dahil etmek için kullanılır. Bu satıra herhangi bir koşul girilmezse, dosyadaki tüm kayıtlar rapora dahil edilir.
Raporunuza bir filtre yerleştirmek için Filter kutusunu kliklediğinizde, ekrana filtreleme diyalog penceresi (Query Filter) açılır. Bu pencereyi komut panelinde kullandığımız pencereden hatırlayacaksınız.
İki pencere arasındaki fark, alan isimleri panelinin üstündeki dosya ismi kutusudur. Aslında bu fark query'de kullanılan tüm pencereler için geçerli, zira biliyorsunuz query'de bir sürü dosya arasında ilişki kurabiliyoruz. Bunun dışında Query Filter da diğer filtreler gibi çalışır; alan ismi kliklenir, operatör seçilir ve sonra şart değer kutusuna yazılır veya başka bir alan seçilir. Birden fazla dosya ile çalışma yapılıyorsa, filtre komut satırında farklı dosya alanları kullanılarak da filtre oluşturulabilir. Her zamanki kuralımız yine geçerli: Kullanılacak dosyalar açık olmalı. İstenen filtre bu pencerede belirtildikten sonra, OK ile pencereden çıkıldığında query tanımlama penceresindeki Filter satırına otomatik olarak aktarılır. Query Filter Komut Satırı Kuralları: KURAL 1: Herhangi iki dosyayı birbirine bağlarken kullanılan alanların dosyalardaki kayıt tanımlamalarında uyumluluk olmalıdır. Alan isimlerinin aynı olması gerekmez. Alan isimlerinin de aynı olduğu durumlarda da herhangi bir sorun çıkmaz; zira Superbase seçilen alanın sonuna alanın seçildiği dosya ismini otomatik olarak ekler. Alanlara girilen bilgiler dosyalarda aynı olmalıdır ki anlamlı çıktılar alınabilsin. Örneğin iki dosya arasında numara sırasına göre bir bağlantı kuruluyorsa, her iki dosyada aynı numarada adres ise aynı kişi, stok ise aynı mal vs. bulunmalıdır.
MÜŞTERİ NO.ALACAKLAR = MÜŞ- TERİ NO.ADRESLER
KURAL 2: Dosyaları bağlarken OR operatörü kesinlikle kullanılmaz.
SIRA NO.Adresler = MÜŞTERİ NO.- MÜŞTERİLER OR SIRA NO.Adresler = REFERANS.MÜŞTERİLER
Böyle bir filtre satırı mümkün değildir.
KURAL 3: Dosyaları bağlamada kullanılacak alanlar arasına EŞİTTİR işareti konularak belirtilir.
KURAL 4: Bağlanacak dosya ifadelerinin tamamı filtre komut satırının başlangıcına yerleştirilir.
KURAL 5: Komut satırında bir OR ifadesi kullanmak istiyorsanız, parantezler içine almalısınız:
(STOK KODU = "Kalem 001" OR STOK KODU = "Kalem 01")
KURAL 6: Filtre ifadeleri öncelik derecesine göre yüksekten alçağa doğru sıralanmalıdırlar.
SIRA NO.Adresler = REF NO.Stoklar AND Şehir LIKE "İstanbul" AND Miktar = 1000 And (Bakiye => 500000 OR Baki- ye <= 10000000)
Query Order:
Diğer bir Query seçeneği olan ORDER, query çıktısının sıralanış koşulunu tespit etmek için kullanılır. Herhangi bir düzen verilmezse, Superbase kayıtları disketten okuduğu sıraya göre dökecektir ve bu durumda çıkışta alfabetik veya indexli sıra olmaması problemi olacaktır. Bunu çözmenin en kolay yolu da query order ile sıralanış kuralını koymaktır. Hatta bu yolla yaratılan yeni bir database dosyası işlem hızını oldukça artırır.
Dosya için herhangi bir index tanımlanmayacaksa, Order satırı boş bırakılır. Yeni bir index tanımlanacağı zaman ise, Order kutusu kliklenerek Query Order diyalog penceresinden istenen sıralama alanları burada belirtilir.
Query Order diyalog penceresi, sıralanacak bir dosyadan alanlar seçmenize ve bu alan bilgilerinin büyükten küçüğe mi, yoksa küçükten büyüğe mi sıralanacağını belirlemenize izin verir.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 43
Query Order penceresinde, açık olan dosyaların herhangi birinden sıralama alanını seçebilirsiniz. İsterseniz işlem adımlarını sıralayalım:
1. Alan ismini klikleyin. 2. Büyükten küçüğe sıralama için "Descending", küçükten büyüğe sıralama için
"Ascending" kutularından birini seçin.
3. Gerekiyorsa diğer alanlar için tekrarlayın.
Sıralama için tanımlı uzunluk her alan için 15 karakterdir. Harfin büyük ya da küçük olması arasında bir değişiklik yoktur. Penceredeki Length kutusu ile tanımlı uzunluğu değiştirebilirsiniz.
Query order için boş belleğe sahip olmanız gerekir. Çünkü Superbase kayıtları okuyarak istenen tanıma uygun olarak sıralayacak belleğe ihtiyaç duyacaktır.
Sıralama alanını tek dosyadan seçtiyseniz işiniz kolay, Superbase dosyanın kendisini etkilemeden işlemi yapacaktır. Sıralama için sadece bir tek index belirttiyseniz, Superbase datayı bulduğu anda listeler. Ancak birçok dosya içeren bir Order belirlediyseniz, Superbase'in query çıktısı üretmeden önce geçici bir dosya yaratması için beklemeniz gerekebilir. Geçici dosyalar "sb.tmp" ve "sb.srt" isimleri ile belirtilir. Bu nedenle program bir süre kendi işi için çalışır ve tanımlamalara uygun olarak dataları yeni dosya içine yerleştirir. Sonra da ürettiği çıktıyı listeler.
Query Order ayarlaması bittikten sonra, OK düğmesi kliklenerek çıkıldığında, komut satırı query tanımlama penceresindeki Order satırına yazılacaktır.
QUERY ÇIKTISININ
HEDEFLERİ
Query tanımlama diyalog penceresinin altında bulunan 3 çıkış hedefi kutusundan söz etmiştik. Diğer taraftaki üç çıkış kutusundan OK hedefi doğrudan ekran olarak seçer ve kayıtları ekrana listeler. Diğer kutular ise şunlar:
Print: Çıkışı doğrudan printer'a gönderir.
Disk: Query çıktısını içeren bir ASCII disket dosyası yaratır, bu dosya herhangi bir text programından yüklenebilir, editlenebilir ve yazıcıdan döktürülebilir. Disk'i seçtiğinizde, Superbase dosyayı kaydetmek için sizden isim sorar.
File: Query Fields satırında belirtilen alanlar ve/veya formüllerden meydana gelen bir dosya tanımı ile ".sbf" uzantılı yeni bir Superbase dosyası yaratır. Yeni dosya, orijinal dosyanın ilk alan bilgisine göre indexlenir. Çıkış için bir index alanı seçilmemişse, çıkıştaki ilk alan seçilir. Superbase query'deki hiçbir format ve rapor elemanını dikkate almaz. Türemiş kolonlara yeni alanlar olarak bakılır, ancak mutlaka Heading ile geçerli alan isimleri vermelisiniz. File kutusuna kliklediğinizde, Superbase size yeni dosya ismini sorar.
Bu aylık da bu kadar. Gelecek ay görüşmek üzere, hoşçakalın.....