Ireport Oracle bağlantısı

  • Tools>Options>Classpath> "Add Jar" buttonunu tıklayarak ojdbc14.jar dosyası gösterilir.
  • Bu tanımlma yapıldıktan sonra ojdbc14.jar dosyasının bilgisayar üzerindeki yeri değiştirilmemelidir.
  • Report Datasources > New > Database JDBC Connection seçilir.
  • JDBC Driver olarak Oracle (oracle.jdbc.driver.OracleDriver) seçilir.
  • Burada bağlantı bilgileri girilir.
  • Test edildikten sonra save edilir.

Jasper Reports Excelde Düzgün Çıktı İçin

  • Line yada Frame kullanılmamalı.
  • Çizgiler için, Text alanların border'lar kullanılmalı.
  • Text alanların kenarları alt alta - yan yana gelmeli. yoksa excelde  fazla kolonlar oluşuyor.
  • İki kontrol üst üste geliyorsa alttaki kontrol excel çıktısında gözükmüyor. Dikkat etmek lazım.
  • EXCEL Çıktısında sayfa aralarında boşluk kalmaması için >>> Mesela  14 ün katları ile işlem yapılmalı. Yani labelin height'i 14 , sahfanın height'i 840 olabilir. Yada Raporun Ignore Pagination özelliği True yapılmalı.
SpagoBI için Tomcat'te
webapps/SpagoBIJasperReportEngine/WEB-INF/classes/ klasöründe
jasperreports.properties dosyasına şu satırları ekledim.
#pdf'te default dili türkçe yapıyor. ireports'da ayar yapmaya gerek kalmıyor.
net.sf.jasperreports.default.pdf.encoding=Cp1254 
net.sf.jasperreports.export.xls.max.rows.per.sheet=0

#excelde boş satırları,kolonları siliyor. mesela sayfa arası boşluklar için.
net.sf.jasperreports.export.xls.remove.empty.space.between.rows=true
net.sf.jasperreports.export.xls.remove.empty.space.between.columns=true
#bu ikisinden umduğumu bulamadım. işe yaramıyor gibi gözüküyor.
net.sf.jasperreports.export.xls.auto.fit.column=true
net.sf.jasperreports.export.xls.auto.fit.row=true

Jasper Reports Javascript Grovy Örnekleri

//Türkiye Para Formatı

java.text.NumberFormat.getCurrencyInstance(new Locale("tr","TR")).format(Double.valueOf( $F{turklira} ).doubleValue()).replace("TL","")

//yada null değerler varsa
$F{turklira} == null ? "" : java.text.NumberFormat.getCurrencyInstance(new Locale("tr","TR")).format(Double.valueOf( 
$F{turklira} ).doubleValue()).replace("TL","")



//Tarih Formatlı

new java.util.Date().format("dd/MM/yyyy")

Jasper Reports Group No

Add new variable as...

Variable Class : java.lang.integer
Calculation : Count
Reset Type: None
Increment Type : Group
Incremet group : agroup
Variable Expression : $V{agroup_COUNT}++
Initial Value Expression : 

Jasper Reports Koşullu Biçimlendirme

  • Report Inspector'dan "Styles" sağ tıkla "Add Style" seç. İsim olarak "Bicim" verdim. BununProperties'lerini  istediğin gibi ayarla.
  • "Bicim"  i sağ tıkla  "Add Conditional Style" seç. Bunun Properties'lerini  istediğin gibi ayarla. Condition Expression ver. mesela $F{field}.length()!=2

SpagoBI Jasper Reports Hyperlink

  • TextField sağ tıklanıp Hyperlink seçilir.
  • Hyperlink target:   Self seçilir
  • Hyperlink type :  Referance seçilir
  • Hyperlink reference Expression :

"javascript:parent.execCrossNavigation(this.name, 'RAPORADI', 'PARAMETREADI=DEGER');"

  • örnek
