Etiketler ‘cyrstal’

Cyrstal Report İleri Düzey Rapor oluşturma Renklendirme

PerÅŸembe, Nisan 10th, 2008

Merhaba arkadaşlar sizlere bugün Cyrstal Report programı ile bir rapor örneğinden bahsedeceğim. Yapacağımız rapor biraz karışık gelebilir fakat buradaki örneklerle eminim kendinizi geliştirebilirsiniz. Öncelikle bu raporları bana öğreten ve takıldığım yerde yardımı esirgemeyen UĞUR ÇULLUKÇU abime teşekkürlerimi iletirim. Şimdide öğrendiğim bilgilerimi sizlerle paylaşmak istiyorum.

AÇIKLAMA :

Oluşturacağımız rapor databasemizdeki bir stunda tanımlı olan değişkenleri çekerek bu değişkenlerim formüllerdeki tanımlarına göre satırı yada stunu renklendireceğiz.

Mesela databasemizdeki Açıklama2 stununa sipariÅŸlerde belirli özellikler tanımlayalım. SipariÅŸimizi girerken Açıklama2 stununa gireceÄŸimiz deÄŸiÅŸkenlerimize göre satırımız yada stunlarımızdaki renklendirme kurallarımızı belirleyelim…

YAPILACAK OLAN :

Yapmak istediğimiz mevcut siparişlerin takibi. Bu takibide alacağımız rapor ekranında satırların renklendirilmesi ile görelim.

Öncelikle renklerimizi ve işlevlerini belirleyelim.

Sipariş takibimiz şöyle ..

Gelen siparişi sistemimize kayıt ediyoruz.

Malzeme geldiyse : BEYAZ Renk olsun

Malzeme üretime girdiyse : KIRMIZI renk olsun

Malzeme üretimi bittiyse : SARI renk olsun

Malzeme montaja gittiyse : YEŞİL renk olsun.

Rapor aldığımız zaman renklere bakarak malın durumunu görmüş olacağız. Böylelikle siparişin durumunu renklendirilmiş rapor ile kontrolünü sağlayabileceğiz.

Açıklama2 stununa gireceğimiz değerler ise :

BEYAZ renk için GELDİ

KIRMIZI renk için ÜRETİM

SARI renk için BİTTİ

YEŞİL renk için MONTAJ

değişkenlerimizi oluşturduk ve renklerimizde artık belli şimdi formüllerimizi yazmaya başlayalım.

cyrstal.jpg

üstteki resimde de gördüğünüz gibi databasemizden bize gerekli olan bilgileri tek tek belirledik ve raporumuzun dizaynını bitirdik.

Şimdi renklendirme için formüllerimizi oluşturalım.cyrstal-2.jpg

Öncelikle renklendireceğimiz hücreyi sağ tıklayıp Format Field seçeneğine geliyorum. Burada Font sekmesine gelip X2 formül butonuna basıyoruz.

Şimdi isterseniz bu bölümde farklı atraksiyonlarda deneyebilirsiniz. Mesela Üretim de yazı tipini değiştirebilir, kalın yapabilir, ince yapabilir, büyük yazabilir küçük yazabilir, istediğiniz tarza değiştirebilirsiniz.

if {xsiparis_detayRECORD.aciklama2}=”GELDİ” THEN crwhite ELSE
if {xsiparis_detayRECORD.aciklama2}=”ÜRETİM” THEN crred ELSE
if {xsiparis_detayRECORD.aciklama2}=”BİTTİ” THEN cryellow ELSE
if {xsiparis_detayRECORD.aciklama2}=”MONTAJ” THEN crgreen ELSE CRBLACK

Gördüğünüz gibi yukarıdaki formülde size açıklama yapayım.

Eğer açıklama2 de GELDİ yazıyorsa o hücrenin rengini yani yazının rengini BEYAZ olarak çıkartacak.

Eğer açıklama2 de ÜRETİM yazıyorsa o hücrenin rengini yani yazının rengini KIRMIZI olarak çıkartacak.

Eğer açıklama2 de BİTTİ yazıyorsa o hücrenin rengini yani yazının rengini SARI olarak çıkartacak.

