صيغة قمع رأس Crystal تقارير لا تعمل
-
27-09-2019 - |
سؤال
لديّ تقرير عن مجموعات من رمزين ، وسوف نسميهما Parent
و Child
.
في الجزء العلوي من كل صفحة ، في رأس الصفحة ، أريد طباعة اسم الأصل.
هناك عدد من الأعمدة في التقرير ، وعندما تنهار المجموعة ، أريد عرض اسم الطفل الجديد ، وكذلك رؤوس الأعمدة مرة أخرى. يجب أن يبدو التقرير شيئًا كهذا:
Parent Name
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
XXXX XXXX XXXX XXXX XXXX XXXX
XXXX XXXX XXXX XXXX XXXX XXXX
Child Total: XXXX
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
XXXX XXXX XXXX XXXX XXXX XXXX
إذا كانت مجموعة الأطفال تتجول إلى الصفحة الجديدة ، فأنا أريد إعادة تشكيل اسم الطفل وتسميات توضيحية العمود قبل عرض البيانات مرة أخرى.
لإنجاز هذا ، قمت بإنشاء رأس صفحة يحتوي على الكائنات التالية:
Parent Name
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
في رأس الصفحة متغير RowReset
التي تحتوي على الصيغة التالية:
WhilePrintingRecords;
Shared numberVar nRowCount := 0
ثم ، في كل صف تفاصيل ، وكذلك قسمين مجموعة تذييل 1 و Group Vooter 2 ، لدي ما يلي RowIncrement
معادلة:
WhilePrintingRecords;
Shared numberVar nRowCount := nRowCount + 1;
أخيرًا ، في كل قسم من القسم 2 ، لدي صيغة القمع الشرطية التالية:
WhilePrintingRecords;
Shared numberVar nRowCount;
IF (PageNumber <> 1) AND (nRowCount = 0 OR nRowCount = 0.00) THEN
True
ELSE
False
ما يحاول القيام به هو قمع رأس مجموعة الأطفال إذا كنا على صفحة جديدة ، ولم تتم طباعة سجلات تفصيلية حتى الآن ، لمنع ما يلي من الحدوث:
Parent Name ---+
Child Name +-- Page header
Col1 Col2 Col3 Col4 Col5 Col6 ---+
Child Name ---+-- Group header 2
Col1 Col2 Col3 Col4 Col5 Col6 ---+
لسبب ما لا يمكنني معرفة ذلك ، حوالي 40 صفحة في التقرير ، أحصل على ذلك بالضبط ؛ سجل رأس الصفحة ، يليه سجل رأس المجموعة 2. إذا قمت بإنشاء صيغة تحتوي على صيغة القمع الشرطية ، فإنها تعرض TRUE
, ، لكن رأس المجموعة لا يزال لا يقمع.
إذا قمت بتفكيك الرمز بحيث يتحقق واحد فقط من الشرطية (أيضًا PageNumber <> 1
أو nRowCount = 0
) ثم رأس المجموعة 2 يقمع بشكل صحيح.
لقد حاولت هذا حتى لكسر الأمور:
WhilePrintingRecords;
Shared numberVar nRowCount;
booleanVar bSuppress:= False;
IF PageNumber <> 1 THEN bSuppress:= True;
IF (bSuppress) THEN (IF nRowCount = 0 THEN True ELSE False);
كما أنه يعرض True
عند عرضه على الشاشة ، لكنه يفشل في قمع رأس المجموعة.
ما الذي أفعله على الأرض هنا؟ هل هناك نهج أفضل يمكنني اتباعه؟
المحلول
أقترح وضع حقل "اسم الوالد" في رأس المجموعة لمجموعته ، وليس في رأس الصفحة. بعد ذلك ، في كل من المجموعتين الأصل والطفل ، حدد خانة الاختيار "تكرار رأس المجموعة في كل صفحة" في مربع حوار خيارات المجموعة.