Not : Bu yazıyı sitemiz için hazırlayan Serdar Büyüktemiz arkadaşımıza teşekkür ederiz.
Bu yazıda Crystal Reports’un 2008 versiyonu ile bir örnek yaparak temel seviyede raporlama işlemlerini öğreneceğiz.
Bu adresten crystal reports 2008 deneme sürümünü indirebilirsiniz.
Ayrıca makalemizde ele aldığımız örneği buradan indirebilirsiniz.
İlk Ayarlar
Kurulum sonrası şu ayarları yapmanızı tavsiye ederim. Bu kısımda göze kolayca çarpamayacak ama mutlaka ne şekilde seçili olduğunu bilmemiz gereken seçeneklere değineceğiz. Örneğin veri tabanınızdaki tablolarınızda boşluk girilen veya NULL olan değerler arasında bir fark vardır. Bu fark raporda karşımıza gelen sonuçları etkiler.
Tablonuza bir kayıt girerken, kayıt eklendiği anda satırdaki veriler NULL olur. Siz o hücreye ilk girdiğinizde değer boşluk olur, bir şey yazmazda hücreden çıkarsanız. Değer boştur ama NULL değildir.
File > Options > Reporting sekmesinde yada bir rapor açıkken File > Reporting Options sekmesinde bu 2 farklı değeri nasıl değerlendirmek istediğimizi işaretleyebiliriz.
Eğer Convert Database NULL Values to Default seçili ise NULL olan alanlarıda sonuçlarınızda görürüsünüz. Hem boşluk hemde NULL olan alanlar aynı şekilde değerlendirilsin istiyorsanız iki seçeneği de seçmelisiniz.
Raporu kaydederken veri ile birlikte kaydetmek sizin için gerekli değilse yerden kazanmak için Save Data With Reports seçim kutusunu boş bırakabilirsiniz.
Bu ekrandaki en önemli ipucu da Auto Save Reports After olsa gerek :) Crystal Reports canı sıkıldıkça kitlenen bir programdır. Gerçi CR XI Release 2 daha az kitleniyor sanırım ama hiç kitlenmiyor değil! Siz işi sağlama alıp 3 dakikada bir otomatik kaydedin yaptıklarınızı. Bu durum bütün uygulamalar için geçerli sayılabilir. Siz Önce Kaydedin, Sonra Sık Sık Kaydedin Hatta Otomatik de Kaydedin
Raporlarınızı oluşturmaya başlamadan önce biçim standardınızı crystal reportsa tanımlamanız gerekmektedir. Kurulumda Arial default font’tur. Siz raporlarınızda Tahoma kullanmak istiyorsanız bunu kurulum sonrası ilk iş olarak File > Options > Fonts Sekmesinden tanımlayın.
Bu işlemi burdan yapmazsanız raporunuza eklediğiniz her alan, grafik yada crosstab için biçimlendirme yapmanız gerekir. Bu sizin için mühtiş bir zaman kaybıdır. Rapor yapma sürecinde zaman alan şey zaten biçinlendirme yapmaktır.
Rapor; bir veritabanındaki verilerin belirli bir kritere göre özetlenmesi, görsel öğelerle desteklenerek görüntülenmesi olarak açıklanabilir. Raporlanacak olan veri sql serverda yada herhangi başka bir veri tabanında saklanabileceği gibi excel, access gibi bir uygulamada da tutulabilir. Biz şimdi bir Excel örneği yapacağız. Makaleyi okurken bir yandan da uygulayacağınız düşünülüp hazırlanmıştır.
Araç çubuğundaki kısa yoldan yada menü yardımı ile boş bir rapor oluşturma sihirbazını başlattığınızda, ilk adım data kaynağı belirleme işlemidir. Açılan ekranda Create New Connection ağaç menüsüne tıkladığınızda bağlanabileceğiniz bütün veri tabanlarını görebilirsiniz. Bağlanmak istediğimiz türü (Excel veya ole db (sql server)) burdan seçeceğiz.
Excel'e Bağlanmak
data.xls dosyasını kullanarak bir örnek rapor hazırlayalım. Başlamadan önce şunu söyleyeyim ofis programı kurulu olmasada xls dosyası ile crystal kullanarak rapor oluşturabilirsiniz. Belki bir gün lazım olur. :)
data.xls dosyasını da kısaca tanımış olalım. Bir bilgisayar toptancısının verileri olarak düşünebiliriz. Ürünün adı markası hangi bölgede kaç adet satıldığı gibi bilgileri tutuyor.
İşlemleri numaralarlandıralım, bu sayede biraz daha rahat yapabiliriz.

