الوقت/التاريخ الآن هو الثلاثاء مارس 19, 2024 9:41 am

5 نتيجة بحث عن jasperreports

انشاء تقارير JasperReports مع iReport ...مقال 10_التعامل مع مصادر البيانات _ملفات Excel كمصدر للبيانات

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

مازلنا مع مقالات إنشاء تقارير المكتبة تقارير #JasperReports مع الواجهة الرسومية #iReport وتعلمنا فى مقالات سابقة كيفية إستخدام قواعدة البيانات كمصدر لملئ بيانات التقرير الخاص بنا ليس ذلك فحسب بل تعلمنا كيفية إستخدام المكون #Jtable وايضا فئات #JavaBeans كمصادر لبيانات التقرير .

فى هذا المقال سنتعلم سويا كيفية إستخدام ملفات Excel كمصدر لبيانات التقرير الخاص بنا وذلك ببضع خطوات بسيطة :

1_ قم بالنقر على ايقونة Report Datasource

الوسم jasperreports على المنتدى منتدى مصر التقني 435614416

2_سيتم فتح مربع الحوار Connections / Datasource قم بالنقر على زر الامر New

الوسم jasperreports على المنتدى منتدى مصر التقني 553407284

3_سيتم فتح مربع حوار آخر من هنا ، حدد الخيار احد الخيارات التالية وانقر فوق "التالي".


  • Microsoft Excel(xls) data source ويتم تحديد هذا الخيار اذا كنت تستخدم إصدار قديم من الاكسل 2000 حتى 97
  • Microsoft Excel 2007(xlsx) data source ويتم تحديد هذا الخيار بدء من إصدار 2007 حتى 2010


وبما إننا نستخدم ملف أكسل 2007 فاننا سنحدد الخيار الثاني :

الوسم jasperreports على المنتدى منتدى مصر التقني 754240934


4_سوف تفتح نافذة أخرى.تريد منك تحديد بعض التفاصيل كما فى الصورة التالية :

الوسم jasperreports على المنتدى منتدى مصر التقني Excell+datasource2

حيث أن :

  • name :وضع اسم لمصدر البيانات لاستخداما فيما بعد
  • Excell file :فى هذه الخانة يتم تحديد مسار ملف الاكسل لقرائتة


بعد ذلك انقر فوق "Get Columns name from the first row" لبدء قراة الملف بداية من الصف الاول

5_قم باستدعاء نافذة Query Editor ثم أختر التويب Excell Datasource ثم قم بالنقر على رز الامر getfields from datasource لتجد الحقول كما فى الشكل التالى :

الوسم jasperreports على المنتدى منتدى مصر التقني Excell+datasource3

6_عد إلى منطقة تصميم iReport.وقم بسحب وإسقاط الحقول التي تريد استخدامها على اى منطقة بالتقرير و النتيجة :

الوسم jasperreports على المنتدى منتدى مصر التقني Excell+datasource4
من طرف أحمد مناع
في الثلاثاء سبتمبر 24, 2019 10:17 am
 
ابحث في: إنشاء التقارير JasperReports مع iReport
موضوع: انشاء تقارير JasperReports مع iReport ...مقال 10_التعامل مع مصادر البيانات _ملفات Excel كمصدر للبيانات
المساهمات: 2
مشاهدة: 977

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

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

بالإضافة إلى إستخدام قواعد البيانات و الجدوال #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>



[size=18]ملحوظة :[/size]

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


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

الوسم jasperreports على المنتدى منتدى مصر التقني 454780793


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


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

الوسم jasperreports على المنتدى منتدى مصر التقني 977447080


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

[size=16]
الوسم jasperreports على المنتدى منتدى مصر التقني 340922894
[/size]



الخطوة الرابعة :إنشاء مجموعة بيانات التى سيتم تمريرها للتقرير وليكن بإسم 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();
 
    }
}
من طرف أحمد مناع
في الجمعة سبتمبر 20, 2019 9:32 pm
 
