انشاء تقارير JasperReports مع iReport ...مقال 9 _التعامل مع مصادر البيانات_ JavaBeans كمصدر بيانات.

اذهب الى الأسفل

 انشاء تقارير JasperReports مع iReport ...مقال 9 _التعامل مع مصادر البيانات_ JavaBeans كمصدر بيانات. Empty انشاء تقارير JasperReports مع iReport ...مقال 9 _التعامل مع مصادر البيانات_ JavaBeans كمصدر بيانات.

مُساهمة من طرف أحمد مناع في الجمعة سبتمبر 20, 2019 9:32 pm

أهلا وسهلا بكم إخواني الكرام 

بالإضافة إلى إستخدام قواعد البيانات و الجدوال #JTable لملئ التقارير بالبيانات، يتيح لنا المكتبة #JasperReports استخدام كائنات الـ Java القديمة _ (POJOs) أختصارا Plain Old Java Objects_ كمصادر بيانات ويتم إنشاء تلك الكائنات فى فئة تسمي #JavaBeans وهى فئة مخصصة تتيح للمستخدم الوصول للكائنات التى تحتويها من خلال عدد من أساليب "getter" و "setter" 

لنقم بإنشاء كائن Java يمكن استخدامه كمصدر بيانات لمثالنا باتباع الخطوات التالية :


1_إنشاء الفئة JavaBeans بإسم Student بها ثلاث كائنات id,name,job كما هو موضح :
الكود:

public class Student implements java.io.Serializable {
    
private int id;
private String name,job;

public void setId(int id)
 { this.id = id; }


public int getId()
 { return id; }




public void setName(String name)
 { this.name = name; }

public String getName()
 { return name; }



public void setJob(String job)
 { this.job= job; }

public String getJob()
 { return job; }

}


2_ إفتح قالب التقرير JRXML لانشاء الحقول كما يلي:


الكود:
<field name="id" class="java.lang.Integer">
 <fieldDescription><![CDATA[id]]></fieldDescription>
 </field>


 <field name="job" class="java.lang.String">
 <fieldDescription><![CDATA[job]]></fieldDescription>
 </field>


 <field name="name" class="java.lang.String">
 <fieldDescription><![CDATA[name]]></fieldDescription>
 </field>


3_ثم إنشاء مربعات النصوص :


الكود:
<textField>
 <reportElement x="257" y="61" width="100" height="20" uuid="e98f9aaa-93b1-4be2-a7bf-637004d8abfe"/>
 <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
 </textField>
 <textField>
 <reportElement x="383" y="96" width="100" height="20" uuid="73f60c6d-bc3e-4bfd-8596-31699e98a7ff"/>
 <textFieldExpression><![CDATA[$F{job}]]></textFieldExpression>
 </textField>
 <textField>
 <reportElement x="178" y="78" width="100" height="20" uuid="22419a2d-c4cd-47de-baa1-ac5c8b42f001"/>
 <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
 </textField>


ملحوظة :

يمكنك الاستغناء عن كتابة الشفرات فى الخطوة الثانية و الثالثة اعلاه و إستخدام الواجهة الرسومية لإنشاء حقول البيانات في ملف xml تلقائا  بدون كتابة اى شفرات على النحو التالى :


_استدعاء نافذة Report query

 انشاء تقارير JasperReports مع iReport ...مقال 9 _التعامل مع مصادر البيانات_ JavaBeans كمصدر بيانات. 454780793


 _ويتم إستدعاء تلك النافذة أما من خلال النقر على ايقونة query أو من خلال تحديد ايقونة التقرير وبالنقر على رز الفارة الايمن تظهر قائمة فاختر منها Edit Query...لتظهر لك نافذة Report query 


 انشاء تقارير JasperReports مع iReport ...مقال 9 _التعامل مع مصادر البيانات_ JavaBeans كمصدر بيانات. 721835210
_ من نافذة  Report query قم بتحديد التويب JavaBeans Datasource ومن خلال مربع النص class Name قم بكتابة اسم ملف JavaBeans ثم قم بالنقر على زر الامر read Attrbutes ليقوم بقراءة الحقول بالملف ثم أضف تلك الحقول للتقرير من خلال النقر على زر الامر add select filde ثم النقر ok كما فى الصورة التالية

 انشاء تقارير JasperReports مع iReport ...مقال 9 _التعامل مع مصادر البيانات_ JavaBeans كمصدر بيانات. 977447080


_الان ستجد حقول البيانات الموجودة فى الفئة كما فى الصورة التالية .... يمكنك سحب و إفلات الحقول الثلاثة الى التقرير كما هو موضح فى الصورة التالية :


 انشاء تقارير JasperReports مع iReport ...مقال 9 _التعامل مع مصادر البيانات_ JavaBeans كمصدر بيانات. 340922894



الخطوة الرابعة :إنشاء مجموعة بيانات التى سيتم تمريرها للتقرير وليكن بإسم fill_Data وذلك على النحو التالى :

الكود:

  private List<Student> data = new LinkedList<Student>();
 
  private  Collection fill_Data()
    {
      Student j = new Student();
     
      j.setId(1);
      j.setName("أحمد مناع");
      j.setJob("محاسب");
     
     
      j.setId(2);
      j.setName("سيد حامد");
      j.setJob("تاجر");
     
     
      j.setId(3);
      j.setName("محمود عبد الغني");
      j.setJob("محاسب");
     
        data.add(j);
        return data;
    }


الخطوة الخامسة :عرض و تشغيل التقرير وذلك بتمرير البيانات التى تم جلبها من مجموعة البيانات fill_Data الى الكائن JRBeanCollectionDataSource على النحو التالى :

الكود:

import java.io.InputStream;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import img1.Student;
import java.util.LinkedList;
import java.util.List;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class NewMain {

  private List<Student> data = new LinkedList<Student>();
 
  private  Collection fill_Data()
    {
      Student j = new Student();
     
      j.setId(1);
      j.setName("أحمد مناع");
      j.setJob("محاسب");
     
     
      j.setId(2);
      j.setName("سيد حامد");
      j.setJob("تاجر");
     
     
      j.setId(3);
      j.setName("محمود عبد الغني");
      j.setJob("محاسب");
     
        data.add(j);
        return data;
    }
   
  public  void FillReport(){
   
           
            try {
               
                //الحصول على مسار التقرير
                InputStream Report =this.getClass().getResourceAsStream("/report/pppp.jasper");
               
                //تعبئة التقرير من قاعدة البيانات باستخدام الكائن JRResultSetDataSource
                JasperPrint jasperPrint = JasperFillManager.fillReport(Report,null,new JRBeanCollectionDataSource(fill_Data()));
               
                //تشغيل وعرض التقرير
                JasperViewer.viewReport(jasperPrint,false);
               
               
            } catch (JRException ex) {
                Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
            }
 
  }
   
 
    public static void main(String[] args) {
       
      new NewMain().FillReport();
 
    }
}

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 968
النقاط : 201748
التقيم : 116
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى