الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل يمكن ireport عمل تقرير crosstab كالمبين في الصورة التالية (الصورة داخل الموضوع )

بدأه rohaili في 23 يناير 2011 · 30 رد · 4,183 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

هل يمكن ل ireport عمل تقرير crosstab كالمبين في الصورة التالية

post-63809-023823200 1295798797_thumb.jp

مرفق قاعدة بيانات

وجزاكم الله خيرا

crosstab mawad.zip

المرفقات
1.jpg

تم تعديل هذه المشاركة بواسطة rohaili في 23 يناير 2011 في 19:15

300_130.gif

#2
rohaili كتب:

السلام عليكم ورحمة الله وبركاته

هل يمكن ل ireport عمل تقرير crosstab كالمبين في الصورة التالية

وعليكم السلام ورحمه الله وبركاته

اكيد ان شاء الله

يمكنك الاطلاع على هذه الروابط للمساعده

أدوات التقارير:

درس بسيط عن إنشاء التقارير في جافا

Jasper Report, شرح أداة التقارير في الجافا

دروس بسيطة ومفيدة عن التقارير Jasperreport

طريقة اضافة method في JasperReport

استخدام المكتبات داخل التقرير Jasper Report

مثال بسيط جدا لطباعة Pdf باستخدام Ireport

كيف أعمل تقرير crosstab كالجدول المرفق باستخدام JasperReport

بالتوفيق

Software Developer
Mahmoudkelany.com


 

#3

السلام عليكم ورحمة الله وبركاته

جزاك الله خيرا

يبدو أني لم أشرح المشكلة جيدا انظر الى الصورة التالية

post-63809-069992900 1295806168_thumb.jp

الصف الاول يحتوي أسماء المواد وهذا أمره سهل عن طريق crosstab لكن الصف الثاني المحتوي على نوع المادة لم استطع اضافته

العمود الاول المحتوي على بيانات الطالب كل ثلاثة خلايا (ثلاث صفوف) لطالب واحد وبجوارها العمود الثاني المحتوي على الاشهر ، لم استطع اضافتها أيضا

المرفقات
2.jpg

300_130.gif

#4

مبدئيا ..

هل فكرت بان تكون الصفوف التي تحتوي رقم ، الاسم الاول والاب ، اسم الجد والعائله

في subreport

#5

جزاك الله خيرا

جربت فلم تنجح محاولتي

فكرت بطريقة أخرى :

أن يكون التقرير عادي وليس crosstab وبهذه الطريقة يمكن حل مشكلة الرقم والاسماء والاشهر لكن كيف أنشأ اعمدة بعدد المواد أي يكون عدد الاعمدة متغير بحسب المواد الموجودة في الجدول

300_130.gif

#6
rohaili كتب:

جزاك الله خيرا

جربت فلم تنجح محاولتي

فكرت بطريقة أخرى :

أن يكون التقرير عادي وليس crosstab وبهذه الطريقة يمكن حل مشكلة الرقم والاسماء والاشهر لكن كيف أنشأ اعمدة بعدد المواد أي يكون عدد الاعمدة متغير بحسب المواد الموجودة في الجدول

يمكنك بناء التقرير على JRBeanDataSource او java beans وبهذا تتحكم فى البيانات المرسلة للتقرير


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#7

جزاك الله خيرا

هل يمكن أن تبين لي البداية لمثل هذا الحل

300_130.gif

#8

عزيزى رحيلى

هذا ما استطعت الوصول اليه

post-165385-022638100 1295942059_thumb.p

قمت بالتعديل على قاعدة البيانات

وقمت بعمل 3 تقارير واستخدام التقارير المتداخلة subreport

حمل الملفات المرفقة وقم بتشغيل التقرير report1

reports.rar

افدنا بالنتيجة

المرفقات
untitled2.PNG

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 25 يناير 2011 في 11:02


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#9

جزاك الله خيرا

ما أردته وجدته في تقريرك report2 وبعد الإضافة عليه أصبح كما ترى مختلف عما كنت أريده في أول الموضوع ولكنه يقوم بالمهمة على أكمل وجه

post-63809-089065000 1295964216_thumb.jp

والسؤال الآن كيف اجعل الاشهر مرتبة من اعلى لأسفل من يناير الى ابريل ، وكذلك المواد اريد ترتيبها من اليسار لليمين حسب ترتيبها في قاعدة البيانات دين ثم عربي ثم انجليزي ثم جغرافيا ؟