ابحث في: إنشاء التقارير JasperReports مع iReport
موضوع: انشاء تقارير JasperReports مع iReport ...مقال 9 _التعامل مع مصادر البيانات_ JavaBeans كمصدر بيانات.
المساهمات: 1
مشاهدة: 999

انشاء تقارير JasperReports مع iReport ...مقال 7 _التعامل مع مصادر البيانات_قاعدة البيانات كمصدر للبيانات ..3_ملىء التقرير باستخدام الكائن JRResultSetDataSource

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

فى مقالات سابقة تكلمنا عن مصادر البيانات التى تستخدم فى استخراج بيانات التقرير من قاعدة بيانات علائقية Access ,MySql ,Oracl,mogo,SQL SERVER الخ , و أوضحنا أن ذلك يتم من خلال طريقتين :


  1. الاولى : بتضمين إستعلامات SQL في قالب تقرير JRXML سواء إن تم ذلك بإستخدام الشفرة أو تم ذلك عن طريق المعالج
  2. الثانية :  بتمرير البيانات من قاعدة البيانات إلى التقرير بإستخدام #JRResultSetDataSource


وقد قمنا بشرح الطريقة الاولى لذلك فى هذا المقال سنركز بالشرح على الطريقة الثانية وكيفية استخدام JDBC DataSources فى استخراج بيانات التقرير من قاعدة البيانات لذلك قبل أن نبدء ندعونا نفترض أن لدينا قاعدة بيانات باسم Employees وتحتوي على جدول باسم Info بالحقول التالية :


INTEGERId
VARCHARName
VARCHARJob


هذا الجدول يحتوى على البيانات التالية :


الوسم jasperreports على المنتدى منتدى مصر التقني 127532907

الفئة #JRResultSetDataSource هى احد الفئات التى توفرها المكتبة #JasperReports من خلال الواجهة JRDataSource لملْ و استخراج بيانات التقرير من قاعدة بيانات علائقية وذلك عن طريق تمرير الكائن java.sql.ResultSet اليها وذلك على النحو التالى :

الخطوة الاولى :إفتح ملف #xml لإنشاء الحقول #field التي سيتم ملؤها في وقت التشغيل من جدول قاعدة البيانات لاستخدامها فيما بعد و يجب أن تتطابق أسماء الحقول مع اسم العمود جدول البيانات أو الاسم المقابل له  في جملة الاستعلام SQL مع تحديد نوع بيانات الحقل int,string_على النحو التالى :

الكود:

<field name="ID" class="java.lang.Integer"></field>

 <field name="NAME" class="java.lang.String"></field>

<field name="JOB" class="java.lang.String"></field>



الخطوة الثانية :إنشاء العنصر #textField وهو العنصر الرسومي الذى يستخدم في عرض البيانات النصية الديناميكية في التقارير ويتم إنشائة باستخدام التعليمة <textField> بالشفرة التالية :

الكود:
<textField>
 <reportElement x="393" y="17" width="100" height="20"/>
 <textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
 </textField>
 <textField>
 <reportElement x="393" y="37" width="100" height="20"/>
 <textFieldExpression><![CDATA[$F{NAME}]]></textFieldExpression>
 </textField>
 <textField>
 <reportElement x="393" y="57" width="100" height="20"/>
 <textFieldExpression><![CDATA[$F{JOB}]]></textFieldExpression>
 </textField>


و يمكنك ملاحظة أن :

  • التعليمة <reportElement> التى تحدد و تشير إلى ارتفاع حقل النص ،العرض والإحداثيات داخل النطاق   x و y....الخ
  • التعليمة <textFieldExpression> التى تحدد حقول البيانات التي سيتم عرضها في هذا العنصر النصي باستخدام




الكود:
$ F {field_name}



، حيث field_name هو اسم الحقل الذى تم تعريفة فى الخطوة السابقة >>>وهكذا يكون ملف xml كما فى الشكل التالى وجاهز لاستقبال البيانات :

