Merhaba arkadaşlar geçen dersimizde parametrik rapor için
bir IReports’da bir rapor oluşturmuştuk ve parametremizi belirlemiştik.
Öncelikle database kısmında bir listeleme işlemi
gerçekleştireceğim. Listeleceğim tablo Departman
tablosu
public static
List<DepartmanDomain> listele()
{
List<DepartmanDomain> liste = new
ArrayList<DepartmanDomain>();
Connection conn = getConnection();
try {
Statement stmt =
conn.createStatement();
ResultSet rs =
stmt.executeQuery("SELECT * FROM departman");
while
(rs.next()) {
DepartmanDomain
siradakiDepartmanDomain = new DepartmanDomain();
siradakiDepartmanDomain.setId(rs.getInt("id"));
siradakiDepartmanDomain.setDepartmanAdi(rs
.getString("departmanAdi"));
liste.add(siradakiDepartmanDomain);
}
stmt.close();
conn.close();
} catch
(SQLException e) {
e.printStackTrace();
}
DepartmanDao class’ın
da Departman tablosunu kısaca bu şekilde listeletiyoruz.
Ardından bu listeleme
methodunu Combobox’ımızın içerisinde çağırıyoruz.
final
JComboBox departmanBox = new JComboBox(DepartmanDao.listele()
.toArray());
Resim1;
Listeleme işlemimizi
gerçekleştirdikten sonra Button nesnesi oluşturuyoruz.
JButton departmanButton
= new JButton("Departman Raporu");
Ardından oluşturduğumuz bu buton nesnesine action listener
veriyoruz aşağıdaki gibi.
departmanButton.addActionListener(new
ActionListener() {
public void
actionPerformed(ActionEvent arg0) {
// Parametrik
raporun yazılacağı kısım.
}
});
Ardından
oluşturduğumuz bu action listener’ın içini dolduruyoruz aşağıdaki gibi.
departmanButton.addActionListener(new
ActionListener() {
public void
actionPerformed(ActionEvent arg0) {
Connection baglanti =
RaporDbConfig.getConnection();
try {
DepartmanDomain
secilenDepartmanDomain = (DepartmanDomain) departmanBox
.getSelectedItem();
System.out.println(secilenDepartmanDomain.getId());
Map
model = new HashMap();
model.put("id",secilenDepartmanDomain.getId());
JasperPrint print = JasperFillManager.fillReport("raporlar/departmanParams/departmanRaporu.jasper",model,
baglanti);
JasperViewer.viewReport(print, false);
baglanti.close();
} catch
(JRException e1) {
// TODO
Auto-generated catch block
e1.printStackTrace();
} catch
(SQLException e1) {
// TODO
Auto-generated catch block
e1.printStackTrace();
}
}
});
Kısaca parametrik
rapor için yukarıda ki işlemler yapıldı bu işlemleri açıklayacak olursak;
Connection baglanti = RaporDbConfig.getConnection();
Raporumuzun çalışması
için doğru database , kullanıcı ve şifresi gerekmektedir. Bu yüzden Connection nesnesi
oluşturuyoruz sonra RaporDbConfig.getConnection(); methodunda bulunan kullancı
adı şifre ve database yolunu belirtiyoruz ardından;
DepartmanDomain
secilenDepartmanDomain = (DepartmanDomain) departmanBox
.getSelectedItem();
DepartmanBox nesnesini DepartmanDomain ile cast ediyoruz. Bir
önceki dersimiz olan(JCombobox'ta
Database'den Veri Çekmek ve Bu Listelenen Verilerinin Sütununu Görmek.)
adlı makalemizde combobox da bulunan verilerinin sutununu öğreniyorduk. İşte burada
öğrendiğimiz tabloda ki id’yi tespit ediyoruz.
Sonra tespit edilen
bu id’yi
System.out.println(secilenDepartmanDomain.getId());
İle test ediyoruz doğru
buluyor mu bulmuyor mu diye. Ardından;
Çalıştığından emin
olduktan sonra
Map model
= new HashMap(); Nesnesini oluşturuyoruz.
Sonra oluşturduğumuz
bu nesnenin içerisine departmanBox’ta id’sini tespit ettiğimiz nesneimizi
import ediyoruz.
model.put("id",secilenDepartmanDomain.getId());
Ardından;
JasperPrint print = JasperFillManager.fillReport("raporlar/departmanParams/departmanRaporu.jasper",model,
baglanti);
Burada
JasperPrint kütüphanesinde yer alan JasperFillMager.fillReport() metonun
içersine rapor konumuzu ve id’yi tespit ettiğimiz Map nesnesinden türetilmiş
model nesnemizi ve connection nesnesinden türettiğimiz baglanti nesnesini atıyoruz.
Ardından;
JasperViewer.viewReport(print,
false);
Methodunun içerisine
JasperPrint nesnesini atıyoruz. Sonra durumunu false Yapıyoruz false’un Amacı rapor kapandığında program da
kapanmasın.
Ardından Connection’ımızı kapatıyoruz.
baglanti.close();
Kısaca
parametrik rapor böyle alınıyor çıktısı aşağıda ki resimdedir.
Resim2
Not Bu Makale
Emrah DEDEOĞLU Tarafından yazılmıştır, içerisindeki örnekler denenmiştir ve
olumlu sonuçlar alınmıştır.
gözünün yağını yiyim kapat şu siteyi rezillik resmen tasarımı düzelt veya; insan utanıyor Türkiye yazmış birde dalga geçer gibi site isminin hakkını veren bi tasarım yap :D
YanıtlaSilSen daha iyisini yap bizde girip senden öğrenelim. Bide korkmadan şu gerçek adınıda bir görelim kimmiş bu ergen yorumu yapan
SilEmrah bey cevabınız güzel.. daha iyisini yapsın genç. durmak yok hizmete devam.. şuana kadar bulduğum ireport anlatan en iyi türkçe kaynak sizsiniz. Teşekkürler
YanıtlaSilRica ederim sercan bey. Arada çıkıyor bu türden kişiler.
SilGeneldede hazırcı zihniyet bu yorumları yapıyor.
Oysa bir bilseki biz kendisine balık yemeyi değil balık tutmayı öğretiyoruz.