Bad Date Format String Cyrstal Report Durum Analizi -2

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

Yorum yapın