الوسم jasperreports على المنتدى منتدى مصر التقني 127452649

ملحوظة :

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

_ من نافذة #Report Inspector قم بتحديد  #Fields ثم النقر بزر الفارة الايمن لتظهر لك قائمة أختر منها الامر add Field كما فى الشكل التالى :
الوسم jasperreports على المنتدى منتدى مصر التقني 552574247

_سيظهر لك حقل باسم #field1 يمكنك تحديدة ومن نافذة الخصائص للحقول غير اسم الحقل باسم اعمدة جدول البيانات لديك أو باسم اعمدة الجدول فى جملة الاستعلام sql التى ستنفذ على النحو التالى :

الوسم jasperreports على المنتدى منتدى مصر التقني 470530950

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



الوسم jasperreports على المنتدى منتدى مصر التقني 340922894

الخطوة الثالثة والاخيرة :عرض و تشغيل التقرير وذلك بتمرير البيانات التى تم جلبها من قاعدة البيانات باستخدام الكائن java.sql.ResultSet إلى التقرير بتمرير الكائن  #ResultSet الى الكائن #JRResultSetDataSource على النحو التالى :

الكود:

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class NewMain {

  
    
   public  void FillReport(){
    
      
            
            String host = "jdbc:derby://localhost:1527/Employees";
            String username = "US";
            String password = "US";
            Connection con=null;
            
            
            try {
                
                //إنشاء نص الاتصال بقاعدةالبيانات
                con = DriverManager.getConnection( host, username, password );
                
                // إنشاء جملة الاستعلام
                String SQL = "select * from US.Info";
                
                // إنشاء كائن التنفيذ
                Statement stmt = con.createStatement( );
                
                
                // إنشاء الكائن ResultSet و تنفيذ الاستعلام
                ResultSet rs = stmt.executeQuery( SQL );
                
                //الحصول على مسار التقرير
                InputStream Report =this.getClass().getResourceAsStream("/report/pppp.jasper");
                
                //تعبئة التقرير من قاعدة البيانات باستخدام الكائن JRResultSetDataSource
                JasperPrint jasperPrint = JasperFillManager.fillReport(Report,null,new JRResultSetDataSource(rs));
                
                //تشغيل وعرض التقرير
                JasperViewer.viewReport(jasperPrint,false);
                
                
            } catch (SQLException ex) {
                Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
            } catch (JRException ex) {
                Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
            }
            

        
        
      
   }
    
  
    public static void main(String[] args) {
        
       new NewMain().FillReport();
  
    }
}
من طرف أحمد مناع
في الجمعة سبتمبر 20, 2019 9:57 am
 
ابحث في: إنشاء التقارير JasperReports مع iReport
موضوع: انشاء تقارير JasperReports مع iReport ...مقال 7 _التعامل مع مصادر البيانات_قاعدة البيانات كمصدر للبيانات ..3_ملىء التقرير باستخدام الكائن JRResultSetDataSource
المساهمات: 1
مشاهدة: 1711

انشاء تقارير JasperReports مع iReport ...مقال 3_إنشاء اول تقرير لك Static Report

أهلا بكم أخوانى الكرام

فى هذا المقال التعليمى سنتعلم سويا كيفية إعداد تقرير بسيط من تقارير المكتبة #JasperReports وذلك من خلال الواجهة الرسومية لانشاء تلك التقارير #iReport ...وقد تحدثنا فى مقال سابق عن كيفية تثبيت اضافات تلك المكتبة سواء من خلال محرر #NetBeans أو حتى من خلال التثبيت المستقل لبرنامج Jaspersoft Studio

الان ، دعني أريك ، كيفية إعداد تقرير بسيط Static Report _بمعنى انه لن يتم ملىء ببيانات من قاعدة البيانات_ و ذلك من خلال المحرر NetBeans....