كيف اظهر نتيجة الشهر ابريل في التقرير رغم عدم وجودها الجدول result (اريدها تظهر صفر مثلا ) كذلك كلمة null اريدها تظهر صفر أو تبقى فارغة ؟

والسؤال الثالث كيف اعرف متغير من list واضع فيه القيم التالية مثلا (محرم ، صفر ، ربيع ) أي تكون هذه القيم ثابتة في التقرير ولا تمرر له من الخارج ؟

مرفق التقرير

وجزاك الله خيرا

report2.zip

المرفقات
3.jpg

300_130.gif

#10

حاولت حتى وصلت للشكل التالى

post-165385-002985500 1296065508_thumb.p

بالنسبة الى القائمة list فهى سهلة ولكن وضح لى اكثر كيف تريد ان تستخدمها فى التقرير

سأعد لك مثال بسيط

New folder.rar

تحياتى

المرفقات
Untitled11.png

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 27 يناير 2011 في 12:20


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#11

عمموو محمد

انا حاولت اعمل تقرير كدا

لكن مش عارف اعمل ايه

كتبت الكود التالى

import java.sql.*;
import java.util.HashMap;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author Mahmoud Kelany
 */
public class Main {

	private static String driver = "com.mysql.jdbc.Driver";
	private static String url = "jdbc:mysql://localhost:3306/db";
	private static String username = "root";
	private static String password = "root";
	private static Connection connection;

	public static void main(String[] args) {
    	try {
        	Class.forName(driver);
        	connection = DriverManager.getConnection(url, username, password);
        	String JasperPath = "d:/myFirstReport.jasper";
        	JasperPrint jp = JasperFillManager.fillReport(JasperPath, new HashMap(), connection);
        	JasperViewer.viewReport(jp);
    	} catch (Exception ex) {
        	ex.printStackTrace();
    	}
	}
}

علشان اشغل التقرير

لكن الكود بيقولى الخطا دا

net.sf.jasperreports.engine.JRRuntimeException: Unknown hyperlink target 0
    	at net.sf.jasperreports.engine.JRHyperlinkHelper.getLinkTarget(JRHyperlinkHelper.java:269)
    	at net.sf.jasperreports.engine.base.JRBaseTextField.normalizeLinkTarget(JRBaseTextField.java:313)
    	at net.sf.jasperreports.engine.base.JRBaseTextField.readObject(JRBaseTextField.java:377)

ودا التقرير

myFirstReport.rar

مش عارف ايه الخطأ ف كدا

Software Developer
Mahmoudkelany.com


 

#12
Mahmoud Kelany كتب:

انا حاولت اعمل تقرير كدا

لكن مش عارف اعمل ايه

مش عارف ايه الخطأ ف كدا

هههههههههههههه

حبيب قلبى الحل بسيط جدا لكن مش هأجاوبك عليه الا عندما تكتب هذا السؤال فى موضوع جديد وترصد له 20 نقطة (استغلال ههههههه)

-----------------------------------------------------------------

لأ طبعا ياحودة

المشكلة فى نقص المكتبات سأرفعها الى mediafire وارسل الرابط

شد حيلك

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 27 يناير 2011 في 13:25


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#13
MOHAMED FATHEI كتب:

هههههههههههههه

حبيب قلبى الحل بسيط جدا لكن مش هأجاوبك عليه الا عندما تكتب هذا السؤال فى موضوع جديد وترصد له 20 نقطة (استغلال ههههههه)

ولا يهمك تحت امرك اللى انت عاوزه نحطلك 100 مش 20 بس :)

-----------------------------------------------------------------

لأ طبعا ياحودة

المشكلة فى نقص المكتبات سأرفعها الى mediafire وارسل الرابط

ما هى عندى المكتبات بس انا وضعت واحده بس ههههههه

ممكن تقول اسماء المكتبات المهمه بس علشان مش احط المكتبات كلها

شد حيلك

حاضر هانت فاضل يوم السبت بس :)

Software Developer
Mahmoudkelany.com


 

#14

انا حطيت كل المكتبات بس طلع لى خطأ

وبعدين كان عندى مشروع من بتوعك بتاع نظام التسجيل حضور وغياب

فاخدت ملفات الجار منه واشتغل الحمدلله

