اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

استيعاب سجلات التقرير كلها فى صفحة واحدة مهما اختلف عددها


الردود الموصى بها

السلام عليكم و رحمة الله

عندى تقرير يظهر أسماء طلاب أحد الفصول

و عدد الفصول متفاوت

مثلا فصل = 51

و فصل آخر = 33

يمكن ضبط حجم مربعات النص و تصغيرها ليظهر كل أسماء الفصل ذى ال 51 طالبا فى صفحة واحدة

لكن

عند طباعة فصل ذى 33 طالبا

تعرفون المشكلة

يكون هناك فراغ أسفل آخر سجل

 

و لو ضبطنا حجم مربعات النص على مقاس ال 33 طالبا

فعند طباعة فصل 51 طالبا فإنه يظهر فى صفحتين

و كلا الأمرين لا نريدهماقمت بحل المشكلة

بهذا الكود

If Me.mycount <= 39 Then
       
       Me.StuName.Height = Me.StuName.Height * 1.33

حيث mycount هو عدد سجلات التقرير حسب الفصل

و stuname  هو حقل اسم الطالب

جعلت ارتفاعه مضروبا فى 1.33 

و بهذا يظهر طلاب أكبر فصل و أصغر فصل فى نقطة التقاء مقبولة فى صفحة التقرير

ثم غيرت ارتفاعات بقية الحقول كم يلى

		Me.s1.Height = Me.StuName.Height
       Me.s2.Height = Me.StuName.Height
       Me.s3.Height = Me.StuName.Height
       Me.s4.Height = Me.StuName.Height
       Me.s5.Height = Me.StuName.Height
       Me.s6.Height = Me.StuName.Height
       Me.s7.Height = Me.StuName.Height
       Me.s8.Height = Me.StuName.Height

و جاءت النتيجة مرضية

للآن

لكن

لا أستبعد أن يكون هناك حل أفضل

 

هل هناك علاقة بين ارتفاع قسم التفاصيل فى التقرير و ارتفاعات مربعات الحقول

بحيث نقسم ارتفاع قسم التفاصيل على عدد السجلات ؟

فيعطينا الارتفاع المناسب حسب عدد التلاميذ

لو كان ذلك

لكان كنزا ظفرنا به

أرجو أن يوفق الله علماء المنتدى للتوصل لحل

و السلام عليكم

رابط هذا التعليق
شارك

وعليكم السلام:smile:

 

سهلة:smile:

 

المحاولة التالية للتغلب على هذه المعادلة ، والحصول على معادلة صحيحة:

If Me.mycount <= 39 Then   
       Me.StuName.Height = Me.StuName.Height * 1.33

 

ابدأ بالتالي:

  1. اجعل حقول قسم التفصيل Detail قصيرة جدا ، شوي اكبر من خط مستقيم ،
  2. في التقرير عندك مجموعة اقسام ، وجميع الاقسام ارتفاعاتها ثابته وغير متغيرة ،
  3. القسم الوحيد الذي يتغير هو قسم التفصيل Detail ،
  4. عندك ارتفاع التقرير النهائي على حجم A4 مثلا ، واحسب ارتفاعات جميع الاقسام ، واطرح هذا من ذاك وبتحصل على المسافة المتبقية للقسم Detail ،
  5. تقدر تحسب عدد السجلات اللي بتكون في كل فصل ،
  6. وفي حدث فتح التقرير اقسم المسافة المتبقية من التقرير على عدد السجلات ، وتحصل على ارتفاع قسم Detail ، وهو المطلب الاول الاصل (والتغييرات تصير عليه بعدين) ،
  7. وبعد عدة تجارب ستصل الى الارتفاع الصحيح ، وعليه تغير ارتفاع الحقول الى نفس ارتفاع قسم Detail:smile:

قلت لك سهلة:smile:

 

جعفر

  • Like 3
رابط هذا التعليق
شارك

7 دقائق مضت, jjafferr said:

