Makale Özeti

Axapta içindeki nesnelerden bir taneside Report nesnesidir. Report nesnesi sayesinde, Axapta içerisinde rapor almayı sağlayan uygulamalar gerçekleştirilebilir. Report nesnesi rapor alımı için özel olarak tasarlandığından dolayı, kullanımı kolay ve kendine has özellikleri olan bir nesnedir. Axapta üzerinde tutulan tüm bilgiler report nesnesi aracılığı ile ekrana, yazıcıya, mail olarak gösterilebilir.

Makale

AXAPTA – 11

RAPOR OLUŞTURULMASI

Axapta içindeki nesnelerden bir taneside Report nesnesidir. Report nesnesi sayesinde, Axapta içerisinde rapor almayı sağlayan uygulamalar gerçekleştirilebilir. Report nesnesi rapor alımı için özel olarak tasarlandığından dolayı, kullanımı kolay ve kendine has özellikleri olan bir nesnedir. Axapta üzerinde tutulan tüm bilgiler report nesnesi aracılığı ile ekrana, yazıcıya, mail olarak gösterilebilir.

Yeni bir rapor oluşturmak için AOT üzerinde, Reports sekmesi üzerindeyken sağ tuş New Report ile yeni bir rapor oluşturabiliriz. Rapor üzerindeki her sekmeyi ve özelliklerini anlatalım.

Report nesnesini ilk oluşturduğunuz zaman, güncelleyebileceğimiz Methods, DataSources ve Design bölümleri açılır.

Methods:

         Varsayılan olarak, report nesnesinin tüm bölümlerinden kullanılabilecek değişkenlerin tanımlanabileceği ClassDeclaration metodu açılır. Bu metot içerisinde sadece global olarak kullanabileceğiniz değişkenleri tanımlayabilirsiniz. Burada aynı zamanda üzerine yazılabilir metotlar veya global olarak kullanabileceğiniz kişisel metotlarınızı yazabilirsiniz. Üzerine yazılabilir metot olarak kullanabileceklerinizden bazıları:

         Init: Rapor ilk çalıştırıldığı anda yapılmasını istediğiniz işlemlerin kodlarını buraya yazabilirsiniz. Init, her raporda varsayılan olarak çıkan diyaloglar çıkmadan önce çalışır.

         Prompt: Her rapor çalıştırıldığında, eğer veri kaynaklarına ait kriter / kriterler girilecekse bu bilgiler tanımlandıkdan sonra raporun ekrana, yazıcıya, mail olarak veya belirtilen bir dosya tipi olarak gösterilip / gösterilmeyeceği konusunda bir diyalog açılır. Eğer bu diyaloğu kullanıcıya göstermek istemezseniz, bu metodu kullanabilirsiniz. Bu metodun super()’ini çağırmazsanız, ilgili diyalog görünmeyecektir. Bir raporu ASCII, PDF, RTF, HTML dosya formatı olarak kaydedebilirsiniz.

         Run: Bütün diyaloglar, rapor tasarımı çalıştıkdan sonra burası aktif olur.

         Fetch: Veri kaynaklarında tanımlanmış olan tabloların bilgileri alınıp, rapora gönderilir. Varsayılan olarak zaten Axapta bu işlemi gerçekleştirmektedir. Ancak veri alıp – gönderimi sırasında özel olarak bir kod yazmak, kontrol yapmak isterseniz bu metot aracılığı ile bunu gerçekleştirebilirsiniz.

         Send: Veri kaynaklarından alınan, eğer varsa fetch metodundan gelen kayıtları rapora gönderir. Send sadece okunan kayıtları raporun görsel bölümüne gönderir. Bu gönderim sırasında bazı kontroller veya kendinize özel uygulamalar yazacaksanız burayı kullanabilirsiniz.

DataSources:

         Rapor üzerinde kullanılacak olan tabloların burada veri kaynağı / kaynakları olarak tanımlamaları yapılır. Varsayılan olarak gelen DataSources sekmesinin altında, Query sekmesi, bunu altında ise ikinci bir DataSources sekmesi gelir. Query sekmesi raporun komple tüm sorgusunu temsil eder. Kod içerisinden buradan tanımlanan sorguya Query bilgisi ile ulaşabiliriz.

         Query’nin özellikleri;

         Name: Sorgunun adı tanımlanır.

         Title: Sorgunun görünüm adı tanımlanır.

         UserUpdate: Veri kaynakları tanımlarındaki kriterlere kullanıcılar giriş yapabilir. Varsayılan olarak Yes gelmektedir.

         Interactive: Veri kaynaklarına rapor alımı sırasında kullanıcılar başka sahaları kriter girişi için açabilir veya rapor alımı sırasında başka bir veri kaynağı sorguya ekleyebilir. Bu özellik varsayılan olarak Yes gelmektedir. Bu özellikliği kaldırmak isterseniz No olarak güncellemeniz gerekmektedir.

DataSources sekmesi üzerindeyken sağ tuş ile New DataSource deyip yeni bir veya daha fazla veri kaynağı oluşturabilirsiniz. Eğer birden fazla veri kaynağı oluşturursanız bu kaynaklar birbirleri ile arasında ilişkili olabilir veya ilişkisiz olabilir.

Yeni bir DataSource’un özellikleri:

         OrderMode: Varsayılan olarak bu seçenek Order by modunda gelir. Bu seçenek ile, DataSource’un Sorting sekmesinde tanımladığınız sahaya göre sıralama gerçekleştirir. Eğer Group By seçeneğini kullanırsanız, yine Sorting sekmesindeki vermiş olduğunuz sahaya göre gruplama gerçekleştirir.

Sorguları bu şekilde görsel arayüzden güncelleyebileceğiniz gibi, kod içerisinden de güncelleme yapabilirsiniz. Bu konu ayrı bir yazıda ayrıntılı olarak anlatılacaktır.

DataSource altındaki sekmeler;

Fields: Bu veri kaynağında gösterdiğiniz tablonun tüm sahalarını Field sekmesinde görebilirsiniz. Otomatik olarak tablo adını verdiğiniz zaman burası güncellenir.

Sorting: Veri kaynağındaki bilgilerin hangi sahaya göre sıralı olacağını burada belirleyebiliriz. Eğer veri kaynağını Group By olarak belirlerseniz, burada vereceğiniz saha isimlerine göre gruplama yapar. Yeni eklenilen sıralama sahasının özellikleri;

         Field: Hangi sahaya göre sıralama yapılabileceği bilgisi.

         Ordering: A-Z veya Z-A sıralaması tanımlanır.

         AutoHeader: Bu sahanın bulunduğu tablonun bilgileri ekrana basıldığı anda, bu sahanın başlık olarak atılıp – atılmayacağı bilgisi tanımlanabilir. Varsayılan olarak No gelmektedir.

         AutoSum: Bu sahanın bulunduğu tablonun bilgileri ekrana basıldığı anda, bu saha sayısal ise, son bilgi olarak ekrana basılıp - basılmayacağı bilgisi tanımlanabilir. Varsayılan olarak No gelmektedir.

Ranges: Veri kaynakları üzerinde kriterler vermek istediğinizde burada tanımlayabilirsiniz. İsterseiz bu kriterlerin değerlerini kullanıcıya verdirebilir, istersenizde kendiniz varsayılan olarak rapora gömebilirsiniz. Range sekmesi üzerindeyken sağ tuş Yeni Range seçeneği ile yeni bir kriter eklemesi yapabilirsiniz. Range olarak verilen sahaların değiştirilebilir özellikleri;

Field: İlgili tablonun hangi sahasının kriter olarak tanımlanacağı bilgisi tanımlanır.

Value: Bu kriterin rapor çalıştırıldığı anda varsayılan olarak alacağı değer tanımlabilir.

Status: Kriterin nasıl bir amaca yönelik kullanılacağına göre buradaki seçeneklerden biri tanımlanır. Seçenekler;

         Open: Kriter açık olur, istenildiği gibi bilgiler girilebilir.

         Lock: Kriter kilitli olur. Kullanıcı böyle bir kriter olduğunu görür ancak müdahele edemez.

         Hide: Kriter gizlenir, kullanıcı bu saha ile ilgili hiçbir bilgiye sahip olmaz.

DataSources: Veri kaynağına bağlı başka bir veri kaynağı tanımlamak istediğinizde aynı şekilde burayı kullanabilirsiniz. Üst bir veri kaynağına sahip olan bir kaynağının ek olarak sahip olduğu özellikler vardır. Bunlar;