Eğer açıklama2 de MONTAJ yazıyorsa o hücrenin rengini yani yazının rengini YEŞİL olarak çıkartacak.

Buraya kadar ne yaptık siparişin durumuna göre raporda çıkacak olan bilgilerin yazı tipini renklendirdik. Şimdi de stunu renklendirelim .cyrstal-3.jpg

Raporumuzda SECTION EXPERT bölümüne gelip RenklendireceÄŸimiz stunun bulunduÄŸu HEADER ‘i seçiyoruz. Color sekmesine gelip X2 formül kısmımıza gelmekteyiz. Ben yaptığım rapor dizaynında Grup Header2 olduÄŸu için resimde de gördüüğünüz gibi onu seçtim.

Sonrada formüllerimizi girmeye başlıyoruz.

if {xsiparis_detayRECORD.aciklama2}=”GELDİ” then COLOR(17,136,255) else
if {xsiparis_detayRECORD.aciklama2}=”ÜRETİM” then COLOR(17,136,255) else
if {xsiparis_detayRECORD.aciklama2}=”BİTTİ” then COLOR(17,136,255) ELSE
if {xsiparis_detayRECORD.aciklama2}=”MONTAJ” then COLOR(17,136,255) else

Bu sayede arka plan rengini yani stunuda renklendir olmaktayız. Burada bir farklılık var gördüğünüz gibi rengi CRBlack olarak girmedim renk kodunu gömdüm. Bunuda yapabilme imkanınız var tabiki….

Birde değişken tanımlarımızı yapalım bunun içinde yine SECTION EXPERT bölümünde Headerimizi seçtiğimiz kısımda

Peki biraz atraksiyon yapalım mı ?

Mesela eğer ki AÇIKLAMA2 stunumuz eğer boşsa o zaman ? O zaman satırı SİYAH ile boyasın bizimde dikkatimizi çekecektir böylelikle AÇIKLAMA2 stununun boş olduğunu bu siparişin unutulmuş olduğunu görebiliriz.
// Değişken tanımlamalarımız.
if {xsiparis_detayRECORD.aciklama2}=”GELDİ” then false else
if {xsiparis_detayRECORD.aciklama2}=”ÜRETİM” then false else
if {xsiparis_detayRECORD.aciklama2}=”BİTTİ” then false else
if {xsiparis_detayRECORD.aciklama2}=”MONTAJ” then ture
// Bu değişkenlerin dışında birşey yazılırsa yada değişkenler yanlış yazılırsa o zaman ?

Åžimdi ise yanlış yazılanları veyahut boÅŸ olan bir kaydı rapor ekranımızda nasıl görebileceÄŸimizi görelim. Buda farklı bir atraksiyon….

// Eğer açıklama2 stunu boş ise o zaman kayıtları görebilelim bunu yazmassak
// Açıklama2 stunu boş olanlar raporda gözükmez.
if {xsiparis_detayRECORD.aciklama2}=”" then false ELSE
// EÄžER YANLIÅž YAZILIRSA <> MANASI YANLIÅž YAZILAN VEYA FARKLI DEÄžER RENK siyah OLSUN
if {xsiparis_detayRECORD.aciklama2}<>”" then false ELSE
// by TEAkolik.com 04/03/2008 11:27

Bu koduda sisteme eklersek o zaman yanlış yazılan bir deÄŸiÅŸken raporda çıkacak ama SİYAHLA boyayacağız. … Apayrı iki atraksiyonumuz oldu :)

Arka plan boyadığımız kodların altınada bu kodları eklersek….
// EĞER AÇIKLAMA2 BOŞSA RENKLENDİRME SİYAH OLACAK..!
if {xsiparis_detayRECORD.aciklama2}=”" then COLOR(0,0,0)ELSE
// EÄžER YANLIÅž YAZILIRSA <> MANASI YANLIÅž YAZILAN VEYA FARKLI DEÄžER RENK KIRMIZI
if {xsiparis_detayRECORD.aciklama2}<>”" then COLOR(0,0,0)
// by TEAkolik 04/03/2008 11:27