وعليكم السلام:smile:

 

سهلة:smile:

 

المحاولة التالية للتغلب على هذه المعادلة ، والحصول على معادلة صحيحة:


If Me.mycount <= 39 Then   
       Me.StuName.Height = Me.StuName.Height * 1.33

 

ابدأ بالتالي:

  1. اجعل حقول قسم التفصيل Detail قصيرة جدا ، شوي اكبر من خط مستقيم ،
  2. في التقرير عندك مجموعة اقسام ، وجميع الاقسام ارتفاعاتها ثابته وغير متغيرة ،
  3. القسم الوحيد الذي يتغير هو قسم التفصيل Detail ،
  4. عندك ارتفاع التقرير النهائي على حجم A4 مثلا ، واحسب ارتفاعات جميع الاقسام ، واطرح هذا من ذاك وبتحصل على المسافة المتبقية للقسم Detail ،
  5. تقدر تحسب عدد السجلات اللي بتكون في كل فصل ،
  6. وفي حدث فتح التقرير اقسم المسافة المتبقية من التقرير على عدد السجلات ، وتحصل على ارتفاع قسم Detail ، وهو المطلب الاول الاصل (والتغييرات تصير عليه بعدين) ،
  7. وبعد عدة تجارب ستصل الى الارتفاع الصحيح ، وعليه تغير ارتفاع الحقول الى نفس ارتفاع قسم Detail:smile:

قلت لك سهلة:smile:

 

جعفر

:rol: سهله واسهل من السهوله

  • Like 1
رابط هذا التعليق
شارك

شكرا

ما وحدة القياس المستخدمة فى الكود

عندى التقرير ارتفاعه  29.7  سم ورق a4

رأس الصفحة                  1.961  سم

تذييل التقرير                  .855

هامش علوى                 .6    سم

هامش سفلى               .6    سم

 

المجموع حوالى        5.8   سم

الباقى من الارتفاع   =  29.7  -  5.8   =  23.9   تقريبا

 

كيف نستخدم ذلك فى الكود

    Me.StuName.Height = Me.Section(0).Height / Me.mycount

و هل وحدة القياس فى الكود هى نفسها هذه الوحدة  السنتيمتر
 

رابط هذا التعليق
شارك

جميل:smile:

 

وحدة القياس هي Twips وتساوي 576 سنتيمتر ،

ومثل ما قلت لك ، في البدايه خلينا نشتغل على ارتفاع القسم ، ثم نرجع للحقول ،

فالمعادلة لقسم Detail هي:

Me.Section(0).Height= 23.9 * 576 / Number_of_Records

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

الحمد لله

أخيرا ضبطت معانا

 Me.StuName.Height = 23.2 * 576 / Me.mycount

شيء رائع فعلا

جزاك الله خيرا أستاذنا جعفر

ولك منى دعوة مخبأة بظهر الغيب

أفضل من المدح و الثناء

رابط هذا التعليق
شارك

هلا والله ، مو قلت لك سهله :wink2:

 

اتوقع ان حجم الحقول انتهيت منها؟

بس ايش عملت في حجم حروف الحقول؟

اذا تسمح لي ، تقدر تستخدم نفس النسبة وتضيفها/تنقصها على حجم الخط (يعني تبدأ بحجم خط صغير مثلا يناسب الحقول الاقصر) ،

او نقدر نستخدم كود تصغير/تكبير الخط ليتلائم مع ارتفاع الحقل:smile:

 

جعفر

رابط هذا التعليق
شارك

نعم

حجم الخط بالنسبة لارتفاع الحقل  لا يؤثر كثيرا 

على الأقل فى حالتنا هذه

فالأطوال متقاربة نوعا ما

51

33

39

و طبعا يكون الأفضل أن نربط حجم الخط بارتفاع الحقل

و هذا من كمال التوفيق

فكيف يتم ذلك؟

أما الاسم الواحد

هناك أسماء تطول عرضا و تخرج عن حافة الحقل

استخدمت لها

len

لتصغير الخط درجة حينما تزيد السلسلة الحرفية عن 27

رابط هذا التعليق
شارك

السلام عليكم

مشاركة بسيطة لعلها تفيد بشىء 

4 ساعات مضت, عبد الفتاح كيرة said:

ثم غيرت ارتفاعات بقية الحقول كم يلى


		Me.s1.Height = Me.StuName.Height
       Me.s2.Height = Me.StuName.Height
       Me.s3.Height = Me.StuName.Height
       Me.s4.Height = Me.StuName.Height
       Me.s5.Height = Me.StuName.Height
       Me.s6.Height = Me.StuName.Height
       Me.s7.Height = Me.StuName.Height
       Me.s8.Height = Me.StuName.Height

و جاءت النتيجة مرضية

 

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

بمعنى: 

لو أضفنا تخطيط لكل عناصر التحكم بداية من StuName الى s8 

فضبط أبعاد StuName فقط سيغنينى عن اضافة أكواد اضافية 

 

  • Like 1
رابط هذا التعليق
شارك

8 دقائق مضت, عبد الفتاح كيرة said:

ما فائدة هذه الجزئية؟

 

كانت حتى تركز على ارتفاع القسم فقط ، وبعدها تستطيع انت ترجع للحقول وتعطيها الحجم الصحيح:smile:

 

38 دقائق مضت, عبد الفتاح كيرة said:

و طبعا يكون الأفضل أن نربط حجم الخط بارتفاع الحقل

و هذا من كمال التوفيق

فكيف يتم ذلك؟

 

تفضل وانزل المرفق من هنا :

http://www.lebans.com/autosizefont.htm

 

بس حسب تجربتي مع الكود ، فتستطيع ان تضيف الى الحجم النهائي (في الكود) نقطة او نقطتين ، بالتجربة سترى قصدي ،

ولا داعي لـ len:smile:

 

جعفر

  • Like 2
رابط هذا التعليق
شارك

7 دقائق مضت, jjafferr said:

كانت حتى تركز على ارتفاع القسم فقط ، وبعدها تستطيع انت ترجع للحقول وتعطيها الحجم الصحيح

بدون هذه الجزئية يحدث خلل

عند اختيار الفصل ذى العدد الأقل يزداد ارتفاع الحقل

ثم بعد ذلك

عند اختيار الفصل ذى  العدد الأكبر

يصغر ارتفاع الحقل

لكن تبقى الفراغات بين الحقول

فأبقيت حجم الحقل رفيعا كما هو

شاهد الصورة

Captufffre.PNG.b12a6ece12301efdef9dd800d4bdf4d9.PNG

تم تعديل بواسطه عبد الفتاح كيرة
رابط هذا التعليق
شارك

اولا ، الصق الحقول بالقسم العلوي من قسم Detail ،

ثانيا ، اذا كنت تستخدم خاصية الاكسس 2010 في تجميع الحقول ، فتأكد ان تجعل المسافات حول الحقول = صفر ،

ثالثا ، اجعل ارتفاع الحقول نفس ارتفاع قسم Detail:smile:

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

1 دقيقه مضت, jjafferr said:

ثالثا ، اجعل ارتفاع الحقول نفس ارتفاع قسم Detail

مع هذه تحدث مشكلة الفراغات

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

لا تظهر المشكلة

لكن

لا أدرى ما تفسير ذلك

 

رابط هذا التعليق
شارك

قصدي تعديل اطوالها في الكود ، في نفس المكان الذي تغير فيه ارتفاع القسم

على العموم اذا اردت ان انظر في هذه الحيثية ، فالرجاء ارفاق التقرير من برنامجك:smile:

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

يشرفنى ذلك

هذه صورة من الملف

التقرير الوحيد فى الملف

الصف = 1   للعدد الأكبر

الصف = 3 للعدد الأصغر

و الفصل من 1 إلى 4

وفقكم الله

