هل يقرأ JasperReports بيانات تعريف الأعمدة قبل إنشاء تقارير؟

StackOverflow https://stackoverflow.com/questions/1945875

  •  20-09-2019
  •  | 
  •  

سؤال

لديّ عدد قليل من JasperReports صنعت وتشغيلها بشكل جيد للغاية على جهاز Windows. بدأت المشكلة عندما تم تعيين التقارير على تشغيل جهاز حاسور مع نظام تشغيل ZOS.

المشكلة هي: عندما يقوم Jasper بإنشاء التقرير ، يبدو أنه يقرأ بيانات تعريف الجداول من قاعدة البيانات واستنادًا إلى أنه يتوقع أن تأتي البيانات.
مثال: إذا كان لدي عمود من النوع Varchar (20) ، فسيكون Jasper ينتظر 20 Chars فقط حتى إذا تم تعريف حقل التقرير على أنه سلسلة.

لا يحدث هذا في بيئة Windows ، ولكن في المركزية ، يكون ترميز الأحرف EBCDIC ، وبالتالي قد يحتوي العمود على 19 Chars على المركزية ، ولكن عند ترميزها إلى التقرير على أنها 23 أو 24 حرفًا.

ملاحظة: تحدث هذه المشكلة فقط في الشخصيات غير الإنجليزية.

تحديث
أ ConversionBufferFull يتم إلقاؤه عندما يقوم Jasper بإنشاء التقرير ، ليس لدي التتبع الكامل لأنني لا أستطيع الوصول إلى سجل الحاسب الرئيسي. تحدث المشكلة مع عمود واحد فقط يسمى country_desc عندما تكون القيمة حوالي 17-20 chars ، يحدث الاستثناء.

كما ذكرت أن الحرف المحدد على الحاسبات المركزية هو ebcdic ، ولكن عندما يقرأ من خلال JDBC تحويله إلى Unicode. على سبيل المثال ، في EBCDIC ، ستكون الكلمة 17 Chars ، ولكن عند تحويلها تصبح 22. لسبب غريب يتوقع Jasper 20 لهذا الحقل فقط.

هل كانت مفيدة؟

المحلول

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

شيرمان Jaspersoft

نصائح أخرى

sun.io.ConversionBufferFullException تم إلقاؤه sun.io محولات ترميز الأحرف وقد تمر عبر java.io فصول في الإصدارات القديمة من جافا. تم إهمال واجهة برمجة التطبيقات هذه لبعض الوقت ولم تعد قيد الاستخدام منذ Java 6 - java.nio.charset يستخدم بدلا من ذلك.

إنه خطأ تحويل الأحرف في jasperreports ، سائق JDBC الخاص بك أو الأشياء التي يستخدمها هذان الاثنين. لا أعتقد أن الأمر يتعلق بقراءة بيانات التعريف من مجموعة نتائج JDBC في حد ذاتها ، على الرغم من أنها قد تكون الأوتار في بيانات التعريف التي يتم تحويلها بشكل غير صحيح.

من الصعب إلقاء اللوم أو التفكير في العمل دون تتبع المكدس.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top