FetchMode: 1:n veya 1:1 olarak ilişki seçimi yapılabilir.

JoinMode: İki veri kaynağı arasındaki ilişki tipini InnerJoin, OutherJoin, ExistsJoin, NoExistsJoin olarak tanımlayabilirsiniz.

Relation: Tanımladığınız veri kaynağı üzerinde başka bir veri kaynağı tanımlanmış ise ve DataSource’un Relations özelliği Yes olarak belirtilmişse, iki tablo arasında ilişkiler burada otomatik olarak tanımlanır. Eğer isterseniz iki tablo arasındaki ilişkiyi manuel olarakda buradan tanımlayabilirsiniz.

Methods: Veri kaynaklarına özel kodlar yazmak istediğimizde buradaki üzerine yazılabilir metotları kullanabileceğimiz gibi, özel olarak kendi metotlarımızıda ihtiyaca yönelik kodlar için geliştirebiliriz.

Design:

         Rapor üzerinde tanımlanacak olan tasarımsal işlemlerin tanımları bu sekme üzerinde tanımlanır. Design sekmesi üzerinde sağ tuş ile New Report Design’ı seçtiğimiz zaman, tasarım yapılacak ortam açılır.

Bu tasarımda belirleyebileceğimiz özellikler:

AutoDeclaration: Varsayılan olarak No gelir. Yes olarak belirlerseniz, kod içerisinden rapor tasarımına erişim sağlayabilirsiniz.

         Caption: Raporun başlığı bilgisi buradan verilebilir. Boş bırakırsanız, raporun nesne adı olarak bu değeri alır.

         Description: Raporun tanımı buraya verilebilir.

         Ruler: Rapor tasarımında kullanacağınız birim bilgisi verilebilir. Char, cm ve inch olarak tanımlayabilirsiniz.

         ReportTemplate: Raporun tasarım olarak nasıl bir template altında olacağı bilgisi verilebilir.

         Font: Rapor üzerindeki text bilgilerin hangi font’da olacağı bilgisi verilebilir.

         FontSize: Rapor üzerindeki text bilgilerin büyüklüğü bilgisi verilebilir.

         Italic: Rapor üzerindeki text bilgiler eğik olarak görüntülenebilir.

         Underline: Rapor üzerindeki text bilgiler altı çizgili olarak görüntülenebilir.

         Bold: Rapor üzerindeki text bilgiler kalın olarak görüntülenebilir.

         Orientation: Raporun dikey veya yatay olarak çıkmasını sağlar. Varsayılan olarak auto gelir ve buda ekrandaki bilgilerin genişliklerine göre Axapta’nın otomatik olarak ayarlanmasını sağlar.

         Ayrıca, görsel tanımlar için margin, color gibi özelliklerle tanımlamalar yapılabilir.

Ayrıca ReportDesign üzerindeyken yazıcı tanımlamalarınıda sabitleyebiliriz. Hangi yazıcıda, hangi kağıt boyunda işlem yapılacaksa onu tanımlayabiliriz.

Rapor tasarımını ilk oluşturduğunuz anda, AutoDesignSpecs isimli rapor tasarımını yapabileceğimiz ortam otomatik olarak, veri kaynaklarına göre tanımlanmış şekilde gelir. Eğer bu ortamda rapor tasarımı yapmak istemezseniz, ReportDesign üzerindeyken sağ tuş ile Tasarım Oluştur dediğimiz zaman GenerateDesign isimli bir rapor tasarım bölümü açılır. Bu ikisinde de rapor tasarımı, raporda görünecek sahaların tanımlanması gibi işlemler gerçekleştirilir. Bu ikiside temelde aynı amaca hizmet etsede aralarında farklılıklar mevcuttur. Bu farklılıklar daha sonra anlatılacaktır. Eğer GenerateDesign oluşturursanız, AutoDesignSpecs’deki tanımlar geçersiz olur. Örneğimiz GenerateDesign üzerinde yapılacaktır. Generate Design üzerinde, çıktı olarak gösterilecek bilgiler bazı bölümlere ayrılır.

Bu bölümleri Generate Design üzerinde sağ tuş ile yeni bölümünden oluşturabiliriz. Bu bölümler;

         Prolog: Rapor ilk çalıştığında bu bölümde belirtilen tasarımlar görünür. Burası tek başına bir bölümdür.

         Page Header: Prolog ve Epilog dışındaki raporun her sayfasının başlığında görünecek bilgileri burada tanımlayabiliriz.

         Sections: Rapor sayfalarının gövdesini oluşturacak bölümler burada tanımlanır.

         Page Footer: Prolog ve Epilog dışındaki raporun her sayfasının sonunda görünecek bilgileri burada tanımlayabiliriz.

         Epilog: Rapor çalışması sonlandığında bu bölümde belirtilen tasarımlar görünür. Burası tek başına bir bölümdür.

         Header: Sadece raporun ilk sayfasının başlığında görünecek bilgiler için kullanılabilir.

         Footer: Sadece raporun son sayfasının sonunda görünecek bilgiler için kullanılabilir.

Her bir bölüm grubu(section)’da kendine has footer ve header’a sahiptir. Böylelikle, görünüm olarak sayfanın sonu yada başı olmasa bile her bir bölüm grubuna ait başlık ve sonuç bölümü oluşturabilirim.

Generate Design’ı oluşturduğunuz anda, sistem otomatik olarak veri kaynağında yaptığınız tanımlara göre bölümleri oluşturur. Eğer isterseniz bu otomatik tanımları silip kendinizde tanımları manuel olarak oluşturabilirsiniz.

Her bölüm grubunun kendine ait üzerine yazılabilir metodu olduğu gibi, bölüme özel kullanılacak kişisel metotlarımızıda yazabiliriz. Her bölüm grubunda yazılabilecek metot;

         ExecuteSection: Rapora basım için her bölüme geldiği anda bu metot aktif hale gelir. Örneğin, bölüme bir kayıt göndereceğiniz zaman, bazı kontrollerden geçirmek veya uygulamalar yazmak istediğinizde burayı kullanabilirsiniz. Her bölüm super() çağrıldığında aktif olur.

Her bölüm grubu bir table ile tanımlanmalıdır. Bunu cursor olarak düşünebiliriz. DataSource’da tanımladığımız tablo / tabloları kullanabileceğimiz gibi, DataSource’da olmayan bir tablo ile ihtiyaca yönelik yeni bir bölüm grubu açabilriz.

Bölüm grupların temel özellikleri:

Section Group’ların nitelikleri;

         Name: Section Group’un adı bilgisi verilir.

         Table: Section Group’un hangi tablo bazlı çalışacağı bilgisi verilir.

         DataField: Table özelliğinde verilen tablonun herhangi bir sahası bazlı tanıtım yapılmak istenirse bu bilgi verilir.

Body, Header, Footer gibi bölümlerin kendine has özellikleri olsa bile genel anlamda benzer özelliklere sahiptir. Bu özelliklerden bazıları;

         Name: Bölümün ismi tanımlanır.

         AutoDeclaration: Bölüme global değişken gibi kod ile ulaşabilmek için bu özellik Yes olarak işaretlenir. Varsayılan olarak No gelir.

         Top: Bölümün üst konum bilgisi verilir.

         Bottom: Bölümün alt konum bilgisi verilir.

         Height: Bölümün yükseklik bilgisi verilir.

         LineAbove: Bölümün üst kısmının basım şekli belirlenebilir.

         LineBelow: Bölümün alt kısmının basım şekli belirlenebilir.

         LineLeft: Bölümün sol kısmının basım şekli belirlenebilir.

         LineRigth: Bölümün sağ kısmının basım şekli belirlenebilir.

         Font: Bölümün font bilgisi verilir.

         FontSize: Bölümün font büyüklük bilgisi verilir.

         Italic: Bölümün sağa yatık bilgisi verilir.

         Bold: Bölümün koyu bilgisi verilir.

         Underline: Bölümün altı çizili bilgisi verilir.

        

Basit olarak sipariş ve satırlarını gösteren bir raporun yapısı aşağıdaki gibi olacaktır;

Basit anlamıyla rapor nesnesi yapısı bu şekildedir.

Yeliz Korkmaz, MVP

yelizkorkmaz@tnn.net