1_ قم بفتح محرر NetBeans من قائمة مشروع ثم قم بالنقر على زر الفارة الايمن على الحزمة package التى تريد وضع التقرير بها ثم أختر من القائمة التى ستظهر الامر New ...ثم الامر  Empty Report أو يمكنك استخدام المعالج Report Wizard _سيتم مناقشة فى وقت لاحق_ كما فى الصورة التالية :

الوسم jasperreports على المنتدى منتدى مصر التقني Report1

 أذا لم يكن الامر Empty Report ظاهر بالقائمة يمكن استخدام الامر Other كما فى الصورة التالية :

الوسم jasperreports على المنتدى منتدى مصر التقني Figura31

 ليظهر لك المربع الحوارى التالى فاختر منه الامر Empty Report

الوسم jasperreports على المنتدى منتدى مصر التقني Figura41

2_قم بوضع اسم مناسب للتقرير ثم انقر على finsh كما فى الصورة التالية :

الوسم jasperreports على المنتدى منتدى مصر التقني Figura51

 ليظهر لك المكون الرسومي #iReport فى بيئة #NetBeans مع كافة الادوات المساعدة لانشاء تقريرك كما فى الشكل التالى :

الوسم jasperreports على المنتدى منتدى مصر التقني Figura6-mod


وهكذا نكون قد إنشائنا تقرير فارغ أو ملف بإمتداد JRXML

3_من القائمة Palette _القائمة رقم 4_ قم بسحب العنصر الرسومى Static Text الى منصة التقرير فى منطقة التفاصيل Detail

الوسم jasperreports على المنتدى منتدى مصر التقني Chapter4_4

4_ الان يمكن تحرير العنصر الرسومى Static Text وكتابة ما تريد ظهورة من بيانات فى التقارير أما بالنقر المزدوج عليه أم من نافذة الخصائص على النحو التالى :

الوسم jasperreports على المنتدى منتدى مصر التقني 558306339


5_ بعد ما تم الانتهاء من كتابة بيانات التقرير الخطوة الاخيرة هو تجميع التقرير أو بمعنى اوضح عمل #Compiling للملف JRXML حيث أنه بعد كل الخطوات السابقة قد قمنا بإنشاء تقرير أو ملف بإمتداد #JRXML لا يمكن استخدام تلك الملفات مباشرة لعرض التقارير. لذلك يجب أن يتم تجميعها
في شكل ثنائي تسمى قوالب التقرير المترجمة و تكون بإمتداد jasper

و هناك طريقتان لتجميع ملفات JRXML إلى ملفات Jasper إما القيام بذلك برمجيًا ، أو يمكننا القيام بذلك من خلال مهمة ANT المتوفرة بواسطة المكتبة JasperReports.

الطريقة الاولى :تحويل قالب التجميع JRXML الى قالب الترجمة Jasper برمجيا ويتم ذلك باستخدام الاسلوب compileReportToFile التابع للفئة JasperCompileManager على النحو التالى :
الكود:


JasperCompileManager.compileReportToFile(String sourceFileName,
String destFileName).


حيث أن :
_sourceFileName ....مسار ملف التجميع JRXML
_destFileName ..... مسار الاخراج لملف الترجمة Jasper

مثال :
الكود:
JasperCompileManager.compileReportToFile(
            "designFile.jrxml", //Relative or absoulte path to the .jrxml file to compile
            "compiled.jasper"); //Relative or absolute path to the compiled file .jasper



الطريقة الثانية :من خلال مهمة ANT المتوفرة بواسطة المكتبة JasperReports....ويتم ذلك أما من خلال تحديد التقرير من نافذة Report Inspector ثم النقر بزر الفارة الايمن ومن القائمة التى ستظهر اختر منها الامر Compile Report أو النقر مباشرة على ايقونة التجميع كما فى الصورة التالية :
الوسم jasperreports على المنتدى منتدى مصر التقني 610103441