"javascript:parent.execCrossNavigation(this.name, 'SATINALMAISTEK', 'DOSYANO="+$F{DOSYA_NO}+"');"

  • Türkçe için Hedefe tarih gönderirken formatlamak gerekiyor. 
    • Mesela Oracledan konveredilebilir.
      • TO_CHAR(to_date($P{ILKTARIH},'DD/MM/YYYY'),'MM/DD/YYYY') ILKTARIH,
      • TO_CHAR(to_date($P{SONTARIH},'DD/MM/YYYY'),'MM/DD/YYYY') SONTARIH
    • Yada Hyperlink reference Expressionda 
      • $P{REPORT_PARAMETERS_MAP}.get("SBI_HOST")  +  "/SpagoBIJasperReportEngine/JasperReportServlet?prefixName=261__8462&outputType=PDF&SBI_EXECUTION_ROLE=" + $P{REPORT_PARAMETERS_MAP}.get("SBI_EXECUTION_ROLE") + "&AUDITID=" + $P{REPORT_PARAMETERS_MAP}.get("SPAGOBI_AUDIT_ID") + "&TARIH1=" + new java.util.Date().format("dd/MM/yyyy") + "&TARIH2=" + new java.util.Date().format("dd/MM/yyyy") + "&SBICONTEXT=%2FSpagoBI&SBI_COUNTRY=TR&document=261&SBI_SPAGO_CONTROLLER=%2Fservlet%2FAdapterHTTP&dateformat=dd%2FMM%2Fyyyy&SBI_LANGUAGE=tr&SBI_EXECUTION_ID=5ac64992192711e399cd1de9340ab7e1&documentLabel=AuditLog&SBI_HOST=" + $P{REPORT_PARAMETERS_MAP}.get("SBI_HOST") + "&isFromCross=false"

SpagoBI Jasper Reports Subreport Notları

SpagoBI ' da kullanabilmemiz için Ireportta Subreportun peroperties'lerinden Subreport Expression'dan $P{SUBREPORT_DIR} + ibaresini silmemiz lazım.



Subreportlara parametre gönderirken TO_CHAR (field) fonksiyonu ile sayıları ve tarihleri string değerler olarak göndermek daha isabetli olur.



SpagoBI'da subreportları ana raporda linklememiz gerekli. Bunu için ana raporun Detay ekranında sağüst köşedeki Link buttonuna tıklarız.



Sonra Linklemek istediğimiz raporu seçeriz. Bunun için Sadece seçili öğeleri göster. checkbox'ı seçili olmamalı.




NOT: Birden çok Subreport için subreportların Rapor Adları, dosya adları vb.. birbirinden farklı olmalı. Yani aynı Rapor Adlarına sahip subreportlar aynı rapora linklenince problem oluyor.





Bazı Sql'ler

--PLSQL için daha çok dbEaver kullanıyorum. Bana daha basit geliyor.

AND (P.DURUMU =$P{DURUMU} OR $P{DURUMU} = 'HEPSİ' OR $P{DURUMU}IS NULL)
AND (P.TURU =$P{TURU} OR $P{TURU} = 'HEPSİ' OR $P{TURU} IS NULL)
AND (P.ID_PBS_ISYERI = $P{ISYERI} OR $P{ISYERI} IS NULL)
AND ((P.KURUM_SICIL_NO BETWEEN $P{SICIL1} AND $P{SICIL2}) OR ($P{SICIL1} IS NULL))


AND(D.BASLAMA_TARIHI  BETWEEN TO_DATE($P{DONEM},'DD/MM/YYYY') AND TO_DATE($P{DONEM2},'DD/MM/YYYY')+1 )



AND ($P{GELIRKODU} IS NULL OR (INSTR($P{GELIRKODU},KOD.ID)>0))

AND (KOD.ID IN (

select GELIR.ID_BGP_GELIRKOD
from BGP_SERVIS_GELIRKOD GELIR
WHERE GELIR.ID_BGP_SERVIS=$P{SERVIS}


)OR($P{SERVIS} IS NULL))

SpaogoBI'ın Patlamaması için

Margin kullanmamalı sağ tıklayınca padding verilebilir.

Kontroller raporun ve bandın dışına taşmamalı

Hesaplamalar SQL üzerinde daha kolay

Tarih alanları ekrana getirirken  TO_CHAR(field,'DD/MM/YYYY') stringe çevirmeli

Oracle da Between '01/01/2012' and '02/02/2012' şeklinde string kullanmamalı
Oracle da Between TO_DATE('01/01/2012','DD/MM/YYYY')  and TO_DATE('02/02/2012','DD/MM/YYYY')  şeklinde kullanmalı
Bugün  >>>  new java.util.Date().format("dd.MM.yyyy")