Bu kodlarımızıda COLOR sekmesine tanımlarsak o zaman sistemboÅŸ kayıtları ve yanlış yazılan kayıtları karşımıza siyah zemin olarak çıkartacak….

Bu kadar arkadaÅŸlar daha sonra farklı renklendirme raporları ile karşınızda olacağım…

Bad Date Format String Cyrstal Report Bir Uğur Çullukçu klasiği -3

Cuma, Nisan 4th, 2008

Merhaba arkadaşlar bu 3. yazım Cyrstal Report hakkında oldu. Aslında birkaç örnekle rapor dizaynlarını ileride de uzman düzeyde örneklerle sizlerle paylaşmayı düşünüyorum önceki yazılarımda 1 ve 2. bölümlerde sizlere Cyrstal Report da almak istediğim bir rapor için hata kodundan olaya daldık şimdi ise bambaşka bir yerden çıktık.

Durum Analizi -2 yazımda sizlere formun çıkışını aldığımı fakat istediğim şekilde alamadığımı belirtmiştim. Neydi önce biraz bahsedeyim.

Öncelikle raporumuzu alacağımız database stununda boş olan kayıtlar istediğimiz kayıtlar ve diğer kayıtlar vardı.

İstediğimiz : msip_tarih stununda eğer rapor tarihinden önceki tarih kayıtları varsa mevcut raporda KALIN olarak yazı tipini yazacaktı.

Sorunlar : data içerisinde boş kayıtlar, günün tarihiyle aynı kayıtlar, ileri tarihte kayıtlar ve geçmiş tarihte kayıtlar mevcut.

Şu halde ki istediğimiz sadece rapor tarihinden önceki tarihler yani bugün ayın 04.04.08 ise bu tarihten önceki bir kayıt varsa onlar KALIN yazı tipi diğerlerinin hepsi NORMAL yazı tipi ile yazılacak.

Önceki yazımda durum analizi -2 sizlere boş olan dataları NORMAL yazı tipi ile yazdıramadığım fakat diğerlerini yapabildiğimi söylemiştim. Şimdi Uğur Çullukçu abim sağolsun sistemime login oldu kodlarımı inceledi ve bana aşağıdaki şekilde kodları sistemime eklememi söyledi.

Benim yazdığım kodlarda formül bölümüne ” oltar ” deÄŸiÅŸkenini eklemiÅŸtim. Sonrada yazının raporda yazılacağı bölümü saÄŸ tıklayıp format field kısmından Font a gelelerek ÅŸu kodları eklemiÅŸtim.

FORMULA FIELD :

oltar değişkeni için :

if {xsiparis_masterRECORD.msip_tarih}<>"" then cdate({xsiparis_masterRECORD.msip_tarih}) else
cdate (0,0,0)

Format FIELDT :

Tarih için formüller :

if {@oltar} = CurrentDate then crRegular else
if {@oltar} > CurrentDate then crRegular else
if {@oltar} < currentdate then crbold else crregular

Tabi bu formüllerle BOŞ OLAN KAYITLAR HARİÇ diğerlerini yapabildim ama boş kayıtları bir türlü İNCE yani NORMAL yazı ile yazdıramadım.

ÇÖZÜM : ( Sorunsuz çalışan komutlar )

UĞUR ÇULLUKÇU KLASİĞİ :

// crItalic
// crBoldItalic
//if {@oltar} = CurrentDate then crRegular else
//if {@oltar} > CurrentDate then crRegular else
//if {@oltar} < currentdate then crbold else crregular
//if {@oltar} < CurrentDate then crbold else
//if {@oltar} =cdate(0,0,0) then crBold else crregular
//if {@oltar} <> CurrentDate then crRegular else crblack


if {xsiparis_masterRECORD.msip_tarih}="" then crregular else
if {@oltar} < CurrentDate then crbold else crregular

// Düzenleme by Uğur Çullukçu Abi sen bu işi biliyorsun helal sana...! 04.04.08

// Eğer ölçü tarihi Günün tarihinden önce ise SEMT stunu otomatik olarak KALIN Oluyor..