SH-16-17Ssss.rar

رابط هذا التعليق
شارك

السلام عليكم:smile:

 

اللي عملته هو:

1. يطبع التقرير صفحة واحدة بغض النظر عن عدد السجلات ،

2. التحكم في حجم الخط ، وتجعله في حجم مربع النص :smile:

 

1- بسبب ان اعدادات طابعتي تختلف عن طابعتك ، وطابعة المستخدم الاخير ، فجعلت الكود يحسب كل ارتفاعات الطابعة واقسام التقرير تلقائيا:

    hSum = Me.Section(1).Height + Me.Section(2).Height + Me.Section(3).Height + Me.Section(4).Height
    pSum = Me.Printer.TopMargin + Me.Printer.BottomMargin
    extra = 576 * 2.5              'to tighten the space
    h_p_t = hSum + pSum + extra    'in twips
    
    pPaper = 29.7    'Me.Printer.PaperSize   A4
    pPaper_t = pPaper * 576

    hDetail = (pPaper_t - h_p_t)
    
'Me.StuName.Height = 23.2 * 576 / Me.mycount
    Me.StuName.Height = hDetail / Me.mycount

 

اذا تلاحظ المتغير (والذي يساوي 2.5 سم ، والرقم هذا اتى بعد عدة محاولات)

extra = 576 * 2.5              'to tighten the space

 

وذلك حتى يرفع التقرير ويصبح صفحة واحدة بغض النظر عن عدد السجلات:smile:

 

2- من الرابط http://www.lebans.com/autosizefont.htm ، اضفت الوحدة النمطية modTextHeightWidth ، والتي تتحكم في حجم الخط ، وتجعله في حجم مربع النص ،

وبما ان البيانات كان بالانجليزي ، فكل شيء كان تمام ،

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

.FontSize = .FontSize - 1

فقد تضطر ان تغير الرقم 1 الى رقم آخر ، ولكن بالتجربة ستتوصل فيما اذا كان يجب ان تقوم بالتغيير اصلا او لا:smile:

 

جعفر

625.SH-16-17Ssss.accdb.zip

  • Like 3
رابط هذا التعليق
شارك

عليكم السلام و رحمة الله

وفقك الله و سدد خطاك

كنوز من الأكواد

جارى التجربة و الفحص

إلى لقاء قريب

تم تعديل بواسطه عبد الفتاح كيرة
رابط هذا التعليق
شارك

ملف ديناميكى من الطراز الأول

لضبط أجزاء التقرير

و تغيير حجم الحقول حسب عدد السجلات

ملف مطلوب جدا

ولا أدرى لماذا لا يكون خيارا طبيعيا فى أكسيس

كما فى الإكسيل " الضبط إلى صفحة واحدة"

كثيرا ما أهدرنا الأوراق

بسبب طباعة التقرير فى صفحتين بسبب سطر واحد أو سطرين

وفقكم الله أستاذ جعفر و سدد خطاك

وجزاك عنا خيرا

رابط هذا التعليق
شارك

هلا والله ، وحياك الله:smile:

والوحدة النمطية modTextHeightWidth  تعمل عمل آخر كذلك ،

لذلك اشجعك بإنزال المرفق والذي به نموذجين ، نموذج لكل لتصغير الخط ، ونموذج لتصغير/تكبير حجم الحقل ليتناسب مع حجم الخط (يعني عكس عمل الخط):smile:

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

في الواقع ما كنت اريد اكبّر البرنامج ، ولا اعطيه وقت اكثر:wink2:

وإلا فيمكن عن طريق الكود معرفة حجم الورقه ، وفيما اذا كانت افقية او عمودية ، وفيتم الحساب تلقائيا ،

ولا ادخال اسماء الحقول لإعطائها ارتفاعها الجديد ، ولا حجم الخط ، انما يمكن الكود يأخذ كل ذلك في الاعتبار:smile:

 

يعني لبكرة الصبح ما كنا نخلص:biggrin:

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information