سؤال

لديّ تقرير عن مجموعات من رمزين ، وسوف نسميهما 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 عند عرضه على الشاشة ، لكنه يفشل في قمع رأس المجموعة.

ما الذي أفعله على الأرض هنا؟ هل هناك نهج أفضل يمكنني اتباعه؟

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

المحلول

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

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