وهكذا نكون قد انتهيا من تصميم و ترجمة تقرير بسيط الى اللقاء فى مقال قادم عن كيفية تشغيل و عرض التقارير من خلال تطبيقات الجافا
من طرف أحمد مناع
في الإثنين سبتمبر 16, 2019 9:22 pm
 
ابحث في: إنشاء التقارير JasperReports مع iReport
موضوع: انشاء تقارير JasperReports مع iReport ...مقال 3_إنشاء اول تقرير لك Static Report
المساهمات: 0
مشاهدة: 1135

انشاء تقارير JasperReports مع iReport ...مقال 5 _التعامل مع مصادر البيانات_قاعدة البيانات كمصدر للبيانات ..1_تضمين إستعلامات SQL بالشفرة

بسم الله الرحمن الرحيم

أهلا و سهلا بكم إخوانى الكرام .... فى دروس سابقة تحدثنا عن كيفية انشاء تقارير #JasperReports مع iReport وقمنا بانشاء تقرير بسيط و عرض و تشغلية من خلال تطبيقات الجافا وهذا التقرير كان لا يحتوي الا على بعض النصوص الثابتة أو بمعنى اوضح لا يحتوي على بيانات ديناميكية لكن اذا اردنا غنشاء تقارير دينامكية المحتوي فلابد أن نستخدم مصارد البيانات #datasources

_مصدر البيانات datasources :هو ما يستخدمه المكتبة #JasperReports للحصول على البيانات لتوليد تقارير دينامكية المحتوي وتوجد عدة مصادر يمكنك استخدامها وهى على النحو التالى :



  • Databases

  • TableModels

  • Java objects

  • XML fles



و سنناقش في هذا المقال كيفية استخدام قواعد البيانات databases كمصدر بيانات datasources . أما فى المقالات التالية سوف يناقش الانواع الاخرى من مصادر البيانات

توليد تقارير ديناميكي باستخدام قاعدة البيانات كمصدر للبيانات


هناك طريقتان لإنشاء تقارير من قاعدة البيانات وهما :


  1. الاولى : بتضمين إستعلامات SQL في قالب تقرير JRXML 
  2. الثانية :  بتمرير البيانات من قاعدة البيانات إلى التقرير بإستخدام JRResultSetDataSource 



فى هذا المقال سنشرح الطريقة الاولى _أما الطريقة سنتعرف عليها فى مقالات لاحقة _لذلك قبل أن نبدء ندعونا نفترض أن لدينا قاعدة بيانات باسم Employees وتحتوي على جدول باسم Info بالحقول التالية :


INTEGERId
VARCHARName
VARCHARJob


هذا الجدول يحتوى على البيانات التالية :


الوسم jasperreports على المنتدى منتدى مصر التقني 127532907


تضمين إستعلام SQL في قالب تقرير JRXML  ويتم ذلك بطريقتين:

1_الطريقة الاولى : تضمين إستعلام SQL برمجيا بإستخدام الشفرة 
2_الطريقة الثانية : تضمين إستعلام SQL بإستخدام المعالج         


وفى هذا المقال سنركز على الطريقة الاولى 

تضمين إستعلام SQL في قالب تقرير JRXML بإستخدام الشفرة :ويتم ذلك باتباع الخطوات التالية :

الخطوة الاولى :أذهب الى التويبب XML لتفتح لك ملف xml لكتابة بعض الشفرات في قالب تقرير #JRXML كمافى الصورة التالية :

الوسم jasperreports على المنتدى منتدى مصر التقني 858605804

الخطوة الثانية :إستخدام التعليمة <queryString> لانشاء جملة الاستعلام SQL وذلك على النحو التالى :

الكود:

<queryString>
 
<![CDATA[select * from US.INFO]]>

 </queryString>



الخطوة الثالثة :إنشاء متغيرات الحقول field التي يتم ملؤها في وقت التشغيل من جدول قاعدة البيانات لاستخدامها فيما بعد و يجب أن تتطابق أسماء الحقول مع اسم العمود جدول البيانات أو الاسم المقابل له  في جملة الاستعلام SQL مع تحديد نوع بيانات الحقل int,string_على النحو التالى :
 
