Crystal Report Kazık bir soru ve Rapor dizaynı…

Merhaba arkadaşlar ara sıra sizlere Crystal Report ile ilgili deneyimlerimi anlatmaya çalışıyorum. Özelliklede karşıma çıkan sorunları çözer çözmez yazmak en büyük zevkim diyebilirim.

Bugün yine can sıkıcı bir sorunla karşı kaşıya kaldım.  Aslında sorun değil bir soru tam bir boru 🙂 Ulen espiri yapmayı bile beceremiyorum 🙂 Lafı fazla uzatmadan hemen konuya balıklamasına dalıyorum.

KURULU SİSTEM :

Uyumsoft’un ERP projesi sistemimizde kurulu. Sisteme girilen siparişler müşteriye teslim edildiğinde siparişler kapatılmaktadır. Sistemde 1 Database içerisinde 2 firma var. DB içerisinde veriler PROGRESS veritabanı yönetici ile işlenmekte. Uyumsoft ERP projesinde siparişler arasındaki Raporlar SQL ile Crystal Report programında dizayn edilerek işlenmektedir.  Genelde Açıklama1, Açıklama2, Açıklama3, Açıklama4 … gibi stunlara girilen değişkenler ile Rapor verileri çekilmekte. Sipariş Güncelleme adlı ekranda tüm açık siparişler alt alta satır satır belirtilmiş ve bazı kolonları açık ve yazılabilir durumda gelmektedir. Açıklama1, Açıklama2 … gibi stunlara yazılan DEĞİŞKENLER sayesinde raporlar database içerisinden çekilmektedir.

SİSTEMDEKİ SİPARİŞLER :

Panel, Ahşap ve Çelik olarak 3 farklı sipariş sisteme girilmekte. Panel siparişleri 100 01, 100 02, 100 03, … stok kodları ile başlamakta kendi içerisinde üretilen Panel ürünleri cinslerine göre stok kodları belirlenmiştir. Ahşap ürünlerinde ise 300 01, 300 02, 300 03, …. kodları ile belirlenmekte. Son olarak Çelik ürünleri ise 200 01, 200 02 … olarak kodlanmıştır. Ahşap, Panel ve Çelik ürünleri kendi içerisinde ayrı olarak raporlar halinde alınmaktadır.  İmalat raporu, ürün raporu, sipariş raporu, press raporu, gibi …

İHTİYAÇ :

Mobilya ürünlerindeki kullanılan KASA ürünleri dışarıdan hazır olarak alınmaktadır. Girilen siparişlerden üretime girecek olanların KASA ürünlerini sipariş vermek için tüm kasa adetleri gerekmektedir. Bir ürüne 2,5 adet kasa kullanılmaktadır. Bir kasa siparişi verilebilmesi için kasa ölçüleri guruplandırılacak bu gruplar arasında reklar ayrı olarak alınarak kasa siparişi ortaya çıkartılacak.

İSTENİLEN RAPOR : ( Açıkcası KAZIK SORU daha anlaşılır olacaktı. )

Sistemdeki Mobilya ürünlerinin siparişleri arasında istediğimiz siparişlerin AÇIKLAMA1 stunlarına “KASA” isimli bir değişken yazacağız.  Bu “KASA” değişkenini yazdığımız siparişler arasında Mobilya siparişleri seçilecek her siparişte 1 ile 20 arasında kalem bulunmaktadır. Siparişler kendi aralarında FINDIK, CEVİZ, MAUN …. gibi renklere sahiptir. Kasa ölçüleri ise 8, 10, 12, 14, 16, … gibi ölçülere sahiptir. Her renkte bu ölçüler bulunmakta. Hangi renkten hangi ölçüye sahip kaç tane sipariş olduğu ortaya çıkartılacak ve bu adetler 2,5 ile çarpılacaktır. ( Bir ürüne 2,5 adet kasa kullanılmakta. Fakat 0,5 kasa olmaz 1 ‘e tamamlanmalıdır. )

Aldın boruyu dedim kendi kendime… Daha anlaşılır bir şekilde ortaya şöyle bir sonuç çıkması gerekiyor..

10 ‘luk KASA dan

3 ADET MAUN  1 ADET CEVİZ  30 ADET FINDIK

12 LİK KASA dan

5 ADET MAUN 6 ADET CEVİZ 20 ADET FINDIK

…….
….
..

Tabiki ilk önce RAPOR dizaynımızı yapmamız gerekiyor. Bu kısmı  geçiyorum.

Raporde RECORD SELECTION bölümüne aşağıdaki kodları girdim.

{firma.firma_kod} = “MASTER” and

// Burası DB içerisindeki 2 firmadan MASTER olanını seçmek için;
{siparis_master.teslim_kod} = “KASA” and
// Burası Açıklama1 stunumuzda yazdığımız değşkeni belirttiğimiz kısım
// Açıklama1 stunlarına “KASA”  yazdığımız siparişlerin kalemleri toplanacak.
{siparis_detay.alis_satis} = “Satış” and
// Burası Alış – Satış siparişi olup olmadığını belirtmek için
{siparis_detay.siparis_durum} and
// Burası sipariş durumuna bakmak için KAPALI siparişleri okumayacak.
not ({siparis_detay.stok_kod} startswith [“100 01”, “100 02”, “100 03”, “100 04”, “100 05”, “100 06”, “100 07”, “100 08”, “100 09”, “100 10”, “100 12”, “100 90”, “200”, “300 11”, “300 12”, “300 90”])
// Burası hangi siparişlerin kalemlerindeki STOK kodlarını filtrelemek için NOT eki sayesinde bu siparişleri programın okumasını engelliyorum.
// 10.10.08 by TEAkolik http://www.teakolik.com

tabiki siz bunu istediğiniz gibi farklı atraksiyonlara çevirebilirsiniz.

Raporda GRUP HEADER 1 oluşturdum bu kısmı siparis_detay_bmiktar -A  olarak Databaseye bağladım. Raporumuzda

KASA :

{bmiktar} databasemiz içerisindeki siparişlerin kasa ölçülerini yazdığımız alan 10,12,14,16 gibi…

Yazdıracağımız kısımda 10 luk, 12 lik, 14 lük, ayrımını yapmaktayız. Alt alta kasalar yazılacak. Hemen altına GRUP HEADER 2 oluşturdum ve siparis_master_okod2 sütünuna bağladım. Bu sütünda siparişlerin kalemlerindeki ürünlerin renkleri tutulmakta.

Bu kısımdaki GRUBU gizliyorum. Grup arka planda çalışacak daha doğrusu filtreleme yapacak. Hemen alt kısımdaki GRUP FOOTER2 bölümüne geliyorum.

Bu bölüme

20 Adet FINDIK gibi yazılacaktır. Bunun için öncelikle Adeti hesaplattırmamız gerekiyor.  Şimdi Siparişler arasında Mobilyaları bulduk bu mobilyaların içindeki kasa ölçülerini bulduk kasa ölçüleri arasındaki renkleri ayırdık ve her rengi alt alta adetlerini yazıp 2,5 ile çarpacağız.

Kalemleri toplamak ve topladığımız adetleri çarpmak için Count değerinden faydalandım.

Formula Fields arasına sağ tıklayıp NEW dedim ve kasa_carp isimli bir değişken tanımladım. Bu değişkenin içerisine aşağıdaki formülü girdim.

(Count ({siparis_detay.bmiktar}, {siparis_master.okod1}))*(2.5)

Count ile siparişlerdeki kalemleri saydırıyorum. Bmiktar kasa ölçüleri ve okod1 kısmıda renkleri böylelikle her renkten kaç tane olduğunu çıkartabildim. Sonrada *(2.5) yaparak kasa siparişi verilirken söylemiştim 1 kalemdeki mala 2,5 adet kasa gitmekte…  Sonrada bu değişkenimizi  GRUP Footer 2 (siparis_master_okod1) içerisine sürükleyip koydum..

@kasa_carp  ADET  okod1  olarak tanımlamamız bitti.

Sonuç :

Hesaplama harika yanlışlık yok. Hadi kolay gelsin. Raporun görmek isterseniz Raporumuz tıklayarak indirebilirsiniz. Aşağıdanda ekran görüntülerini inceleyebilirsiniz.

“Crystal Report Kazık bir soru ve Rapor dizaynı…” üzerine 18 yorum

  1. Vay canına!

    adım adım sorun ve çözümü böyle oluyor demek ki. Bu arada sanırım bu yazıyı işteyken yazdın resimler paintten editlenmiş gibi :p

    Yanıtla
  2. ilyas TEKER ;

    Aynen öyle dostum paint konusunda da şunu söyleyeyim buiş için ezelinden beri paint kullanıyorum 🙂

    Yanıtla
  3. Merhaba crystal reportla alakalı bir yazı görünce sevindim doğrusu. Size bir sorum olacak bu konuda. Burdan soru cevaplamayı uygun görüyorsanız bir daha ki postumda sorumu yazayım izninizle.

    Yanıtla
  4. Tekrar merhaba ;

    sorum şu şekilde. Crystal 10 versiyonunu kullanıyorum ben. Birbiriyle herhangi bir field tarafından ilişkili olmayan 2 table ile rapor yaptım. Biri subreport olarak ve ortak bir field ile birbirlerine bağlılar. Şimdi ana raporda subreportta bulunan bir alanı formül içinde kullanmam gerekiyor. Ancak ana raporda subreport alanını göremiyorum subreportta da küçük bir formül çalışıyor. o alanı almam lazım.

    Yardımcı olursanız sevinirim.

    Yanıtla
  5. Feride KONCUK :

    Subreport da çalışan formülü bir değişken olarak ana raporda aynı formülü tanımlarsan sanırım istediğiniz olacaktır. Yada isterseniz bana raporu gönderin ben bakayım ?

    Yanıtla
  6. Ana raporda aynı formülü tanımlayamıyorum çünkü subreportta ki table ile alakası yok aslında. Yani linklerde sorun oluyor. O yüzden subreport ile denedim ben. Ancak subreport raporu çalıştır dedikten sonra formülleri hesaplayıp getirdiği için olmuyor. 2 farklı raporu tek raporda çalıştırıp bunlar üzerinde hesap yapmak gibi. Raporu size bir örnek db de yapıp gönderirim. Sorunu gormeniz açısından.

    Tşkler

    Yanıtla
  7. Merhaba
    Ben bir çelik kapı firmasında çalışmaktayım.
    Bizde Uyumsoft ERP paketini satın aldık.
    Sizin sektör sanırım çelik kapı üzerine(siteyi tam gezemediğim için tahminde bulunuyorum)
    Biz genelde sipariş bazlı çalışan bir firmayız. Standart bir ürün yapmadığımız için müşteri sipariş anında kapının istediği tüm özellikleri ile dilediği gibi oynayabiliyor.
    Buna kapı ölçülerinden tutunun üzerinde aksesuar olsun,olmasın, rengine kadar her şeyi ile oynayabiliyor. Bu yüzden standart ürün ağaçları kullanamıyoruz. Konfigürator kullanma mecburiyetinddeyiz ki amacımızda bu.
    Benim sizden bir istediği olacak. ERP projesinin üretim ayağına başladığınızda yaşadığınız sorunları ve nasıl çözdüğünüzü bana mail olarak yollabilirmisiniz ya da sitenizde bu konudaki tecrübelerinizi paylaşabilirmisiniz ?. ve nelere çalışma süresince hangi konularda ince eleyip sık dokumalıyız.

    Yanıtla
  8. @PINAR
    Merhaba. Program içerisinde yukarıda “AZ” tuşu var onu tıkladığın görebilirsin tarihe göre sıralama yaptırabilmektesiniz.

    Yanıtla
  9. Size crystal konusunda bir sorum olacak.Bir raporu yaparken verştabanından bilgileri alıyoruz. Benim ayrıca dışarıdan da almam gereken bilgiler var. Bu bilgiler için veritabanında bir tablo oluşturmak istemiyorum. Bu tabloyu crystal de oluşturabilir miyim dışardan almadan. Eğer böyle bir özellik varsa veritabanından aldığım bilgilerle kendim oluşturduğum tablodaki bilgileri karşılaştırmak istiyorum.

    Yardımcı olabilir misiniz?

    Yanıtla
  10. @Ahmet
    2 rapor yaz 1. rapor ana veri tabanından veri çeksin, 2.rapor karşılaştırma yapacağınız veri tabanından veri çeksin. sonrada 2 raporu tek bir rapor içine sub report olarak ekle. Sanırım işini görecektir 🙂

    Yanıtla
  11. mrhaba teakolik nickli kardesim bende uyumsofta ithalat ve ihracat raporlarini nasil gorebilirim ayrica bana dokuman lazim uyumsoft hakkinda

    Yanıtla
  12. Selamlar,

    Maalesef ki 6 senedir Uyumsoft ile iletişimim yok… Eskiden çalıştığım firmada kullanıyordum. Uzun süredir kullanmıyorum.

    Yanıtla
  13. merhaba sayın yetkili biz kele çelik şişli bölge bayisiyiz bizim talebimiz müşteriye satışını yaptığımız kapını rengi kapı kilit sistemi kapı ölcüleri imalata girdiği tarih teslim tarih aynı zamanda müşterinin yaptığı ödeme şekli alış ve satış takibi yapa bileceğimiz bir programa ihtiyacımız var iyi çalışmalar musa canpolat

    Yanıtla

Yorum yapın