قسم السطح في تقارير الكريستال مع التقرير الفرعي

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

سؤال

أحاول إنشاء تقرير في تقارير Crystal 11 بناء على استعلام SQL هذا

تحديد *
من (الجدول) OM، (الجدول) OL، (الجدول) ج
حيث om.order = ol.order
و om.company = c.Pany
و (موجود (حدد *
من (الجدول) OSD، (الجدول) OSDD
حيث osd.order = ol.order
و osd.line = ol.line
و osd.revision = ol.revision
و osd.dim = osdd.dim
و OSDD.SHAPE = OL.SHAPE))

اعتقدت أن أفضل طريقة للبدء هي إنشاء التقرير الرئيسي باستخدام أول جدولين وإنشاء مجموعة فرعية باستخدام قسم "موجود" من الاستعلام والربط مرة أخرى إلى التقرير الرئيسي.

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

أنا منفتح على الاقتراحات إذا كانت هناك طريقة أفضل لتقليد هذا الاستعلام أيضا.

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

المحلول

لست متأكدا مما إذا كان نوع قاعدة البيانات التي تستخدمها، لكنني أعتقد أنك ربما يمكنك استخدام شيء مثل:

select * --you probably should narrow this down instead of using a *
from (table) OM
inner join (table) OL on OM.ORDER = OL.ORDER
inner join (table) C on OM.COMPANY = C.COMPANY
inner join (table) OSD on OSD.ORDER = OL.ORDER 
    and OSD.LINE = OL.LINE 
    and OSD.REVISION = OL.REVISION
    and OSD.DIM = OSDD.DIM
inner join (table) OSDD on OSDD.SHAPE = OL.SHAPE

هذا خارج الجزء العلوي من رأسي ولم يتم اختباره، ولكن الفكرة هي أنه سيعرض جميع السجلات من OM، OL، C، OSD، و OSDD حيث وجدت التطابقات. نظرا لأنك لا تستخدم مرارك يساري على OSD أو OSDD، يجب ألا يكون لديك أي صفوف فارغة.

ومع ذلك، يمكنك دائما تغيير أولئك إلى اليسار الخارجي ينضم إليهم مثل:

select * --you probably should narrow this down instead of using a *
from (table) OM
inner join (table) OL on OM.ORDER = OL.ORDER
inner join (table) C on OM.COMPANY = C.COMPANY
left outer join (table) OSD on OSD.ORDER = OL.ORDER 
    and OSD.LINE = OL.LINE 
    and OSD.REVISION = OL.REVISION
    and OSD.DIM = OSDD.DIM
left outer join (table) OSDD on OSDD.SHAPE = OL.SHAPE

هذا من شأنه أن يمنحك جميع الصفوف من OM، OL، و C فقط الصفوف من OSD و OSDD حيث وجد تطابقا. ثم لديك عدد من الخيارات لقمع الصفوف التي لا ترغب في رؤيته مثل استخدام الصيغة التي قام بها في خبير القسم كما اقترح REXEM.

أتمنى أن يساعدك هذا.

نصائح أخرى

لا يوجد سبب لاستخدام فرعية فرعية إذا كنت لا ترغب في رؤية أي بيانات حيث تكون الفرعية فارغة فارغة. أنت غير متوافق في التقرير.

إذا كنت لا تزال ترغب في القيام بذلك، فإن سمة Suppress تسمح التعبيرات. من المرجح أن تضطر إلى استخدام متغير GlobalVar، قم بتعيين المتغير بناء على الفرعية الفرعية، لكنني أشك في أنه سيتم تعيينه قبل عرض الصف.

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