الموضوع دا كبير وانا عاوز ادخل فيه بتعمق اكتر

انا هافضى ليك يوم السبت ونشوف ههههههههه

Software Developer
Mahmoudkelany.com


 

#15

جزاك الله خيرا

حل رائع جدا ، لقد استخدمت \n لجعل الاسم في سطر جديد ولكن عند حفظ الملف بصيغة اكسل وجدت الاسم في سطر جديد في نفس خلية الرقم

وانا اريده أن يكون في الخلية التي تحت الرقم ،

post-63809-087062600 1296537614_thumb.jp

لذلك سوف اكتفي بالحل السابق فهو يقوم بالمهمة على اكمل وجه والسؤال الان :

1 - كيف اعرف مصفوفة تحتوي على ارقام او اسماء داخل التقرير (لا اريد تمريرها للتقرير ) لتحل محل المجموعة الثانية من مجموعات الصفوف أي محل اسماء الاشهر

2 - كيف ارتب اسماء الاشهر حسب ترتيبها في الجدول في قاعدة البيانات

3 - كيف اجعل النتائج غير الموجودة تظهر كصفر

وجزاك الله خيرا

المرفقات
1.jpg

تم تعديل هذه المشاركة بواسطة rohaili في 1 فبراير 2011 في 08:21

300_130.gif

#16

سأتكلم من وجهة نظر تقارير و SQL ولا أعرف إن كان الأمر ممكناً في ireport أو لا

يمكنك أن تقوم بالسؤال الثاني باستخدام order by في لغة SQL

يمكنك أن تقوم بالسؤال الثالث باستخدام الدالة nvl (أنا أعرف أنها موجودة في oralce ولست متأكد من وجودها لدى الآخرين)

أو باستخدام case when ويمكنك البحث عن صيغتها في SQL

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#17

مرحبا بالجميع

عذرا للتأخير بسبب الاحداث الاخيرة فى مصر

عزيزى رحيلى

لقد نجحت فى ترتيب الاشهر كما هى فى قاعدة البيانات

وكذلك ترتيب المواد أيضا

وقمت بعمل فئة أيضا تحل لك مشكلة الاشهر الهجرية او الميلادية و اسماء المواد

import java.util.Hashtable;

public class MyClass {

 private static final Hashtable<String, String> M_MONTHS = new Hashtable<String, String>();
 private static final Hashtable<String, String> H_MONTHS = new Hashtable<String, String>();
 private static final Hashtable<String, String> MAWAD = new Hashtable<String, String>();

 private static void fillM_MONTHS() {
  M_MONTHS.put("1", "يناير");
  M_MONTHS.put("2", "فبراير");
  M_MONTHS.put("3", "مارس");
  M_MONTHS.put("4", "أبريل");
  M_MONTHS.put("5", "مايو");
  M_MONTHS.put("6", "يونيو");
  M_MONTHS.put("7", "يوليو");
  M_MONTHS.put("8", "أغسطس");
  M_MONTHS.put("9", "سبتمبر");
  M_MONTHS.put("10", "أكتوبر");
  M_MONTHS.put("11", "نوفمبر");
  M_MONTHS.put("12", "ديسمبر");
 }

 private static void fillH_MONTHS() {
  H_MONTHS.put("1", "محرم");
  H_MONTHS.put("2", "صفر");
  H_MONTHS.put("3", "ربيع أول");
  H_MONTHS.put("4", "ربيع ثانى");
  H_MONTHS.put("5", "جماد أول");
  H_MONTHS.put("6", "جماد ثانى");
  H_MONTHS.put("7", "رجب");
  H_MONTHS.put("8", "شعبان");
  H_MONTHS.put("9", "رمضان");
  H_MONTHS.put("10", "شوال");
  H_MONTHS.put("11", "ذو القعدة");
  H_MONTHS.put("12", "ذو الحجة");
 }

 private static void fillMawad() {
  MAWAD.put("10", "دين");
  MAWAD.put("20", "عربى");
  MAWAD.put("30", "انجليزى");
  MAWAD.put("40", "جغرافيا");
 }

 public static final String getM_Month(String index) {
  if (M_MONTHS.isEmpty()) {
   fillM_MONTHS();
  }

  return M_MONTHS.get(index);
 }

