Orkestra görsel rapor aracını kullanırken, bazı durumlarda değişken tanımlamak durumunda kalabilirsiniz. Değişkenleri neye göre ve nasıl tanımlamamız gerektiğini bu başlıkta inceleyeceğiz.
Bilinmesi gereken ilk kural: Hesaplama kodu alanında yazacağımız komutlar, HER ZAMAN return komutu ile başlar. return, kelime anlamı olarak "dönmek" demektir. Buradaki dönmekten kasıt Hesaplama Kodu alanına yazdığımız bir kodun yukarıda seçtiğimiz tipi bölümündeki tipe döndürülmesi işlemidir. Yazdığımız kod bittiğinde, ";" işareti ile Orkestraya döndürülecek verinin bu kadar olduğunu söylüyoruz ve kodumuz şu şekilde görünüyor.
return En çok kullanılan komut olup kullanılıp kullanılmadığı durumlar şu şekildedir;
Örneğin Rapor olayında, Detay Basılmadan Önce bölümüne bir betik yazıyorsak, program bizden bir şey beklememektedir. Dolayısıyla bu durumda return yazmak gerekmemektedir. Fakat diyelim ki bir Metin attık ve üzerine betik bağlantısı yaptık. Bu durumda program bizden bu Metin içerisindeki betiği gösterebilmek için birtakım beklentiler içerisinde olacaktır. Program ne yazacağına kendisi karar verememektedir.
Tanımlama işlemi yaparken aşağıdaki listeye uygun şekilde tanımlama yapılmalıdır.
Öncelikle yeni bir rapor açıyoruz ve Nesne Özellikleri altındaki Kullanıcı değişkenleri bölümüne gelip yanında bulunan üç nokta simgesine tıklıyoruz (Bk. [ Şekil 1 ]). Henüz değişken tanımlamadığımız için Rapor Kullanıcı Değişkenleri listesi boş görünüyor. Sağ tarafından Yeni Tuşuna tıklıyoruz ve Değişken tanımlama ekranı karşımıza geliyor. Adı ve Açıklama bölümlerini doldurduktan sonra Tipi bölümüne geliyoruz.
Metin
Orkestra içerisinde herhangi bir değişime uğramadan, sadece yazıldığı karakter ne ise onu gösteren bölümler için kullanılır. Örneğin fatura başlıkları gibi sabit karakterli değişmeyen bölümler hep Metindir. (Bk. [ Şekil 2 ])
Metin Tipi kullanılırken yazacağımız komutlar her zaman çift tırnak içerisinde kalmalıdır. Örneğin Orkestra yazdırmak istiyorsak; return "Orkestra"; yazmamız yeterlidir. Daha sonra bu değişkeni kullanmak için seçtiğimizde, koyulduğu yerde Orkestra yazısı basılacaktır.
Derle
Orkestra komut ekranlarında yazdığınız kodlar her zaman kontrol edilir. Hatalı yazdığınız kodları kaydetmenize izin vermez. Kaydetmeyi denemeden önce, [ Şekil 3 ]'de görünen Derle tuşuna basmak, kodun doğru veya yanlış gittiğini bize söylemektedir. Bastığımızda hata vermiyorsa her şey yolundadır. [ Şekil 3 ]'de görüldüğü gibi hata veriyorsa yolunda gitmeyen bir durum olduğu aşikardır. Burada verdiği hatanın sebebi Orkestra yazsını çift tırnak içerisinde almamış olmamızdır. "Orkestra şeklinde değil "Orkestra" şeklinde yazmamız gerekirdi (Bk.[ Şekil 4 ]).
[ Şekil 4 ]'te görüldüğü üzere çift tırnak içerisinde aldığımızda rengi siyahtan mor'a dönüyor ve hata vermiyor.
Tam Sayı / int
Oluşturmak istediğiniz değişkeni hiç bir Cast(Tip dönüştürme) işlemi yapmadan kullanmak istiyorsanız, orkestra size bu konuda da yardımcı olacaktır. Değişken Tipi olarak Tam sayı seçiyoruz ve Hesaplama Kodu bölümüne return yazarak başlıyoruz. Seçeneğimiz bir Alan olacak dolayısıyla $F{ ile başlamalı. $F{ yazdıktan sonra Ctrl+Space Kısayoluna başvuruyoruz (Bk.[ Şekil 5 ]). ve Orkestra bize seçebileceğimiz alanları gösteriyor. Burada dikkat etmemiz gereken nokta, Seçeceğimiz alanın seçtiğimiz tip için uygun olmasıdır. Tam sayı üzerinde işlem yapacağımız için tipimiz int olacaktır.
Not: Tam Sayı değişkeni -2 milyar ile + 2 milyar arasındaki sayıları gösterebilir. Toplam gösterebileceği farklı değer sayısı 4 milyar adettir.
Örnek için biz voucherType - Fatura Türü'nü seçeceğiz. Fatura türü alanını rapor üzerine direk $F{voucherType} olarak koyabilirdik fakat örnek olması adına şu an bu işlemi yapacağız.
[ Şekil 6 ] da seçtiğimiz bir alanın alacağı değerler görüntülenmektedir. Temel olarak bizim şu an yapacağımız işlem, Fatura türünün Metin kısmı yerine Değer kısmını ekrana bastırmak olacaktır.
Not: [ Şekil 6 ]'daki değer ekranını görmek için görmek istediğiniz alanı seçiniz ve ileri tuşuna basınız. Gelen ekranda Değer listesini görüntüle seçeneğini seçiniz.
Tanımladığımız Tamsayı tipindeki Fatura Türü değişkenini ve Fatura Türünün varsayılan halini Veri/Detay bandına ekledik. Bu durumda $F ile başlayan voucherType Metin halde bilgi verecekken, buna karşılık $V{tamsayi} sonucu Tamsayı cinsinden ilgili bölümlerin sayısal değerlerini gösterecektir.
Raporu çalıştırdığımızda [ Şekil 8 ]'deki görüntü karşımıza geliyor. Görüldüğü üzere aynı Fatura için hem Metin değeri, hem de o Metinin [ Şekil 6 ] da görüntülenen sayısal değeri görüntülenmektedir.
Uzun Tamsayı / long
Uzun tamsayılar, Tam sayı ile aynı özellikleri taşır gözle görülür tek farkı, Tam sayı 4 Milyar farklı değer alabilirken, Uzun Tam sayı -2⁶³ ile +2⁶³ arasında değer alabilir. Dolayısıyla Çok daha büyük değerler lazım olduğunda Long kullanmak akıllıca olacaktır. Fakat bu sayılar hala tam sayıdır ve ondalık kısımları olmaz. Long kullanmaya genelde pek ihtiyaç olmamakla birlikte tam sayı kullanacağımız zamanlarda genel olarak int yeterli olmaktadır.
Büyük Ondalık Sayı vs Ondalık Sayı / BigDecimal vs double
Ondalık sayı (double) ve Büyük Ondalık sayı (Bigdecimal) birbirlerine benzer görünseler de ciddi farkları vardır. Ondalık sayı ile toplama çıkarma çarpma gibi cebirsel işlemler yaptığınızda, virgülden sonraki haneleri çok uzun hanelere kadar dahil ettiği için milyonda ve hatta milyarda bir miktarında sapmalar olabilir. Çok net ve kesin bir veriyi 0.00000000001 gibi bir hassaslıkla ölçmek istiyorsanız Ondalık (double) kullanılabilir. Fakat ürün toplamları, fiyat toplamları vs. gibi virgülden sonra çok uzun olmayan işlemler için BigDecimal(Büyük Ondalık Sayı) kullanmalıyız.
[ Şekil 9 ]'da BigDecimal tanımlamanın nasıl yapılacağı gösterilmektedir. Burada isterseniz "MathUtil" fonksiyonunu kullanarak matematiksel işlemler de yapabilirsiniz.
Bu kodu yazdığımızda sonuç olarak bize 1/7 değerini gösterecektir.
Mantıksal Değişken
Mantıksal değişken sadece Evet/Hayır - Doğru/Yanlış gibi cevaplar verir. Arada kalan cevaplar Mantıksal Değişkende yoktur. Örneğin Satırdaki verileri bastır veya bastırma diyebiliriz. Yazacağımız algoritmaya göre şu durumlarda bastır bu durumlarda bastırma diyebiliriz. Fakat, "belki bastır" gibi cevaplar alamayız. Genellikle verdiğimiz örnekte olduğu gibi, rapordaki bantların gösterilip gösterilmeyeceği hakkında özel durumlar tanımlamak istersek kullanılmaktadır.
[ Şekil 10 ]'da görüntülendiği gibi, en basit haldeki kullanım şekli return true; veya return false; olarak kullanmaktır.
Not: true dediğimizde işlemi gerçekleştir, false dediğimizde işlemi gerçekleştirme demiş oluruz.
OBJECT
Object Komutu nesne demektir ve genel bir değer alabilir.
Yukarıda cari ve adres olarak tanımladığımız verileri daha sonra aşağıda cari. Olarak yazarsak sanki $F{party.} yazmışız gibi party. Dan sonra Ctrl+Space komutunu kullandığımızda gelecek bağlantıların önümüze geldiğini görürüz. Aynı şekilde Adres içinde adres. Yazdığımızda sanki $F{party.contactInfo.primaryAddress.} yazmışız gibi tüm eklenebilecek bağlantıları önümüze getirecektir (Bk. [ Şekil 11 ]).
Object komutu neredeyse her yerde kullanılabilir ve kullanım şekli her yerde aynıdır.