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

مشكلة فى عرض التقرير

بدأه nonstopman في 21 يوليو 2010 · 5 رد · 725 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ممكن تساعدونى فى ايكسبشن

Exception in thread "main" java.lang.NullPointerException

ممكن تجاوبونى لو سمحت

code :

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
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 Main2 {

    // working by Microsoft Access
private static final String url = "Jdbc:Odbc:javadb";
private static final String user = "";
private static final String pass = "";
private static final String DriverClass = "sun.jdbc.odbc.JdbcOdbcDriver";


public static void main(String[] args) {
String JasperPath ="C:\\report2.jasper";   // path of reprot

try {
Class.forName(DriverClass);
Connection conn = DriverManager.getConnection(url, user, pass);

System.out.println("Connection 100 100");

JasperPrint jp = JasperFillManager.fillReport(JasperPath, new HashMap(), conn);


JasperViewer.viewReport(jp);  // display Report
System.out.println("found error in this place");

}catch(ClassNotFoundException es){
es.printStackTrace();
}catch(SQLException ex){
ex.printStackTrace();
}catch(JRException ex){
ex.printStackTrace();
}
}
}

// end of class

Code

فى ايكسبشن مع ان الكود تمام

Exception in thread "main" java.lang.NullPointerException
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)
        at Connecting.Main2.main(Main2.java:36)
Java Result: 1

تم تعديل هذه المشاركة بواسطة nonstopman في 21 يوليو 2010 في 13:28

سأل الممكن المستحيل : أين تقيم ؟ فأجابه في أحلام العاجز

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

نمضى النصف الأول من حياتنا بحثاً عن المال والنجاح والشهرة ونمضى

النصف الثانى منها بحثاً عن الأطباء

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

شخصٌ يرى ذا الكون وهو جالسٌ ويجوب هذي الأرض بين الدول

#2

ضع المشروع كمرفق لنحاول مساعدتك

#3

ايه يا جمااعة ماحدش رد عليا

مع انى رفعت الكود اهو

سأل الممكن المستحيل : أين تقيم ؟ فأجابه في أحلام العاجز

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

نمضى النصف الأول من حياتنا بحثاً عن المال والنجاح والشهرة ونمضى

النصف الثانى منها بحثاً عن الأطباء

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

شخصٌ يرى ذا الكون وهو جالسٌ ويجوب هذي الأرض بين الدول

#4
اقتباس
ضع المشروع كمرفق لنحاول مساعدتك

المشروع

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

#5

لماذا تستخدم جسر JDBC-ODBC مع قاعدة بيانات Access ؟؟ ذلك بمثابة كابوس من ناحية الأداء ...

أنصحك بالإنتقال إلى قاعدة بيانات محترمة مثل HSQLDB واستخدم الـ Driver الذي يأتي معها مباشرة.

على كل حال، بالعودة إلى سؤالك الأساسي:

هذا الخطأ ناتج عن مشكلة بالاتصال، عدل كودك ليصبح كما يلي:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
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 Main2 {
    // Working with Microsoft Access
    private static final String DriverClass = "sun.jdbc.odbc.JdbcOdbcDriver";
    private static final String connectionStringURL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/myDB.mdb";

    public static void main(String[] args) {
        String JasperPath = "C:\\report2.jasper";   // Reprot path

        try {
            Class.forName(DriverClass);
            Connection conn = DriverManager.getConnection(connectionStringURL);

            JasperPrint jp = JasperFillManager.fillReport(JasperPath, new HashMap(), conn);

            JasperViewer.viewReport(jp);  // display Report

        } catch (ClassNotFoundException es) {
            es.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (JRException ex) {
            ex.printStackTrace();
        }
    }
}

أو أن تقوم بتسجيل قاعدة بياناتك في الـ ODBC وتغيير الـ connectiobStringURL إلى:

private static final String connectionStringURL = "jdbc:odbc:myDBName;

أخبرني بالنتائج

تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 21 يوليو 2010 في 15:10

#6

السلام عليكم اخى

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

اذا نظرت الى رسالة الخطأ التى ظهرت لك وارفقتها فى المشاركة الاولى تجد السطر التالى

at Connecting.Main2.main(Main2.java:36)

اذا الخطأ ينتج من السطر 36 وهنا يمكن الوصول الى الخطأ بسهولة

قم بنسخ الكود للفئة

Connecting.Main2

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

طالما انك لاتريد ارفاق المشروع

تحياتى


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

الأنفال ۳۳                                  
 

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