 public static final String getH_Month(String index) {
  if (H_MONTHS.isEmpty()) {
   fillH_MONTHS();
  }

  return H_MONTHS.get(index);
 }

 public static final String getMada(String index) {
  if (MAWAD.isEmpty()) {
   fillMawad();
  }

  return MAWAD.get(index);
 }

}

قم باضافة المكتبة jar الموجودة فى المرفقات الى classpath الخاص بالبرنامج ireport

اذا لم تعرف كيف سأخبرك

ثم قم بتشغيل التقرير report22 بعد التعديلات التى تمت عليه

ولاحظ ترتيب الاشهر والمواد كما تريد

بعد ذلك يمكنك التعديل على الفئة MyClass كما تريد ثم اعادة ترجمتها compile واضافتها الى المكتبة mylib.jar

بدلا من القديمة ثم استخدامها فى البرنامج بدلا من المكتبة الحالية التى صنعتها كمثال للحل

على كل انا بانتظار ردك

تقارير.rar

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#18

جزاكم الله خيرا

استخدمت order by لكن النتيجة لم تتغير

أما nvl و case when فلم تعملان ربما لان القاعدة access

اين اضع المكتبة في التقرير حاولت وضعها في اكثر من مجلد من مجلدات ireport ولم تتغير النتيجة

وجزاكم الله خيرا

300_130.gif

#19

السلام عليكم

عفوا اخواني

هل يمكن عمل التقرير هذا باستخدام السي شارب والكريستال ريبورت

شاكر لكم ما شرحتوه سابقا

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

#20

أخي أنت في المكان الخطأ

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#21

تم الإضافة إلى قائمة المواضيع المميزة

وبطل يا أخ محمود تشبك ما بيني وبين الأعضاء laugh.gif

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#22
rohaili كتب:

جزاكم الله خيرا

استخدمت order by لكن النتيجة لم تتغير

أما nvl و case when فلم تعملان ربما لان القاعدة access

اذا استخدمت هذه الحلول فسوف تربط برنامجك بنوع معين من قاعدة البيانات يدعم هذه الدوال مثلا mysql

ولكن لاتقلق انا حليتها من داخل التقرير (ستلاحظ ذلك عند عرض التقرير)

اقتباس

اين اضع المكتبة في التقرير حاولت وضعها في اكثر من مجلد من مجلدات ireport ولم تتغير النتيجة

وجزاكم الله خيرا

قمت بعمل فيديو يشرح الطريقة وهو فى المرفقات

فك الضغط عن الملف المرفق وشغل الملف play.html

على افتراض انك وضعت المكتبة mylib.jar فى المسار التالى c:/roh/mylib.jar

قم بتطبيق الخطوات كما فى الفيديو ثم شغل التقرير

وعذرا على التأخير

rohaili video.rar

تحياتى

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 20 فبراير 2011 في 12:23

1


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#23

جزاك الله خيرا

لقد أضفت المكتبة كما شرحت في ملف الفيديو

post-63809-023239400 1298320904_thumb.jp

ولكن التقرير لم يتغير !

post-63809-082382300 1298320893_thumb.jp

ما زالت مادة العربي تظهر قبل الدين والاشهر العربية لم تظهر !

وجزاك الله خيرا

المرفقات
1.jpg2.jpg

300_130.gif

#24

يا محمد case when يفترض أنها موجودة في SQL أصلاً

بالنسبة لـ nvl فلم أعمل على قاعدة بيانات إلا وجدتها فيها بالطبع لا تلومني إن لم تكن موجودة في Access

ولست أبالي لو لم تكن موجودة :)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#25

كلامك صحيح عزيزى علاء

لكنى استخدم hibernate و JavaBeans كمصدر للبيانات مع JasperReport وبهذا فلا اتعامل مع sql

وهذا يسمح لى بتغيير قاعدة البيانات بسهولة

لهذا احاول حل اى مشكلة داخل التقرير نفسه حتى يمكننى اعادة استخدامه مع اى قاعدة بيانات

rohaili@

حمل الملف المرفق

للشهور الميلادية شغل التقرير report22

post-165385-026080800 1298367804_thumb.p

وللشهور الهجرية شغل التقرير report2222

post-165385-072255100 1298367823_thumb.p

وطبعا المواد مرتبة فى كل التقارير

reps.rar

تحياتى

المرفقات
untitled44.PNGuntitled55.PNG
1


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

مواضيع مشابهة