كيفية إصلاح خطأ حلقة الطباعة التي لا نهاية لها في Nevrona Rave

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

سؤال

تصاميم نيفرونا تقارير الهذيان هو محرك تقرير للاستخدام من قبل إمباركاديرو دلفي بيئة تطوير متكاملة.

هذا ما أسميه خطأ Rave Endless Loop.في Rave Reports ، الإصدار 6.5.0 (VCL10) الذي يأتي مع Delphi 2006 ، هناك حشرة نورتوري التي تصيب العديد من مطوري التقارير.إذا كان لديك مجموعة بيانات غير فارغة ، وتناسب صفوف البيانات الخاصة بمجموعة البيانات هذه بالضبط في صفحة (بمعنى أن هناك صفوف أرملة صفرية) ، ثم عند printpreview ، سوف تتعثر Rave في صفحات توليد حلقة لا حصر لها.

تم الإبلاغ سابقًا عن هذه المشكلة في مجموعة الأخبار هذه تحت العناوين التالية:

  1. "خطأ:توليد صفحات لا نهائية"؛هوغو حيرام 20/9/2006 الساعة 8:44 مساءً
  2. "خلل في حلقة الهذيان.الرجاء المساعدة";توماس لازار 11/07/2006 الساعة 7:35 مساءً
  3. "تكرار على صفحة كاملة من البيانات؟";توني تشيتيانسن 23/12/2004 الساعة 3:41 مساءً
  4. الرد على (3) من قبل مشتكي آخر؛أوليفر بيش
  5. "خطأ لا نهاية له في طباعة lopp";ريشسو 11/09/2004 الساعة 4:44 مساءً

في كل من هذه المنشورات ، لم يكن هناك استجابة من Nevrona ، ولم يتم الإبلاغ عن أي حل.

ربما تم الإبلاغ عن المشكلة أيضًا على مجموعة أخبار متحالفة (nevrona.public.rave.reports.general) ، إلى الطرافة:6."إنشاء التقرير بشكل مستمر";Jobard 20/11/2005 على الرغم من أنه من غير الواضح بالنسبة لي إذا كان (6) هو علة حلقة لا نهاية لها أو مشكلة أخرى.حصل هذا النشر على رد من Nevrona ، لكنه كان أكثر فيما يتعلق بمناطق متعددة ("هناك مشكلة عند استخدام مناطق متعددة تتجاوز الصفحة.") من مشكلة الأرامل الصفر.

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

المحلول

هذا هو الحل البديل أكثر من كونه حلًا حقيقيًا.لقد قمت بنشر هذا الحل لأول مرة على مجموعة أخبار Nevrona (Group=nevrona.public.rave.developer.delphi.rave;الموضوع = "هل تعاني من خطأ Rave Endless Loop؟:تم الإعلان عن الحل البديل.";التاريخ=13/11/2006 7:06 مساءً)

إذن هذا هو الحل الخاص بي.إنه أكثر من حل عمل جيد على المدى الطويل ، وآمل أن تعطي نيفرونا هذه القضية بعض الاهتمام الجاد في المستقبل القريب.

  1. بالنظر إلى تخطيط التقرير الخاص بك ، عد الحد الأقصى لعدد الصفوف لكل صفحة.دعنا نقول أن هذا هو 40.
  2. قم بإعداد عداد لحساب الصفوف داخل الصفحة (بدلاً من الصفوف الموجودة في التقرير بأكمله).يمكنك القيام بذلك إما عن طريق البرنامج النصي للحدث أو عن طريق مكون CalcTotal.
  3. تعريف معالج الأحداث المكتوب OnBeforePrint لنطاق البيانات الرئيسي.
  4. في هذا الحدث، قام معالج الحدث بتعيين خاصية FinishNewPage لنطاق البيانات الرئيسي لتكون True عندما يكون عدد الصفوف لكل صفحة أقل بواحد أو اثنين من الحد الأقصى (في مثالنا، سيكون هذا 38).واضبطه على False في جميع الحالات الأخرى.تأثير ذلك هو إعطاء كل صفحة عددًا غير صفري من الأرامل (في هذه الحالة 1..38)، وبالتالي تجنب الشرط الذي يؤدي إلى ظهور مشكلة حلقة Rave Endless.

نصائح أخرى

شكرًا جزيلاً لهذا شون - لسوء الحظ، لن ينجح هذا الأمر بالنسبة لي ولكني توصلت إلى حل آخر...كما ترى لدي مذكرة في الجزء العلوي من المنطقة والتي قد تتوسع أو تتقلص اعتمادًا على عدد الملاحظات التي تركها المستخدم في قاعدة البيانات.وهذا يعني أن عدد الصفوف التي يمكن احتواؤها في الصفحة يختلف.لكن.هناك حل آخر - يمكنك استخدام خاصية MaxHeightLeft لنطاق البيانات.كل ما عليك فعله هو قياس ارتفاع نطاق البيانات الخاص بك، وضربه في 2، ووضعه في خاصية MaxHeightLeft الخاصة بك.سيؤدي هذا إلى فرض تسجيل واحد أو سجلين على الصفحة التالية إذا امتلأت بهذا القدر.

شكرًا جزيلاً، ساعدني هذا الموضوع في حل مشكلتي مع حلقة الطباعة التي لا نهاية لها في Nevrona Rave.... لقد قمت بتعيين MinHeightLeft على 0,500، هذا الإعداد يعمل ولكنني لست متأكدًا من أنه سيعمل مع مجموعة نتائج أخرى مني تقرير الاستعلام.

Master ، الحل هو minheightleft إلى 0500 ، أستخدم منطقة Wastefit Property في الواقع وتوليد الحلقة في الطباعة الثانية ، ولكن عند تغيير الخاصية minheightleft إلى 0500 ، فإن الخطأ يرفض.

شكرًا !

أت فابيولا هيريرا.Fabi_ucv@hotmail.com

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