İşte budur. Sorun çözüldü….

SONUÇ :

İstediğimiz gibi yani rapor tarihinden önceki kayıtlar KALIN yazı tipi ile diğer tüm kayıtlar ve boş kayıtlar NORMAL yazı tipi ile raporumuza yansıdı.

Teşekkürler Uğur Abi..

Bad Date Format String Cyrstal Report Durum Analizi -2

Cuma, Nisan 4th, 2008

Merhaba arkadaşlar önceki yazımda sizlere Cyrstal Report programında dizayn ettiğim bir raporun formülünde takıldım kaldım. Şuan sizlere daha önceki kodlarda birkaç hata yaptığımı ve BAD DATE FORMAT hatasını neden aldığımı anlatmak istiyorum.

Benim database içerisinde önceki yazıda belirttiğim msip_tarih stununda boş olan kayıtlar var.. Yani stun içerisinde data olamayan hücreleri formül okumaya kalktığında bu hatayı veriyor.

Rapor alırken BAD DATE FORMAT STRING hatasını aldım.Bu soruna sebep olarak 2 etken var demiştim bunlardan 1. yani msip_tarih stunundaki boş kayıtları doldurdum ve sonunda gördüm ki bu hata ortadan kalktı..

Peki ne yapabiliriz ? Hiç boş kayıt olmamalı mı ? Ya unutursak ne olacak ?

Problem :

1. Eğer günün tarihi database> sip_tarih stununda yazılı olan tarihten küçükse KALIN font olarak rapora yazacak.

2. Eğer günün tarihi database> sip_tarih stununda yazılı olan tarihten büyükse NORMAL font olarak rapora yazacak.

3. Eğer günün tarihi database> sip_tarih stununda yazılı olan tarihe eşit ise NORMAL font olarak rapora yazacak.

4. Eğer database > sip_tarih stununda hiçbirşey yazmıyorsa o zaman NORMAL font olarak rapora yazacak.

Sorun 4. maddeden dolayı ortaya çıkıyordu. Bunu önceki yazımda yazmamıştım çünkü öküzlemesine gitmiştim problemi tam analiz edemediğimden ortaya çıktı.
Çözüm :

cyrstal2.jpgİlk denediÄŸim çözüm tam bir öküzlemesine kod yazmaktı doÄŸal olarak Formül editörü beni uyardı… Åžimdi ise boÅŸ kayıtlar için yani database>siptarih stunundaki boÅŸ kayıtlar için bir formül girmem gerekiyor.

FORMÜL bölümüne “oltar” adında bir deÄŸiÅŸken tanımladım ve saÄŸ taraftaki resimde de gördüğünüz gibi bu deÄŸiÅŸkene aÅŸağıdaki formülü girdim.

if {xsiparis_masterRECORD.msip_tarih}<>"" then cdate({xsiparis_masterRECORD.msip_tarih})
else cdate (0,0,0)

bu formül sayesinde Bad Format String hatasından kurtulacağız. Çünkü program rapor çıkartırken dataları okuyor ve bizim formülümüzle ilişkilendiriyor. Bizim formül içerisinde boş kayıtlar için bir şartlandırma yani işlem verilmediğinden dolayı tarih bulamayınca yani kayıt boş gelince karşımıza BAD FORMAT STRING hatasını vermekteydi.

cyrstal1.jpg Şimdi formülümüzü ise sağ taraftaki resimde de gördüğünüz gibi yazdığımız bölüme giriyoruz yani yazının raporda yazılacağı yeri sağ tıklatıp FORMAT FIELD sekmesine geliyoruz. Buradan da FONT bölümüne gelip X2 formül kısmımızı açıyoruz.

Aşağıdaki değerleri girince formülümüz çalışacaktır.

// crRegular
// crBold
// crItalic
// crBoldItalic
if {@oltar} > CurrentDate then crRegular else
if {@oltar} < CurrentDate then crBold else
if {@oltar} = CurrentDate then crRegular else
if {@oltar} <> CurrentDate then crRegular else crblack