- File > New > Standart Report, Blank Report, Ctrl + N yada standart araç çubuğundaki yeni rapor oluşturma kısayol düğmesine basarak standart rapor oluşturma sihirbazını başlatalım.
- İlk Adımda Raporumuza veri bağlantısı kurucaz. Create New Connection Ağaç menüsünden Access/Excel (DAO) Ağaç menüsünü tıklayalım.
- Bağlantı kurulacak dosyayı ve dosya türünü seçeceğimiz ekrana gelmiş oluruz. Database Name de data.xls yi seçelim. Database type da excel 8.0 olsun. Ve finish’e basalım.
- Şimdi Excel dosyasına oluşturduğumuz bağlantı görünüyor. Excel’in hangi sayfasını kullanmak istiyorsak onu seçip, sağa doğru sürüklüyelim. Yada form ekranınının ortasındaki yön oklarını da kullanabilirdik.
- Sihirbazın sonraki adımında listelemek istediğimiz alanları belirliyoruz. Gözükmesini istediğimiz alanları sağ tarafa sürükleyebiliriz. Ama biz bu aşamayı atlayalım başka bir yöntem kullanarak daha verimli çalışabiliriz. Alanları formula field’a ekleyip formulleri rapora çağırırsak. Her hangi bir değişiklik gerktiğinde daha az uğraşıyoruz.
- Son adımda template uygulamak istersek bir tanesini seçebiliriz. Ama biz kendi biçimimizi kullanmak için bu adımı da atlayalım.
Sihirbazdan sonra rapor preview ekranında görüntülenir. Ctrl + D yaparak Design moda geçelim. Ekranın Sol tarafında; Report Header, Page Header, Details, Report Footer, Page Footer Adında raporun bölümlerinin (Section) adlarını görüyoruz.
- Report Header:Rapor başlığı. Her raporun en başında 1 kez görüntülenir. Rapor kapağı.
- Page Header : Sayfa başlığı.her sayfanın üstünde görüntülenir.
- Details : Detaylar. Alanları gösterebiliriz. Preview de her bir kayıt için bir detay bölümü eklenir.
- Report Footer : Rapor Sonu. Her raporun en sonunda 1 kez görüntülenir.
- Page Footer : Sayfa Sonu. her sayfanın altında görüntülenir. Sayfa Numarası için uygun bir yer.
Field explorer pek çok şeyi kontrol edebileceğimiz bir alandır. Ekranın sağ tarafında görüntülenmiyorsa Menüden View > Field Explorer'a tıklayıp onu gösterelim.
Crosstab Eklemek
Rapora bir crosstab ekleyelim, eklerken de alanları formula field’in içinden çağıralım. Tabi önce formulleri oluşturmalıyız.
- Ekranın sağındaki field explorer’da Formula Fields yazan yerde sağ tık yaparak New komutuna tıklayalım formülümüze rowname adını verip ok’e tıklayalım
- Formula Editör açılacak. Bu ekranda bağlantı kurduğumuz excel dosyasının sayfasını ve ordaki başlıkları bir ağaç menü seklinde görüyoruz. MARKA alanına çift tıklayalım.
- {data_.MARKA} yazısı editörde belirecek. Bu haliyle kaydedip Details’a sürüklersek. Excel dosyamızda marka sütunundaki alanlar sırayla gelir. Ama biz biraz daha fazlasını yapalım girilen markalar ProperCase, UpperCase yada LowerCase olsun istersek crystal reports’un içindeki fonksiyonlardan faydalanabiliriz.
- Markaların ProperCase girilmesini isteyelim. Editörde pro yazıp CTRL + Space yaparsanız ProperCase yazısını editör size tamamlayacaktır. Sizde alan adından önce parantez açıp sonra kapatırsanız bu formülü kaydedip kapatabiliriz. ProperCase({data_.MARKA})
- Benzer şekilde aşağıdaki formülleride oluşturalım.
- ColumnName - ProperCase({data_.BÖLGE})
- DataField - {data_.ADET}*{data_.FİYAT ($)}
- Formula field olarak oluşturduğumuz alanlar sayesinde ilerde bir değişiklik yapmak için sadece gereken alanı değiştiricez, biçimlerini bir kez daha değiştirmemize gerek kalmayacak.
- Eğer formül kullanmadan alanları direk Chart veya Cross-Tab’da kullanırsanız her değişiklikte yaptığınız bütün biçimlendirme, sıralama işlemlerini tekrar yapmanız gerekir.
Raporumuzda kullanacağımız alanları hazırladık. Şimdi de CrossTab ekleyelim.

