الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار في التقارير ..... (الدخول فقط للمتمكنين)

مغلق
بدأه hani2003 في 8 فبراير 2003 · 8 رد · 767 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تحية طيبة للمتمكنين من التقارير

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

وهذه القيم مختلفة من شخص لاخر . الامر الذي يسبب بعض الاشكال في تنسيق الخطاب حسب زيادة أحرف القيم أو نقصها مما يحدث بعض الفرغات في الخطاب

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

ولكم تحياتي

#2

يمكنك استخدام ال خاصية ال TRIM والتي تزيل الفراغات في نهاية الحقل

#3

عزيزي:

توجد أكثر من ألية و اختيار الالية محكوم بالناتج الذي نريده.

أتوقع أن الطريقة التي تبحث عنها هي جعل الحقل مطتطي و ذلك عن طريق خاصية : Vertival Elasticity & Horizantal Elasticity للحقل والتي بدورها محكومة بكل ال Frames التي تحيط بها, لذلك إما ان نجعل الحقل مطاطي و كل الFrames مطاطية فوقه لكي لا يكون مقيدا.

أو ان نفسح له مجالا ضمن Frame محدد لكي يتوسع.

بوضع هذه الخاصية Expand نمنح هذا العنصر امكانية التوسع إذا كانت القيمة بداخله أكبر من حجم الحقل, إذا سمحت له الFrames التي فوقه بالتوسع و ذلك قد يكون بوضع أكثر من Frame بوضعية Expand.

#4

سيدي الكريم السني

تحية طيبة واشكرك على رايك واشكر مشاركتك ولكن ماهي طريقة trim وكيف تستخدم

وشكرا

#5

اخي العزيز halabi

الطريقة التي تحدثت عنها لقد جربتها سابقا ولكن دون جدوى

وشكرا

#6

أخي العزيز:

أرجو منك أن تنتبه لنقطة هامة جدا, و هي أنه لا يكفي أن تغير الخاصية المطاطية للعنصر وحده, و إنما ينبغي أن تسمح له كل الفريمات المحيطة به بالتوسع, فإما أن تضع حجم الفريم أكبر من حجم الأيتم, أو أن تغير الخاصية المطاطية للفريمات المحيطة به (حسب الحاجة) إما ُexpand or variable

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

#7

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

1. يجب ان لا تكون في النص مسافات فارغة تخل المنظر العام للنص

2. حقل الاسم هو حقل ثابت الطول (إن لم يكون مطاطيا من الاساس)

3. الأسماء متغيرة الاطوال، ولا يمكن التحكم في طولها

إذا مشكلتنا الاساسية هي اننا نريد ان نأخذ جزء أو كل الحقل، ومن هنا، يجب النظر إلى الأمر substr وهو الذي يسمح لنا بأخذ جزء من حقل نصي.

احتياجات الأمر substr حي إسم الحق، ونقطة البداية، ثم نقطة النهاية

substr(variable,from_offset,to_offset)

ومعلوم لدينا ان الاسم موجود في حقل، وبذلك عرفنا قيمة المتغير (variable) وان اختيارنا يجب ان يكون من بداية الاسم، إذا قيمة from_offset يجب ان تحمل القيمة (1) تبقى المعضلة في إلى أي نقطة يجب ان نقوم بعملية ال substr وهو أمر يتحكم فيه طول الإسم، إذا يمكننا استخدام الأمر length

وبذلك يكون الأمر بالشكل الآتي

substr(employee_name,1,length(employee_name))

هل هو طلبك ؟؟؟

موفق ان شاء الله

#8

هناك حل أبسط و أفضل وهو الذهاب إلى DATA_MODEL

ووضع FORMULA_COLUMN في نفس GROUP وليكن اسمه CF_1 مثلاً

وتغيير نوعه إلى نص وزيادة حجمة وليكن 150

وكتابة في PL_SQL FORMULA

الكود

function CF_1Formula return Char is

TEMP VARCHAR2(150);

begin

  TEMP := :FIRST_NAME||' '||:FATHER_NAME||' '||:FAMILY_NAME;

RETURN(TEMP);

end;

وبعد ذلك يتم تغيير السورس في LAYOUT_MODEL

إلى CF_1

#9

يمكنك كتابت الخطاب مع والحقول المضافة للخطاب مجتمعه في CF واحد وبين النصوص المحررة والحقول تضع ( || ) ومن ثم تضع CF في LAYOUT كسطر واحد

MBL60@HOTMAIL.COM

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…