Rapor tanımlarında kendi oluşturduğumuz sql cümleciklerini kullanarak rapor oluşturabiliriz.
Bunun için yapılması gereken işlem adımları;
1 - Projemizin üzerinde veya içersinde sağ klik > New > Other seçeneğine tıkladığımızda,
gelen New Select a Wizards ekranından Logo Platform Tailor klasörü altından
LPT Report Layout alanını seçip “Next” Butonuna tıklarız.
2 - Açılan “New Custom Report Wizard” ekranından File name kısmına
Rapor ismini tanımlayıp "Next" buttonuyla ilerleriz.
3 - Gelen ekran üzerinde hiçbir değişiklik yapmadan “Next” butonuyla ilerleriz.
4 - Report Template and Handler Ekranından rapor adını ve açıklamasını girip tipini seçeriz, bu dokümanda Query Independent Report anlatıldığından o alanı seçip “Next” butonuyla ilerlenir.
5 - Son olarak Rapora bağlı java class ismi isteğe bağlı olarak değiştirilebilir veya sistemin oluşturduğu isme dokunmadan “Finish” butonuyla rapor tasarımı ve class’ı oluşturulur.
6 - Oluşturulan rapor tasarım ekranında boş bir alana tıklayıp resimde belirtilen UserVariables üzerinden “Report Variables” ekranını açarak kendi alanlarımızı tanımlarız.
7 - Resimde belirtilen “Available Variables” alanından section üzerine kendi tanımladığımız alanları sürükleyip ekleriz.
8 - Rapor tasarımında “Available Variables” ekranından alanlarımızın id'lerini öğrenebiliriz, Id numaraları kod kısmında bizim bu alanlara değer atamamızı sağlıyacaktır.
9 - Section’nın boş bir alanına tıklayıp sectionId sini öğrenebiliriz buda bize kod içerisinde göstermek istediğimiz sectionları belirtmek için gerekli olacaktır.
10 - Rapora ait sınıfı açtığımızda Oluşturulan canPrintSections metodunun geri dönüş değerini true olarak değiştiririz.
@Override
public boolean canPrintSections() {
// TODO Auto-generated method stub
return true;
}
11 - ExecuteReportDoc metodunu override edip içerisinde metodumuzda göstermek istediğimiz dataları queryle çekip raporda tanımladığımız id numaralarına göre istediğimiz alanlara setVarValue(id numarası , değer) metodu üzerinden set edebiliriz, printSection() metodu ile rapor üzerinde alanlarımızın bulunduğu section numarasını set edip görüntülenmesini sağlarız. Kod içerisinde belirtilen for döngüsünün size’ı kadar belirtilen section gösterilecektir.
@Override
public boolean executeReportDoc(JLbsReportRunParams runParams) {
QueryParams queryParams = new QueryParams();
queryParams.setCustomization(ProjectGlobals.getM_ProjectGUID());
QueryBusinessObjects items = new QueryBusinessObjects();
try {
String sqlText = "SELECT COUNT(CARDTYPE) AS KART_SAYISI, CARDTYPE AS KART_TIPI FROM U_001_ITEMS GROUP BY CARDTYPE";
m_Context.getServerQueryFactory().executeSelectQuery(sqlText,queryParams, items, -1);
//select("CQStudentBrowser", queryParams , items, -1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(items.size()>0)
{
for(int i=0; i<items.size();i++)
{
QueryBusinessObject item = items.get(i);
Integer cardCount = QueryUtil.getIntegerProp(item,"KART_SAYISI");
Integer cardType = QueryUtil.getIntegerProp(item, "KART_TIPI");
setVarValue(5000005, cardCount);
setVarValue(5000004, cardType);
printSection(1);
}
}
return super.executeReportDoc(runParams);
}
12 - Son olarak raporu Tree üzerinde resimde belirtildiği gibi istediğimiz yere konumlarız. Projeyi deployedebiliriz.