- Araç çubuğundaki crosstab kısayol düğmesine basalım. Mouse imlecine boş bir Cross-Tab gelir. Report Footer yada Report Header’a tıklarsanız. Eklendiğini görürsünüz. (Page Header, Page Footer yada Details Sectionlarına Cross-Tab ekleyemeyiz.) Şu an boş bir çapraz tablomuz var.
- Üzerinde Sağ tuş yapıp. Cross-Tab Expert'e girelim. Expert’in solunda filed’ları görüyoruz. Eklediğimiz formulalar en üstte. Adlandırırken seçtiğimiz isimler şaşırmamızı engelleyecek (RowName, ColumnName,...) Rows, Columns ve Summarized Fields Alanlarına gerekli formüller sürükleyelim. Yanlız Summarized Fields Alanına 2 tane DataField Sürükleyelim. Birini % göstermek için kullanacağız.
- Sürüklediğimiz ikinci datafield formülünün üstüne tıklayalım biraz aşağıdaki “Change Summary” ‘e tıklayalım. Burada Sum, Average, Count gibi temel işlev değişikliği yapabiliriz. Ama biz “options” kısmından Show as a persantage of seçeneğini tıklayacağız. Buda bize satıra göre % vermiş olacak. Ok’e basıp raporu bir preview edelim.
Şu an önizlediğimizde pek de derli toplu olmayan bir tablo görücez. Tablo sığmamış durumda. Şimdi tabloda bazı biçimsel değişiklikler yapalım. Cross-Tab üzerinde sağ tık yaparak Cross-Tab Expert e tekrar girelim. Customize Style Sekmesinde bazı değişiklikler yapıcaz.
- Show Cell Margins seçeneğini kaldırırsak hücreler arasındaki boşluklar kalkacak ve biraz daha yer kazanmış olacağız.
- Row Total on Left seçeneğini kaldırırsak satır toplamı sağ tarafa gözükecek.
- Column Totals on Top seçeneğini kaldırırsak sütun toplamı alt tarafta gözükecek.
- Summarized Fileds için ayrıca bir etiket göstermek için Show labels'ı seçelim ve % yi değerin yanında göstermek için “Horizantal” ‘ı seçelim.
- Format Grid lines düğmesine tıklayarak da tablonun kenarlık çizgilerini değiştirebilirsiniz.
Tablomuz hala sayfaya tam sığabilmiş değil. Sütun genişliklerini biraz azaltalım.
- Önce % gösteren sütunun etiketine %, diğer değerin etiketine de Tutar yazalım.
- Rakamların olduğu alanların Font boyutunu tahoma 7 yapalım.
- Sütunların üzerinde sağ tık yapıp. Size and Position'ı açalım. Tutar ve % sütunu için 1 cm genişlik verelim toplam tutar sütunu için 1,2 Toplam % için de 1 cm genişlik verelim. Sol sütun içinde 2 cm genişlik yeterli olacak. (Sütun genişliklerini mouse ile kenarlardan sürükleyerek de ayarlayabiliriz ama bu değerleri size and positiondan verirsek tabloya gelen sütun sayısına göre gelmesi gereken konumu bir ortalama formülü ile oluşturabiliriz.)
- Şimdi 2 yeni formül ekleyerek tablonun sayfanın ortasına gelmesini sağlayalım.
- Serdar Sabiti :) – Crystal Reports nesnelerin x koordinatları için formül kabul ediyor fakat bu formüle gelen değer cm cinsinden değil 8300/14.6 benim bulduğum santime çeviren kat sayı. Siz dilerseniz 4150/7.3 ile de çarpabilirsiniz. Serdar Sabiti 8300/14.6 :)
- Ortalama Formulu - (20 - 2 - 1.2 - 1 - (( 1 + 1 ) * DistinctCount({@ColumnName})) ) / 2 * {@Serdar Sabiti :)}
Bu matematiksel formül ile santim olarak x koordinatını rapora gelebilecek sütun sayısına göre hesaplamış oluyoruz. (Sayfa Genişliği - tablo genişliği / 2)
- Şimbi Cross-Tab'ın üzerinde sağ tık yapıp, Size and Position’ı açalım ve formül düğmesine basalım. Formula editör açılacak. Report Fields Ağaç menüsünden Ortalama Formulu'nu bulalım ve üzerine çift tıklayalım. CTRL + S yaparak da kısa yoldan fomüla editörü kaydedip kapatabiliriz. Sonra OK düğmesine basalım.
- Tablomuz sayfanın ortasına geldi. data.xls dosyasından bir bölge kayıtlarını silip raporu refresh ederseniz.tablonun kendi yerini ayarladığını göreceksiniz.
Raporu preview ettiğimizde sol tarafta details sectionlarının çokluğu dikkatinizi çekmiş olabilir. Crystal Reports her bir satır kayıt için bir detail section görüntüler. Details section’ın üzerinde sağ tık yapıp. Suppress (No Drill Down) komutuna tıklarsanız bu boş satırlar gizlenecektir.
Chart Eklemek
Şimdi de Chart Ekleyeceğiz. Önce Tablo oluşuturduğumuz için kısa yoldan faydalanabiliriz. Cross-Tab üzerinde sağ tık yaparsanız. Insert Chart komutunu göreceksiniz. Tıkladığınızda da standart bir grafiğin rapora eklendiğini. Bazı durumlarda sadece biraz biçimlendirme yaparak işimizi hızlandırmış olabiliriz.

- Grafiğin üzerinde sağ tık yapıp Chart Expert'i Açalım ve Data sekmesine gelelim. Burda solda Cross-Tab aktif. Grafik Datası Cross-Tab'da seçtiğimiz formula fieldlere göre geldi. Advanced düğmesine basalım.ve biraz değişiklik yapalım. Mesela top 5 Markayı getirelim.
- Solda Report Fields den Önce RowName sonra ColumName'i üstteki alana sürükleyelim. Bunlar grafiğini görmek istediğimiz alanlar. Görmek istediğimiz değer için DataField'i Show values kısmına sürükleyelim.
- RowName ‘in üstüne tıklayalım. TopN ve Order aktif oldu. TopN'e tıklayalım. İçinde NoSort yazan bir combobox göreceğiz onu açıp TopN seçelim. Burada en çok kaç görmek istediğinizi seçebilirsiniz. Biz 5 yazalım.
- ColumnName içinde özel bir sıralama yapalım. Order düğmesine basalım ve açılan ekranda in ascending order yazan combobox’ta Specified order'ı seçelim.
- Yeni bir sekme gelecek. Burada Named Group Combobox'ına tıkladığınızda Bölge adlarımızı göreceğiz. İstanbul, ankara, izmir önce gelsin sonra diğerleri gelsin istiyoruz. Sırayla Combobox'tan seçerek eklenmelerini sağlayalım.
- İlk bölgeyi eklediğinizde ücüncü bir sekme gelir Others Bu sekmede de Leave in their own groups seçeneğini seçelim. Yani 2. sekmede belirlediğim bölgeleri belirlediğim sırada getir. Kalanlarıda alfabetik olarak sırala.
Grafik için Chart Expert, Chart Options ve Auto Arrange Chart kullancağınız 3 mouse komutu. Auto Arrange Chart Grağin dağınık duran görünümünü sığmayan yazılarını düzelten çok kullanışlı bir komut.
- Gelelim Chart Options'a. Grafiğin üstünde sağ tıklayarak Chart Options kısmını açalım.
- Titles Sekmesinden başlıkları değiştirebilir yada silebilirsiniz. Hepsini silelim.
- Data Labels Sekmesinden veri etiketleri ekleyebilirsiniz.
- Legend Sekmesinden renk göstergesinin yerini ayarlayabilirsiniz. Layout comboboxından Legend Below Chart'ı seçelim.
- Her hangi bir grafik objesinin biçimini değiştirmek istediğinizde üzerine sağ tıklarsanız Format ... komutu göreceksiniz. Excel Grafiklerinde yaptığınız işlemlerin benzeri bir şekilde düzenlemeler yapabilirsiniz.
Sonuç
Raporumuza bir grafik bir de tablo ekledik. Şimdi birde başlık ekleyelim. (Belkide en başında yapmalıydık :) ) bir text objesi ekleyip içine Markaların Bölgelere Göre Tutar Analizi yazalım. Fontunu da biraz büyütürsek bu işi de yapmış oluruz.
Nur topu gibi bir raporumuz oldu hemde 2008 model :)