// Eğer ölçü tarihi Günün tarihinden önce ise SEMT stunu otomatik olarak KALIN Oluyor..
// Düzenleme by TEAkolik.com Otomatik ölçü alındı bilgisi 03.04.08 13:10

Sonuç :

Artık bad format date string hatası almıyoruz. Çünkü ” oltar ” deÄŸiÅŸkenimiz içerisine yazdığımız

if {xsiparis_masterRECORD.msip_tarih}<>"" then cdate({xsiparis_masterRECORD.msip_tarih})
else cdate (0,0,0)

Bu kodda eÄŸer msip_tarih srununda <>”" yani boÅŸ kayıt var ise onları 0,0,0 olarak tanımladık. Yani orada deÄŸer varmış gibi davranmaya baÅŸladı.

Güzel harika rapor çalıştı ….

Yanız bir sıkıntı var…

Rapor tarihinden önceki kayıtlar KALIN yazılıyor.
Rapor tarihinden sonraki kayıtlar İNCE yazılıyor.
Rapor tarihi ile aynı kayıtlar İNCE yazılıyor.
m_sip tarih olmayan kayıtlarında İNCE yazmıyor malesef….. KALINLA yazıyor…

Demekki bir hata daha buldum :) Şimdi sorun ise tarih olmayan kayıtlarıda ince yazmak ama kalın yazıyor nedendir ?
Çözünce sizlerle bunuda paylaÅŸacağım…

Sanırım en iyisi bir uzmana danışmak…

UÄŸur Abi UÄŸur Çullukçu bu iÅŸin uzmanıdır diyebilirim. Bir danışayım bakayım nasıl bir çözüm önerecek….

UÄŸur abi help me pls… takıldım valla uyuz oldum bad format tamam ÅŸimdi de istediÄŸim gibi rapor vermiyor…. Hırrrrrrr

Bad Date Format String Cyrstal Report Uyuz oldum bu hataya…

PerÅŸembe, Nisan 3rd, 2008

Merhabalar arkadaÅŸalar. Bir süredir site üzerinde pek yazamadım kusura kalmayın N.Åž.A da hergün bir yazı yazarım fakat ÅŸu Cyrstal Report ‘u elime aldım alalı tüm vaktimi bu programa ayırıyorum diyebilirim.

Cyrstal Report ‘da bir rapor ekranı dizayn ediyorum ve “BAD DATE FORMAT STRING” hatası ile karşılaÅŸtım. Kullandığım kodlar ise…

if cDate ({xsiparis_masterRECORD.msip_tarih}) < CurrentDate then crBold else
if cDate ({xsiparis_masterRECORD.msip_tarih}) > CurrentDate then crRegular else
if cDate ({xsiparis_masterRECORD.msip_tarih}) = CurrentDate then crRegular else crblack

Fakat karşıma BAD DATE FORMAT hatasını getirince takıldım kaldım. Sizlere kodu biraz açıklayayım..

1. Eğer günün tarihi database> sip_tarih stununda yazılı olan tarihten küçükse KALIN font olarak rapora yazacak.

2. Eğer günün tarihi database> sip_tarih stununda yazılı olan tarihten büyükse NORMAL font olarak rapora yazacak.

3. Eğer günün tarihi database> sip_tarih stununda yazılı olan tarihe eşit ise NORMAL font olarak rapora yazacak.

Fakat malesef rapor alırken BAD DATE FORMAT STRING hatasını aldım.

Bu soruna sebep olarak 2 etken var…

1. msip_tarih stunu boş olan kayıtlar yapabilir.

2. Database tarih formatı GG/AA/YYYY iken bizim gün tarihi AA/GG/YYYY olması sebep olabilir.

Yani aslında kodlar arasında şunu yazabilirsem sanırım sorunum çözülecek..

” EÄŸer tarih yanlış yazılmış ise ince font olarak yaz” demesi kolay da bunu bir türlü yazamadım :) Neyse bir yerde hata yapıyorum ama bulunca sizlere yazarım.

Theme : N.Design Studio Türkçe : TEAkolik V.2.8 Altyapı : Wordpress
RSS Yorumlar RSS GiriÅŸ