السلام عليكم ورحمة الله وبركاته
هل يمكن ل ireport عمل تقرير crosstab كالمبين في الصورة التالية
مرفق قاعدة بيانات
وجزاكم الله خيرا
السلام عليكم ورحمة الله وبركاته
هل يمكن ل ireport عمل تقرير crosstab كالمبين في الصورة التالية
مرفق قاعدة بيانات
وجزاكم الله خيرا
تم تعديل هذه المشاركة بواسطة rohaili في 23 يناير 2011 في 19:15
rohaili كتب:السلام عليكم ورحمة الله وبركاته
هل يمكن ل ireport عمل تقرير crosstab كالمبين في الصورة التالية
وعليكم السلام ورحمه الله وبركاته
اكيد ان شاء الله
يمكنك الاطلاع على هذه الروابط للمساعده
أدوات التقارير:
درس بسيط عن إنشاء التقارير في جافا
Jasper Report, شرح أداة التقارير في الجافا
دروس بسيطة ومفيدة عن التقارير Jasperreport
طريقة اضافة method في JasperReport
استخدام المكتبات داخل التقرير Jasper Report
مثال بسيط جدا لطباعة Pdf باستخدام Ireport
كيف أعمل تقرير crosstab كالجدول المرفق باستخدام JasperReport
بالتوفيق
السلام عليكم ورحمة الله وبركاته
جزاك الله خيرا
يبدو أني لم أشرح المشكلة جيدا انظر الى الصورة التالية
الصف الاول يحتوي أسماء المواد وهذا أمره سهل عن طريق crosstab لكن الصف الثاني المحتوي على نوع المادة لم استطع اضافته
العمود الاول المحتوي على بيانات الطالب كل ثلاثة خلايا (ثلاث صفوف) لطالب واحد وبجوارها العمود الثاني المحتوي على الاشهر ، لم استطع اضافتها أيضا
مبدئيا ..
هل فكرت بان تكون الصفوف التي تحتوي رقم ، الاسم الاول والاب ، اسم الجد والعائله
في subreport
جزاك الله خيرا
جربت فلم تنجح محاولتي
فكرت بطريقة أخرى :
أن يكون التقرير عادي وليس crosstab وبهذه الطريقة يمكن حل مشكلة الرقم والاسماء والاشهر لكن كيف أنشأ اعمدة بعدد المواد أي يكون عدد الاعمدة متغير بحسب المواد الموجودة في الجدول
rohaili كتب:جزاك الله خيرا
جربت فلم تنجح محاولتي
فكرت بطريقة أخرى :
أن يكون التقرير عادي وليس crosstab وبهذه الطريقة يمكن حل مشكلة الرقم والاسماء والاشهر لكن كيف أنشأ اعمدة بعدد المواد أي يكون عدد الاعمدة متغير بحسب المواد الموجودة في الجدول
يمكنك بناء التقرير على JRBeanDataSource او java beans وبهذا تتحكم فى البيانات المرسلة للتقرير
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳
عزيزى رحيلى
هذا ما استطعت الوصول اليه
قمت بالتعديل على قاعدة البيانات
وقمت بعمل 3 تقارير واستخدام التقارير المتداخلة subreport
حمل الملفات المرفقة وقم بتشغيل التقرير report1
افدنا بالنتيجة
تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 25 يناير 2011 في 11:02
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳
جزاك الله خيرا
ما أردته وجدته في تقريرك report2 وبعد الإضافة عليه أصبح كما ترى مختلف عما كنت أريده في أول الموضوع ولكنه يقوم بالمهمة على أكمل وجه
والسؤال الآن كيف اجعل الاشهر مرتبة من اعلى لأسفل من يناير الى ابريل ، وكذلك المواد اريد ترتيبها من اليسار لليمين حسب ترتيبها في قاعدة البيانات دين ثم عربي ثم انجليزي ثم جغرافيا ؟
كيف اظهر نتيجة الشهر ابريل في التقرير رغم عدم وجودها الجدول result (اريدها تظهر صفر مثلا ) كذلك كلمة null اريدها تظهر صفر أو تبقى فارغة ؟
والسؤال الثالث كيف اعرف متغير من list واضع فيه القيم التالية مثلا (محرم ، صفر ، ربيع ) أي تكون هذه القيم ثابتة في التقرير ولا تمرر له من الخارج ؟
مرفق التقرير
وجزاك الله خيرا
حاولت حتى وصلت للشكل التالى
بالنسبة الى القائمة list فهى سهلة ولكن وضح لى اكثر كيف تريد ان تستخدمها فى التقرير
سأعد لك مثال بسيط
تحياتى
تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 27 يناير 2011 في 12:20
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳
عمموو محمد
انا حاولت اعمل تقرير كدا
لكن مش عارف اعمل ايه
كتبت الكود التالى
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)ودا التقرير
مش عارف ايه الخطأ ف كدا
Mahmoud Kelany كتب:انا حاولت اعمل تقرير كدا
لكن مش عارف اعمل ايه
مش عارف ايه الخطأ ف كدا
هههههههههههههه
حبيب قلبى الحل بسيط جدا لكن مش هأجاوبك عليه الا عندما تكتب هذا السؤال فى موضوع جديد وترصد له 20 نقطة (استغلال ههههههه)
-----------------------------------------------------------------
لأ طبعا ياحودة
المشكلة فى نقص المكتبات سأرفعها الى mediafire وارسل الرابط
شد حيلك
تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 27 يناير 2011 في 13:25
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳
MOHAMED FATHEI كتب:هههههههههههههه
حبيب قلبى الحل بسيط جدا لكن مش هأجاوبك عليه الا عندما تكتب هذا السؤال فى موضوع جديد وترصد له 20 نقطة (استغلال ههههههه)
ولا يهمك تحت امرك اللى انت عاوزه نحطلك 100 مش 20 بس :)
-----------------------------------------------------------------
لأ طبعا ياحودة
المشكلة فى نقص المكتبات سأرفعها الى mediafire وارسل الرابط
ما هى عندى المكتبات بس انا وضعت واحده بس ههههههه
ممكن تقول اسماء المكتبات المهمه بس علشان مش احط المكتبات كلها
شد حيلك
حاضر هانت فاضل يوم السبت بس :)
انا حطيت كل المكتبات بس طلع لى خطأ
وبعدين كان عندى مشروع من بتوعك بتاع نظام التسجيل حضور وغياب
فاخدت ملفات الجار منه واشتغل الحمدلله
الموضوع دا كبير وانا عاوز ادخل فيه بتعمق اكتر
انا هافضى ليك يوم السبت ونشوف ههههههههه
جزاك الله خيرا
حل رائع جدا ، لقد استخدمت \n لجعل الاسم في سطر جديد ولكن عند حفظ الملف بصيغة اكسل وجدت الاسم في سطر جديد في نفس خلية الرقم
وانا اريده أن يكون في الخلية التي تحت الرقم ،
لذلك سوف اكتفي بالحل السابق فهو يقوم بالمهمة على اكمل وجه والسؤال الان :
1 - كيف اعرف مصفوفة تحتوي على ارقام او اسماء داخل التقرير (لا اريد تمريرها للتقرير ) لتحل محل المجموعة الثانية من مجموعات الصفوف أي محل اسماء الاشهر
2 - كيف ارتب اسماء الاشهر حسب ترتيبها في الجدول في قاعدة البيانات
3 - كيف اجعل النتائج غير الموجودة تظهر كصفر
وجزاك الله خيرا
تم تعديل هذه المشاركة بواسطة rohaili في 1 فبراير 2011 في 08:21
سأتكلم من وجهة نظر تقارير و SQL ولا أعرف إن كان الأمر ممكناً في ireport أو لا
يمكنك أن تقوم بالسؤال الثاني باستخدام order by في لغة SQL
يمكنك أن تقوم بالسؤال الثالث باستخدام الدالة nvl (أنا أعرف أنها موجودة في oralce ولست متأكد من وجودها لدى الآخرين)
أو باستخدام case when ويمكنك البحث عن صيغتها في SQL
تحياتي
مرحبا بالجميع
عذرا للتأخير بسبب الاحداث الاخيرة فى مصر
عزيزى رحيلى
لقد نجحت فى ترتيب الاشهر كما هى فى قاعدة البيانات
وكذلك ترتيب المواد أيضا
وقمت بعمل فئة أيضا تحل لك مشكلة الاشهر الهجرية او الميلادية و اسماء المواد
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
بدلا من القديمة ثم استخدامها فى البرنامج بدلا من المكتبة الحالية التى صنعتها كمثال للحل
على كل انا بانتظار ردك
تحياتى
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳
جزاكم الله خيرا
استخدمت order by لكن النتيجة لم تتغير
أما nvl و case when فلم تعملان ربما لان القاعدة access
اين اضع المكتبة في التقرير حاولت وضعها في اكثر من مجلد من مجلدات ireport ولم تتغير النتيجة
وجزاكم الله خيرا
السلام عليكم
عفوا اخواني
هل يمكن عمل التقرير هذا باستخدام السي شارب والكريستال ريبورت
شاكر لكم ما شرحتوه سابقا
سأصبر حتى يعجز الصبرُ عن صبري
وسأصبر حتى يأذن الله في أمري
وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ
rohaili كتب:جزاكم الله خيرا
استخدمت order by لكن النتيجة لم تتغير
أما nvl و case when فلم تعملان ربما لان القاعدة access
اذا استخدمت هذه الحلول فسوف تربط برنامجك بنوع معين من قاعدة البيانات يدعم هذه الدوال مثلا mysql
ولكن لاتقلق انا حليتها من داخل التقرير (ستلاحظ ذلك عند عرض التقرير)
اقتباساين اضع المكتبة في التقرير حاولت وضعها في اكثر من مجلد من مجلدات ireport ولم تتغير النتيجة
وجزاكم الله خيرا
قمت بعمل فيديو يشرح الطريقة وهو فى المرفقات
فك الضغط عن الملف المرفق وشغل الملف play.html
على افتراض انك وضعت المكتبة mylib.jar فى المسار التالى c:/roh/mylib.jar
قم بتطبيق الخطوات كما فى الفيديو ثم شغل التقرير
وعذرا على التأخير
تحياتى
تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 20 فبراير 2011 في 12:23
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳
جزاك الله خيرا
لقد أضفت المكتبة كما شرحت في ملف الفيديو
ولكن التقرير لم يتغير !
ما زالت مادة العربي تظهر قبل الدين والاشهر العربية لم تظهر !
وجزاك الله خيرا
يا محمد case when يفترض أنها موجودة في SQL أصلاً
بالنسبة لـ nvl فلم أعمل على قاعدة بيانات إلا وجدتها فيها بالطبع لا تلومني إن لم تكن موجودة في Access
ولست أبالي لو لم تكن موجودة :)
تحياتي
كلامك صحيح عزيزى علاء
لكنى استخدم hibernate و JavaBeans كمصدر للبيانات مع JasperReport وبهذا فلا اتعامل مع sql
وهذا يسمح لى بتغيير قاعدة البيانات بسهولة
لهذا احاول حل اى مشكلة داخل التقرير نفسه حتى يمكننى اعادة استخدامه مع اى قاعدة بيانات
rohaili@
حمل الملف المرفق
للشهور الميلادية شغل التقرير report22
وللشهور الهجرية شغل التقرير report2222
وطبعا المواد مرتبة فى كل التقارير
تحياتى
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