- Java JDK kurulur.
- JAVA_HOME ortam değişkeni set edilir.(google :) )
- Jasper Reports'un ayarları C:\Users\?????????\.ireport klasöründe saklanıyor. Bu klasör başka bir bilgisayara taşınırsa ayarlar, connection bilgileri vb. de o bilgisayara taşınmış olur. Bu yüzden ayarlarla uğraşmamak için ben bu klasörün yedeğini alıyorum.
iReports Kurulumu
SpagoBI Multi-Select Parameter (Çoklu Seçim)
(INSTR($P{GELIRKODU},''''||KOD.ID||'''')>0)
!Bunda $P{GELIRKODU} String olmalı.
(INSTR($P{GELIRKODU},''''||KOD.ID||'''')>0)
yada
Parametreden gelen çoklu değeri kullanabilmek için sql sorgusunu şöyle oluşturmalıyız.
SELECT * FROM XXX WHERE FIRMAID IN ( $P!{FIRMA} )
Ünlem işareti parametrenin bir string olarak değil sql'in parçası olarak çalışmasını sağlıyor. Kullanabilmemiz için parametreye default değer vermemiz gerekir. Mesela: "0"
Boş rapor göstermemek için
- Rapor Properties'ten When No Data alanına No Data Section seçilir.
- Report Inspectordan No Data Section sağ tıklanıp Show seçilir.
- Bu band içeriği istendiği gibi düzenlenir.
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
- 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"
- örnek
- 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.
SpagoBI'da subreportları ana raporda linklememiz gerekli. Bunu için ana raporun Detay ekranında sağüst köşedeki Link buttonuna tıklarız.
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")
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ı
Kaydol:
Kayıtlar (Atom)