الكود:
<field name="ID" class="java.lang.Integer">
 </field>


 <field name="NAME" class="java.lang.String">
 </field>


 <field name="JOB" class="java.lang.String">
 </field>



ليصبح ملف xml كما فى الشكل التالى :

الوسم jasperreports على المنتدى منتدى مصر التقني 761700903

الخطوة الرابعة :إنشاء العنصر textField وهو العنصر الرسومي الذى يستخدم في عرض البيانات النصية الديناميكية في التقارير ويتم إنشائة باستخدام التعليمة <textField> ويجب أن تحتوي داخل تلك التعليمة على الاتي:


  •  التعليمة <reportElement> التى تحدد و تشير إلى ارتفاع حقل النص ،العرض والإحداثيات داخل النطاق   x و y....الخ
  • التعليمة <textFieldExpression> التى تحدد حقول البيانات التي سيتم عرضها في هذا العنصر النصي باستخدام
    الكود:
    $ F {field_name}

    ، حيث field_name هو اسم الحقل الذى تم تعريفة فى الخطوة السابقة وذلك على النحو التالى :


الكود:
<textField>
 <reportElement x="393" y="17" width="100" height="20"/>
 <textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
 </textField>
 <textField>
 <reportElement x="393" y="37" width="100" height="20"/>
 <textFieldExpression><![CDATA[$F{NAME}]]></textFieldExpression>
 </textField>
 <textField>
 <reportElement x="393" y="57" width="100" height="20"/>
 <textFieldExpression><![CDATA[$F{JOB}]]></textFieldExpression>
 </textField>



وهكذا يكون ملف xml كما فى الشكل التالى وجاهز لاستقبال البيانات :

الوسم jasperreports على المنتدى منتدى مصر التقني 509546682

الخطوة الرابعة و الاخيرة :عرض و تشغيل التقرير وتتطلب تلك الخطوة الاتصال اولا بقاعدة البيانات ثم تمرير كائن الاتصال الى التقرير ...حيث أن JasperReports توفر الكائن #JasperFillManager الذى يقوم بملىء التقرير من خلال الطريقة #fillReport بتمرير التقرير المراد تعبئة بياناته وكائن الاتصال و ذلك على النحو التالى :

الكود:

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
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;

public class NewMain {

  
    
   public  void FillReport(){
    
    String host = "jdbc:derby://localhost:1527/Employees";
    String username = "US";
    String password = "US";
    Connection con=null;
        
        try {
            
            //إنشاء نص الاتصال بقاعدةالبيانات
             con = DriverManager.getConnection( host, username, password );
            
            //الحصول على مسار التقرير
            InputStream Report =this.getClass().getResourceAsStream("/report/pppp.jasper");
            
            //تعبئة التقرير من قاعدة البيانات  
            JasperPrint jasperPrint = JasperFillManager.fillReport(Report,null,con);
            
            //تشغيل وعرض التقرير
            JasperViewer.viewReport(jasperPrint,false);
              
              
        } catch (SQLException ex) {
            Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
        } catch (JRException ex) {
            Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
        }
        
      
   }
    
  
    public static void main(String[] args) {
        
       new NewMain().FillReport();
  
    }
}



و النتيجة عند التشغيل :

الوسم jasperreports على المنتدى منتدى مصر التقني 323562739



أنتهى المقال 
تحياتى
من طرف أحمد مناع
في السبت فبراير 15, 2014 11:44 am
 
ابحث في: إنشاء التقارير JasperReports مع iReport
موضوع: انشاء تقارير JasperReports مع iReport ...مقال 5 _التعامل مع مصادر البيانات_قاعدة البيانات كمصدر للبيانات ..1_تضمين إستعلامات SQL بالشفرة
المساهمات: 2
مشاهدة: 3365

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

انتقل الى: