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

مشكلة عند استدعاء التقرير من Eclips الى صفحة الويب

بدأه abourawash في 28 مايو 2011 · 3 رد · 597 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

و هل من الممكن ان استدعى التقرير من class و ليس من Servlet كما هو موضح فى الاسفل تظهر رسالة خطا به التالى

Class not found when loading object from file : D:\Eclips_pro\operation\WebContent\rep\report1.jasper

و لكم جزيل الشكر

	public void stu_name()  {

		HttpServletRequest request = 
			(HttpServletRequest)FacesContext
				.getCurrentInstance()
					.getExternalContext()
						.getRequest();
			try {
				JOptionPane.showMessageDialog(null, request.getContextPath());
				net.sf.jasperreports.engine.JasperPrint jsp = JasperFillManager.
				fillReport(
					"D:/Eclips_pro/operation/WebContent/rep/report1.jasper", null,conn);

				HttpServletResponse response=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();

				//JOptionPane.showMessageDialog(null, request.getServletPath());



			response.setContentType("application/pdf");
			JRPdfExporter exporter = new JRPdfExporter();
			exporter.setParameter(JRExporterParameter.JASPER_PRINT, jsp);
			try {
				exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				JOptionPane.showMessageDialog(null, e.getMessage());
				e.printStackTrace();
			}
			exporter.exportReport();
			} catch (JRException e) {
					// TODO Auto-generated catch block
				JOptionPane.showMessageDialog(null, e.getMessage());
					e.printStackTrace();
				}

		//} catch (SQLException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
		//}

	}
#2

لا أعلم ما الذي تقوم به بالضبط

لكن الأوراكل لها Jdbc الخاص بها

تحياتي

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

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

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

728x90.png

#3

إحذف هذا السطر

JOptionPane.showMessageDialog(null, request.getContextPath());

#4

للاسف يجب عليك اعادة بناء التقرير اولا على اتصال خاص بالاوراكل

لان محرك التقارير Reports engine يقوم بتوليد استعلام خاص بكل قاعدة بيانات ويختلف من قاعدة الى اخرى Access تختلف عن Oracle

لذلك دائما ما اقوم ببناء التقرير على فئات جافا JavaBeans ثم ارسلها من البرنامج للتقرير وعندها اكون انا المسئول عن التعامل مع قاعدة البيانات ويمكننى تغييرها فى اى وقت

ملحوظة :

لماذا تستخدم المسار المطلق Absolute path فى الدالة fillReport ماذا سيحدث عند نشر التطبيق لعميل ؟

هل ستقول له يجب ان تضع التقارير على القسم D وماذا لو كان اصلا لا يملك قسم D فى الهارد؟

بقدر الامكان حاول ان تحقق وتستمتع بخاصية المحمولية portability التى هى افضل مميزات الجافا على الاطلاق

السيرفلت هو عبارة عن فئة جافا Java Class على كل تستطيع ان تستدعى Report Viewer والمشتق من JFrame وسيظهر عند العميل فى Applet Viewer ولكن مع قيود امنية

غير انك ستجبر العميل على تنصيب الجافا على جهازه وهذا ما لن تضطر لفعله مع تطبيقات الويب التى لا تستخدم Applets

فى النهاية اعد بناء التقرير على اتصال باوراكل وترجمه Compile واستخدم الملف الناتج .jasper وتأكد من الاتصال فى برنامجك وسيعمل باذن الله

بالتوفيق


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

الأنفال ۳۳                                  
 

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…